--- /dev/null
+package jp.ac.titech.sharp4k.cuten.test;
+
+import java.net.ConnectException;
+import java.util.List;
+
+import jp.ac.titech.sharp4k.cuten.Achievement;
+import jp.ac.titech.sharp4k.cuten.DownloadActivity;
+import jp.ac.titech.sharp4k.cuten.HttpAPIClient;
+import jp.ac.titech.sharp4k.cuten.HttpResponseListener;
+import jp.ac.titech.sharp4k.cuten.Lecture;
+import jp.ac.titech.sharp4k.cuten.Token;
+import roboguice.RoboGuice;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Module;
+import com.google.inject.util.Modules;
+
+import android.app.Application;
+import android.content.Context;
+import android.test.ActivityInstrumentationTestCase2;
+import android.widget.ListAdapter;
+import android.widget.ListView;
+
+public class AbnormalDownloadActivityTest extends
+ ActivityInstrumentationTestCase2<DownloadActivity> {
+ static class AbnormalModule extends AbstractModule {
+ @Override
+ protected void configure() {
+ bind(HttpAPIClient.class).to(AbnormalHttpAPIClient.class);
+ }
+ }
+
+ static class AbnormalHttpAPIClient implements HttpAPIClient {
+ @Override
+ public void getLectures(HttpResponseListener listener) {
+ listener.preExec();
+ listener.onFailure(new ConnectException());
+ listener.postExec();
+ }
+
+ @Override
+ public void getLectures(List<Lecture> lectures,
+ HttpResponseListener listener) {
+ }
+
+ @Override
+ public void resetToken(String token, HttpResponseListener listener) {
+ }
+
+ @Override
+ public void getUsersProfile(String token, HttpResponseListener listener) {
+ }
+
+ @Override
+ public void putAchievement(String token, Achievement achievement,
+ HttpResponseListener listener) {
+ }
+ }
+
+ private DownloadActivity activity;
+ private String savedToken;
+
+ public AbnormalDownloadActivityTest() {
+ super(DownloadActivity.class);
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ Context ctx = getInstrumentation().getTargetContext();
+ Application app = (Application) ctx.getApplicationContext();
+ Module m = Modules.override(RoboGuice.newDefaultRoboModule(app)).with(
+ new AbnormalModule(), new DummyDBModule());
+ RoboGuice.setBaseApplicationInjector(app, RoboGuice.DEFAULT_STAGE, m);
+ savedToken = Token.load(ctx);
+ Token.save("dummytoken", ctx);
+ activity = getActivity();
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ Token.delete(activity);
+ if (savedToken != null) {
+ Token.save(savedToken, activity);
+ }
+ activity.deleteDatabase(DummyDBModule.DB_NAME);
+ RoboGuice.util.reset();
+ super.tearDown();
+ }
+
+ public void testShowLocalLecturesEvenIfNetworkFailed() throws Exception {
+ getInstrumentation().waitForIdleSync();
+ ListView lectureList = (ListView) activity
+ .findViewById(jp.ac.titech.sharp4k.cuten.R.id.lectureList);
+ assertNotNull(lectureList);
+ ListAdapter adapter = lectureList.getAdapter();
+ assertNotNull(adapter);
+ assertEquals(0, adapter.getCount());
+ }
+}