mirror of
https://github.com/MinimalBible/MinimalBible-Legacy
synced 2024-11-14 20:18:27 -05:00
Unit testing now working
Also demo test case for async testing.
This commit is contained in:
parent
bba77bb45a
commit
2c494edadc
@ -39,6 +39,10 @@ dependencies {
|
|||||||
|
|
||||||
// Handled by appcompat
|
// Handled by appcompat
|
||||||
// compile 'com.google.android:support-v4:r7'
|
// compile 'com.google.android:support-v4:r7'
|
||||||
|
|
||||||
|
// And our unit testing needs some specific stuff (and specific stuff included again)
|
||||||
|
androidTestCompile 'junit:junit:4.11+'
|
||||||
|
androidTestProvided 'com.squareup.dagger:dagger-compiler:1.2.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
@ -71,6 +75,7 @@ android {
|
|||||||
|
|
||||||
packagingOptions {
|
packagingOptions {
|
||||||
exclude 'META-INF/LICENSE.txt'
|
exclude 'META-INF/LICENSE.txt'
|
||||||
|
exclude 'LICENSE.txt'
|
||||||
exclude 'META-INF/NOTICE.txt'
|
exclude 'META-INF/NOTICE.txt'
|
||||||
exclude 'META-INF/DEPENDENCIES'
|
exclude 'META-INF/DEPENDENCIES'
|
||||||
exclude 'META-INF/LICENSE'
|
exclude 'META-INF/LICENSE'
|
||||||
|
@ -60,4 +60,6 @@ public class MinimalBible extends Application {
|
|||||||
public void inject(Object o) {
|
public void inject(Object o) {
|
||||||
graph.inject(o);
|
graph.inject(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ObjectGraph getObjGraph() { return graph; }
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package org.bspeice.minimalbible.activities.downloader;
|
package org.bspeice.minimalbible.activities.downloader;
|
||||||
|
|
||||||
import android.util.Log;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageButton;
|
import android.widget.ImageButton;
|
||||||
import android.widget.RelativeLayout;
|
import android.widget.RelativeLayout;
|
||||||
@ -55,14 +54,20 @@ public class BookItemHolder {
|
|||||||
|
|
||||||
@OnClick(R.id.download_ibtn_download)
|
@OnClick(R.id.download_ibtn_download)
|
||||||
public void onDownloadItem(View v) {
|
public void onDownloadItem(View v) {
|
||||||
Log.d("BookListAdapter", v.toString());
|
downloadManager.getDownloadBus().register(this);
|
||||||
displayProgress(0); // Can assume 0 since the download is now starting
|
downloadManager.getDownloadBus()
|
||||||
// TODO: Write a unit test to make sure that this is called - displayProgress() assumes it
|
.post(new DownloadProgressEvent(DownloadProgressEvent.PROGRESS_BEGINNING, b));
|
||||||
|
|
||||||
// TODO: Kick off a service to actually do the downloading, rather than simulate
|
// TODO: Kick off a service to actually do the downloading, rather than simulate
|
||||||
downloadManager.getDownloadBus().post(new DownloadProgressEvent(47, b));
|
downloadManager.getDownloadBus().post(new DownloadProgressEvent(47, b));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onEventMainThread(DownloadProgressEvent event) {
|
||||||
|
if (event.getB().equals(this.b)) {
|
||||||
|
displayProgress((int) event.toCircular());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display the current progress of this download
|
* Display the current progress of this download
|
||||||
* @param progress The progress out of 360 (degrees of a circle)
|
* @param progress The progress out of 360 (degrees of a circle)
|
||||||
@ -70,7 +75,7 @@ public class BookItemHolder {
|
|||||||
private void displayProgress(int progress) {
|
private void displayProgress(int progress) {
|
||||||
|
|
||||||
|
|
||||||
if (progress <= 0) {
|
if (progress == DownloadProgressEvent.PROGRESS_BEGINNING) {
|
||||||
// Download starting
|
// Download starting
|
||||||
RelativeLayout.LayoutParams acronymParams =
|
RelativeLayout.LayoutParams acronymParams =
|
||||||
(RelativeLayout.LayoutParams)acronym.getLayoutParams();
|
(RelativeLayout.LayoutParams)acronym.getLayoutParams();
|
||||||
|
@ -3,12 +3,15 @@ package org.bspeice.minimalbible.activities.downloader.manager;
|
|||||||
import org.crosswire.jsword.book.Book;
|
import org.crosswire.jsword.book.Book;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by bspeice on 5/19/14.
|
* Used for notifying that a book's download progress is ongoing
|
||||||
*/
|
*/
|
||||||
public class DownloadProgressEvent {
|
public class DownloadProgressEvent {
|
||||||
private int progress;
|
private int progress;
|
||||||
private Book b;
|
private Book b;
|
||||||
|
|
||||||
|
public static final int PROGRESS_COMPLETE = 100;
|
||||||
|
public static final int PROGRESS_BEGINNING = 0;
|
||||||
|
|
||||||
public DownloadProgressEvent(int progress, Book b) {
|
public DownloadProgressEvent(int progress, Book b) {
|
||||||
this.progress = progress;
|
this.progress = progress;
|
||||||
this.b = b;
|
this.b = b;
|
||||||
|
@ -1,15 +1,72 @@
|
|||||||
package org.bspeice.minimalbible.test;
|
package org.bspeice.minimalbible.test;
|
||||||
|
|
||||||
import android.test.InstrumentationTestCase;
|
import android.test.InstrumentationTestCase;
|
||||||
import android.test.suitebuilder.annotation.SmallTest;
|
import android.util.Log;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
import org.bspeice.minimalbible.MinimalBible;
|
||||||
|
import org.bspeice.minimalbible.MinimalBibleModules;
|
||||||
|
import org.bspeice.minimalbible.R;
|
||||||
|
import org.bspeice.minimalbible.activities.downloader.BookItemHolder;
|
||||||
|
import org.bspeice.minimalbible.activities.downloader.manager.DownloadManager;
|
||||||
|
import org.bspeice.minimalbible.activities.downloader.manager.DownloadProgressEvent;
|
||||||
|
import org.crosswire.jsword.book.Book;
|
||||||
|
import org.crosswire.jsword.book.install.Installer;
|
||||||
|
|
||||||
|
import java.util.concurrent.CountDownLatch;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import dagger.Module;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for the Download activity
|
* Tests for the Download activity
|
||||||
*/
|
*/
|
||||||
public class DownloadActivityTest extends InstrumentationTestCase {
|
public class DownloadActivityTest extends InstrumentationTestCase {
|
||||||
|
|
||||||
|
@Module(addsTo = MinimalBibleModules.class,
|
||||||
|
injects = DownloadActivityTest.class)
|
||||||
|
public static class DownloadActivityTestModule {}
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
DownloadManager dm;
|
||||||
|
|
||||||
|
public void setUp() {
|
||||||
|
MinimalBible.getApplication().getObjGraph()
|
||||||
|
.plus(DownloadActivityTestModule.class).inject(this);
|
||||||
|
}
|
||||||
|
|
||||||
public void testBasicAssertion() {
|
public void testBasicAssertion() {
|
||||||
assertEquals(true, true);
|
assertEquals(true, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When we start a download, make sure a progress event of 0 is triggered.
|
||||||
|
*/
|
||||||
|
public void testInitialProgressEventOnDownload() throws InterruptedException {
|
||||||
|
final CountDownLatch signal = new CountDownLatch(1);
|
||||||
|
Installer i = (Installer) dm.getInstallers().values().toArray()[0];
|
||||||
|
Book testBook = i.getBooks().get(0);
|
||||||
|
View dummyView = LayoutInflater.from(MinimalBible.getApplication())
|
||||||
|
.inflate(R.layout.list_download_items, null);
|
||||||
|
BookItemHolder holder = new BookItemHolder(dummyView, testBook);
|
||||||
|
|
||||||
|
dm.getDownloadBus().register(new Object() {
|
||||||
|
public void onEvent(DownloadProgressEvent event) {
|
||||||
|
Log.d("testInitial", Integer.toString(event.getProgress()));
|
||||||
|
if (event.getProgress() == 0) {
|
||||||
|
signal.countDown();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
holder.onDownloadItem(dummyView);
|
||||||
|
|
||||||
|
signal.await(10, TimeUnit.SECONDS);
|
||||||
|
if (signal.getCount() != 0) {
|
||||||
|
fail("Event did not trigger!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user