diff --git a/app/src/androidTest/java/org/isoron/uhabits/BaseTest.java b/app/src/androidTest/java/org/isoron/uhabits/BaseTest.java index 1eafd98c7..1fac47da5 100644 --- a/app/src/androidTest/java/org/isoron/uhabits/BaseTest.java +++ b/app/src/androidTest/java/org/isoron/uhabits/BaseTest.java @@ -27,7 +27,6 @@ import org.isoron.uhabits.helpers.DateHelper; import org.isoron.uhabits.tasks.BaseTask; import org.junit.Before; -import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; public class BaseTest @@ -55,6 +54,6 @@ public class BaseTest protected void waitForAsyncTasks() throws InterruptedException, TimeoutException { - BaseTask.waitForTasks(30, TimeUnit.SECONDS); + BaseTask.waitForTasks(30000); } } diff --git a/app/src/androidTest/java/org/isoron/uhabits/unit/views/CheckmarkViewTest.java b/app/src/androidTest/java/org/isoron/uhabits/unit/views/CheckmarkViewTest.java index 257ff92cc..03b05e7c3 100644 --- a/app/src/androidTest/java/org/isoron/uhabits/unit/views/CheckmarkViewTest.java +++ b/app/src/androidTest/java/org/isoron/uhabits/unit/views/CheckmarkViewTest.java @@ -47,6 +47,7 @@ public class CheckmarkViewTest extends ViewTest habit = HabitFixtures.createShortHabit(); view = new CheckmarkView(targetContext); view.setHabit(habit); + refreshData(view); measureView(dpToPixels(100), dpToPixels(200), view); } diff --git a/app/src/androidTest/java/org/isoron/uhabits/unit/views/HabitFrequencyViewTest.java b/app/src/androidTest/java/org/isoron/uhabits/unit/views/HabitFrequencyViewTest.java index 4eba3bebb..ce1651dc4 100644 --- a/app/src/androidTest/java/org/isoron/uhabits/unit/views/HabitFrequencyViewTest.java +++ b/app/src/androidTest/java/org/isoron/uhabits/unit/views/HabitFrequencyViewTest.java @@ -45,6 +45,7 @@ public class HabitFrequencyViewTest extends ViewTest view = new HabitFrequencyView(targetContext); view.setHabit(habit); + refreshData(view); measureView(dpToPixels(300), dpToPixels(100), view); } diff --git a/app/src/androidTest/java/org/isoron/uhabits/unit/views/HabitHistoryViewTest.java b/app/src/androidTest/java/org/isoron/uhabits/unit/views/HabitHistoryViewTest.java index e624148e2..787dfc11f 100644 --- a/app/src/androidTest/java/org/isoron/uhabits/unit/views/HabitHistoryViewTest.java +++ b/app/src/androidTest/java/org/isoron/uhabits/unit/views/HabitHistoryViewTest.java @@ -53,6 +53,7 @@ public class HabitHistoryViewTest extends ViewTest view = new HabitHistoryView(targetContext); view.setHabit(habit); + refreshData(view); measureView(dpToPixels(300), dpToPixels(100), view); } diff --git a/app/src/androidTest/java/org/isoron/uhabits/unit/views/HabitScoreViewTest.java b/app/src/androidTest/java/org/isoron/uhabits/unit/views/HabitScoreViewTest.java index a832733c4..8324e4929 100644 --- a/app/src/androidTest/java/org/isoron/uhabits/unit/views/HabitScoreViewTest.java +++ b/app/src/androidTest/java/org/isoron/uhabits/unit/views/HabitScoreViewTest.java @@ -48,6 +48,7 @@ public class HabitScoreViewTest extends ViewTest view = new HabitScoreView(targetContext); view.setHabit(habit); view.setBucketSize(7); + refreshData(view); measureView(dpToPixels(300), dpToPixels(100), view); } diff --git a/app/src/androidTest/java/org/isoron/uhabits/unit/views/HabitStreakViewTest.java b/app/src/androidTest/java/org/isoron/uhabits/unit/views/HabitStreakViewTest.java index 4dfb24206..b192d757b 100644 --- a/app/src/androidTest/java/org/isoron/uhabits/unit/views/HabitStreakViewTest.java +++ b/app/src/androidTest/java/org/isoron/uhabits/unit/views/HabitStreakViewTest.java @@ -21,7 +21,6 @@ package org.isoron.uhabits.unit.views; import android.support.test.runner.AndroidJUnit4; import android.test.suitebuilder.annotation.SmallTest; -import android.util.Log; import org.isoron.uhabits.models.Habit; import org.isoron.uhabits.unit.HabitFixtures; @@ -45,8 +44,10 @@ public class HabitStreakViewTest extends ViewTest Habit habit = HabitFixtures.createLongHabit(); view = new HabitStreakView(targetContext); - view.setHabit(habit); measureView(dpToPixels(300), dpToPixels(100), view); + + view.setHabit(habit); + refreshData(view); } @Test @@ -66,6 +67,8 @@ public class HabitStreakViewTest extends ViewTest public void render_withSmallSize() throws Throwable { measureView(dpToPixels(100), dpToPixels(100), view); + refreshData(view); + assertRenders(view, "HabitStreakView/renderSmallSize.png"); } } diff --git a/app/src/androidTest/java/org/isoron/uhabits/unit/views/ViewTest.java b/app/src/androidTest/java/org/isoron/uhabits/unit/views/ViewTest.java index 2cf950e3a..8fdedd60a 100644 --- a/app/src/androidTest/java/org/isoron/uhabits/unit/views/ViewTest.java +++ b/app/src/androidTest/java/org/isoron/uhabits/unit/views/ViewTest.java @@ -28,6 +28,8 @@ import android.view.View; import org.isoron.uhabits.BaseTest; import org.isoron.uhabits.helpers.UIHelper; +import org.isoron.uhabits.tasks.BaseTask; +import org.isoron.uhabits.views.HabitDataView; import java.io.File; import java.io.FileOutputStream; @@ -190,4 +192,26 @@ public class ViewTest extends BaseTest view.onSingleTapUp(e); e.recycle(); } + + protected void refreshData(final HabitDataView view) + { + new BaseTask() + { + @Override + protected Void doInBackground(Void... params) + { + view.refreshData(); + return null; + } + }.execute(); + + try + { + waitForAsyncTasks(); + } + catch (Exception e) + { + throw new RuntimeException("Time out"); + } + } } diff --git a/app/src/main/java/org/isoron/uhabits/tasks/BaseTask.java b/app/src/main/java/org/isoron/uhabits/tasks/BaseTask.java index e97896be9..d880775d4 100644 --- a/app/src/main/java/org/isoron/uhabits/tasks/BaseTask.java +++ b/app/src/main/java/org/isoron/uhabits/tasks/BaseTask.java @@ -21,13 +21,10 @@ package org.isoron.uhabits.tasks; import android.os.AsyncTask; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; public class BaseTask extends AsyncTask { - private static CountDownLatch latch; private static int activeTaskCount; @Override @@ -40,22 +37,27 @@ public class BaseTask extends AsyncTask protected void onPreExecute() { activeTaskCount++; - latch = new CountDownLatch(activeTaskCount); } @Override protected void onPostExecute(Void aVoid) { activeTaskCount--; - latch.countDown(); } - public static void waitForTasks(long timeout, TimeUnit unit) + public static void waitForTasks(long timeout) throws TimeoutException, InterruptedException { - if(activeTaskCount == 0) return; + int poolInterval = 100; - boolean successful = latch.await(timeout, unit); - if(!successful) throw new TimeoutException(); + while(timeout > 0) + { + if(activeTaskCount == 0) return; + + timeout -= poolInterval; + Thread.sleep(poolInterval); + } + + throw new TimeoutException(); } } diff --git a/app/src/main/java/org/isoron/uhabits/views/CheckmarkView.java b/app/src/main/java/org/isoron/uhabits/views/CheckmarkView.java index 29b3a7ac0..f63b43aed 100644 --- a/app/src/main/java/org/isoron/uhabits/views/CheckmarkView.java +++ b/app/src/main/java/org/isoron/uhabits/views/CheckmarkView.java @@ -36,7 +36,7 @@ import org.isoron.uhabits.R; import org.isoron.uhabits.helpers.ColorHelper; import org.isoron.uhabits.models.Habit; -public class CheckmarkView extends View +public class CheckmarkView extends View implements HabitDataView { private Paint pCard; private Paint pIcon; diff --git a/app/src/main/java/org/isoron/uhabits/views/HabitHistoryView.java b/app/src/main/java/org/isoron/uhabits/views/HabitHistoryView.java index 8d942bece..aa5c1926f 100644 --- a/app/src/main/java/org/isoron/uhabits/views/HabitHistoryView.java +++ b/app/src/main/java/org/isoron/uhabits/views/HabitHistoryView.java @@ -401,6 +401,7 @@ public class HabitHistoryView extends ScrollableDataView implements HabitDataVie protected void onPostExecute(Void aVoid) { invalidate(); + super.onPostExecute(null); } }.execute(); }