Fix most tests

pull/145/head
Alinson S. Xavier 9 years ago
parent 6ba6d7c8c1
commit e899a70eb0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

@ -19,41 +19,23 @@
package org.isoron.uhabits.espresso;
import android.support.test.espresso.NoMatchingViewException;
import android.support.test.espresso.contrib.RecyclerViewActions;
import android.support.test.espresso.*;
import android.support.test.espresso.contrib.*;
import org.hamcrest.*;
import org.isoron.uhabits.R;
import org.isoron.uhabits.models.sqlite.records.HabitRecord;
import org.isoron.uhabits.models.*;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
import java.util.*;
import static android.support.test.espresso.Espresso.onData;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.Espresso.*;
import static android.support.test.espresso.Espresso.pressBack;
import static android.support.test.espresso.action.ViewActions.click;
import static android.support.test.espresso.action.ViewActions.longClick;
import static android.support.test.espresso.action.ViewActions.replaceText;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.matcher.RootMatchers.isPlatformPopup;
import static android.support.test.espresso.matcher.ViewMatchers.Visibility.VISIBLE;
import static android.support.test.espresso.matcher.ViewMatchers.hasDescendant;
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.withClassName;
import static android.support.test.espresso.matcher.ViewMatchers.withContentDescription;
import static android.support.test.espresso.matcher.ViewMatchers.withEffectiveVisibility;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
import static android.support.test.espresso.matcher.ViewMatchers.withParent;
import static android.support.test.espresso.matcher.ViewMatchers.withText;
import static org.hamcrest.Matchers.allOf;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.instanceOf;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.not;
import static org.hamcrest.Matchers.startsWith;
import static android.support.test.espresso.action.ViewActions.*;
import static android.support.test.espresso.assertion.ViewAssertions.*;
import static android.support.test.espresso.matcher.RootMatchers.*;
import static android.support.test.espresso.matcher.ViewMatchers.Visibility.*;
import static android.support.test.espresso.matcher.ViewMatchers.*;
import static org.hamcrest.Matchers.*;
public class MainActivityActions
{
@ -69,102 +51,93 @@ public class MainActivityActions
String num = "4";
String den = "8";
onView(withId(R.id.action_add))
.perform(click());
onView(withId(R.id.action_add)).perform(click());
typeHabitData(name, description, num, den);
if(openDialogs)
if (openDialogs)
{
onView(withId(R.id.buttonPickColor))
.perform(click());
onView(withId(R.id.buttonPickColor)).perform(click());
pressBack();
onView(withId(R.id.tvReminderTime))
.perform(click());
onView(withText("Done"))
.perform(click());
onView(withId(R.id.tvReminderDays))
.perform(click());
onView(withText("OK"))
.perform(click());
onView(withId(R.id.tvReminderTime)).perform(click());
onView(withText("Done")).perform(click());
onView(withId(R.id.tvReminderDays)).perform(click());
onView(withText("OK")).perform(click());
}
onView(withId(R.id.buttonSave))
.perform(click());
onView(withId(R.id.buttonSave)).perform(click());
onData(
Matchers.allOf(is(instanceOf(HabitRecord.class)), HabitMatchers.withName(name)))
.onChildView(withId(R.id.label));
onData(Matchers.allOf(is(instanceOf(Habit.class)),
HabitMatchers.withName(name))).onChildView(withId(R.id.label));
return name;
}
public static void typeHabitData(String name, String description, String num, String den)
public static void assertHabitExists(String name)
{
onView(withId(R.id.tvName))
.perform(replaceText(name));
onView(withId(R.id.tvDescription))
.perform(replaceText(description));
try
{
onView(allOf(withId(R.id.sFrequency), withEffectiveVisibility(VISIBLE)))
.perform(click());
onData(allOf(instanceOf(String.class), startsWith("Custom")))
.inRoot(isPlatformPopup())
.perform(click());
}
catch(NoMatchingViewException e)
{
// ignored
}
List<String> names = new LinkedList<>();
names.add(name);
assertHabitsExist(names);
}
onView(withId(R.id.tvFreqNum))
.perform(replaceText(num));
onView(withId(R.id.tvFreqDen))
.perform(replaceText(den));
public static void assertHabitsDontExist(List<String> names)
{
for (String name : names)
onView(withId(R.id.listView)).check(matches(Matchers.not(
HabitMatchers.containsHabit(HabitMatchers.withName(name)))));
}
public static void selectHabit(String name)
public static void assertHabitsExist(List<String> names)
{
selectHabits(Collections.singletonList(name));
for (String name : names)
onData(Matchers.allOf(is(instanceOf(Habit.class)),
HabitMatchers.withName(name))).check(matches(isDisplayed()));
}
public static void selectHabits(List<String> names)
private static void clickHiddenMenuItem(int stringId)
{
boolean first = true;
for(String name : names)
try
{
onData(
Matchers.allOf(is(instanceOf(HabitRecord.class)), HabitMatchers.withName(name)))
.onChildView(withId(R.id.label))
.perform(first ? longClick() : click());
first = false;
// Try the ActionMode overflow menu first
onView(allOf(withContentDescription("More options"), withParent(
withParent(withClassName(containsString("Action")))))).perform(
click());
}
catch (Exception e1)
{
// Try the toolbar overflow menu
onView(allOf(withContentDescription("More options"), withParent(
withParent(withClassName(containsString("Toolbar")))))).perform(
click());
}
}
public static void assertHabitsDontExist(List<String> names)
{
for(String name : names)
onView(withId(R.id.listView))
.check(matches(Matchers.not(
HabitMatchers.containsHabit(HabitMatchers.withName(name)))));
onView(withText(stringId)).perform(click());
}
public static void assertHabitExists(String name)
public static void clickMenuItem(int stringId)
{
List<String> names = new LinkedList<>();
names.add(name);
assertHabitsExist(names);
try
{
onView(withText(stringId)).perform(click());
}
catch (Exception e1)
{
try
{
onView(withContentDescription(stringId)).perform(click());
}
catch (Exception e2)
{
clickHiddenMenuItem(stringId);
}
}
}
public static void assertHabitsExist(List<String> names)
public static void clickSettingsItem(String text)
{
for(String name : names)
onData(
Matchers.allOf(is(instanceOf(HabitRecord.class)), HabitMatchers.withName(name)))
.check(matches(isDisplayed()));
onView(withClassName(containsString("RecyclerView"))).perform(
RecyclerViewActions.actionOnItem(
hasDescendant(withText(containsString(text))), click()));
}
public static void deleteHabit(String name)
@ -176,53 +149,51 @@ public class MainActivityActions
{
selectHabits(names);
clickMenuItem(R.string.delete);
onView(withText("OK"))
.perform(click());
onView(withText("OK")).perform(click());
assertHabitsDontExist(names);
}
public static void clickMenuItem(int stringId)
public static void selectHabit(String name)
{
try
{
onView(withText(stringId)).perform(click());
}
catch (Exception e1)
selectHabits(Collections.singletonList(name));
}
public static void selectHabits(List<String> names)
{
boolean first = true;
for (String name : names)
{
try
{
onView(withContentDescription(stringId)).perform(click());
}
catch(Exception e2)
{
clickHiddenMenuItem(stringId);
}
onData(Matchers.allOf(is(instanceOf(Habit.class)),
HabitMatchers.withName(name)))
.onChildView(withId(R.id.label))
.perform(first ? longClick() : click());
first = false;
}
}
private static void clickHiddenMenuItem(int stringId)
public static void typeHabitData(String name,
String description,
String num,
String den)
{
onView(withId(R.id.tvName)).perform(replaceText(name));
onView(withId(R.id.tvDescription)).perform(replaceText(description));
try
{
// Try the ActionMode overflow menu first
onView(allOf(withContentDescription("More options"), withParent(withParent(
withClassName(containsString("Action")))))).perform(click());
onView(allOf(withId(R.id.sFrequency),
withEffectiveVisibility(VISIBLE))).perform(click());
onData(allOf(instanceOf(String.class), startsWith("Custom")))
.inRoot(isPlatformPopup())
.perform(click());
}
catch (Exception e1)
catch (NoMatchingViewException e)
{
// Try the toolbar overflow menu
onView(allOf(withContentDescription("More options"), withParent(withParent(
withClassName(containsString("Toolbar")))))).perform(click());
// ignored
}
onView(withText(stringId)).perform(click());
}
public static void clickSettingsItem(String text)
{
onView(withClassName(containsString("RecyclerView")))
.perform(RecyclerViewActions.actionOnItem(
hasDescendant(withText(containsString(text))),
click()));
onView(withId(R.id.tvFreqNum)).perform(replaceText(num));
onView(withId(R.id.tvFreqDen)).perform(replaceText(den));
}
}

@ -30,7 +30,7 @@ import android.test.suitebuilder.annotation.*;
import org.hamcrest.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.R;
import org.isoron.uhabits.models.sqlite.records.*;
import org.isoron.uhabits.models.*;
import org.isoron.uhabits.utils.*;
import org.junit.*;
import org.junit.runner.*;
@ -121,14 +121,14 @@ public class MainTest
{
String name = addHabit(true);
onData(Matchers.allOf(is(instanceOf(HabitRecord.class)),
onData(Matchers.allOf(is(instanceOf(Habit.class)),
HabitMatchers.withName(name)))
.onChildView(withId(R.id.checkmarkPanel))
.perform(toggleAllCheckmarks());
Thread.sleep(1200);
onData(Matchers.allOf(is(instanceOf(HabitRecord.class)),
onData(Matchers.allOf(is(instanceOf(Habit.class)),
HabitMatchers.withName(name)))
.onChildView(withId(R.id.label))
.perform(click());
@ -193,7 +193,7 @@ public class MainTest
{
String name = addHabit();
onData(Matchers.allOf(is(instanceOf(HabitRecord.class)),
onData(Matchers.allOf(is(instanceOf(Habit.class)),
HabitMatchers.withName(name)))
.onChildView(withId(R.id.label))
.perform(longClick());
@ -224,7 +224,7 @@ public class MainTest
{
String name = addHabit();
onData(Matchers.allOf(is(instanceOf(HabitRecord.class)),
onData(Matchers.allOf(is(instanceOf(Habit.class)),
HabitMatchers.withName(name)))
.onChildView(withId(R.id.label))
.perform(click());

@ -17,25 +17,26 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.uhabits.ui.habits.show.views;
package org.isoron.uhabits.ui.common.views;
import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.SmallTest;
import android.support.test.runner.*;
import android.test.suitebuilder.annotation.*;
import org.apache.commons.lang3.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.Habit;
import org.isoron.uhabits.ui.common.views.*;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.isoron.uhabits.models.*;
import org.isoron.uhabits.utils.*;
import org.junit.*;
import org.junit.runner.*;
@RunWith(AndroidJUnit4.class)
@SmallTest
@MediumTest
public class FrequencyChartTest extends BaseViewTest
{
public static final String BASE_PATH = "common/FrequencyChart/";
private FrequencyChart view;
@Override
@Before
public void setUp()
{
@ -45,16 +46,15 @@ public class FrequencyChartTest extends BaseViewTest
Habit habit = fixtures.createLongHabit();
view = new FrequencyChart(targetContext);
throw new NotImplementedException("");
// view.setHabit(habit);
// refreshData(view);
// measureView(dpToPixels(300), dpToPixels(100), view);
view.setFrequency(habit.getRepetitions().getWeekdayFrequency());
view.setColor(ColorUtils.getAndroidTestColor(habit.getColor()));
measureView(dpToPixels(300), dpToPixels(100), view);
}
@Test
public void testRender() throws Throwable
{
assertRenders(view, "HabitFrequencyView/render.png");
assertRenders(view, BASE_PATH + "render.png");
}
@Test
@ -63,20 +63,20 @@ public class FrequencyChartTest extends BaseViewTest
view.onScroll(null, null, -dpToPixels(150), 0);
view.invalidate();
assertRenders(view, "HabitFrequencyView/renderDataOffset.png");
assertRenders(view, BASE_PATH + "renderDataOffset.png");
}
@Test
public void testRender_withDifferentSize() throws Throwable
{
measureView(dpToPixels(200), dpToPixels(200), view);
assertRenders(view, "HabitFrequencyView/renderDifferentSize.png");
assertRenders(view, BASE_PATH + "renderDifferentSize.png");
}
@Test
public void testRender_withTransparentBackground() throws Throwable
{
view.setIsBackgroundTransparent(true);
assertRenders(view, "HabitFrequencyView/renderTransparent.png");
assertRenders(view, BASE_PATH + "renderTransparent.png");
}
}

@ -0,0 +1,119 @@
/*
* Copyright (C) 2016 Álinson Santos Xavier <isoron@gmail.com>
*
* This file is part of Loop Habit Tracker.
*
* Loop Habit Tracker is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* Loop Habit Tracker is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.uhabits.ui.common.views;
import android.support.test.runner.*;
import android.test.suitebuilder.annotation.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.*;
import org.isoron.uhabits.utils.*;
import org.junit.*;
import org.junit.runner.*;
@RunWith(AndroidJUnit4.class)
@MediumTest
public class HistoryChartTest extends BaseViewTest
{
private static final String BASE_PATH = "common/HistoryChart/";
private HistoryChart chart;
@Override
@Before
public void setUp()
{
super.setUp();
fixtures.purgeHabits(habitList);
Habit habit = fixtures.createLongHabit();
chart = new HistoryChart(targetContext);
chart.setCheckmarks(habit.getCheckmarks().getAllValues());
chart.setColor(ColorUtils.getAndroidTestColor(habit.getColor()));
measureView(dpToPixels(400), dpToPixels(200), chart);
}
// @Test
// public void tapDate_atInvalidLocations() throws Throwable
// {
// int expectedCheckmarkValues[] = habit.getCheckmarks().getAllValues();
//
// chart.setIsEditable(true);
// tap(chart, 118, 13); // header
// tap(chart, 336, 60); // tomorrow's square
// tap(chart, 370, 60); // right axis
// waitForAsyncTasks();
//
// int actualCheckmarkValues[] = habit.getCheckmarks().getAllValues();
// assertThat(actualCheckmarkValues, equalTo(expectedCheckmarkValues));
// }
//
// @Test
// public void tapDate_withEditableView() throws Throwable
// {
// chart.setIsEditable(true);
// tap(chart, 340, 40); // today's square
// waitForAsyncTasks();
//
// long today = DateUtils.getStartOfToday();
// assertFalse(habit.getRepetitions().containsTimestamp(today));
// }
//
// @Test
// public void tapDate_withReadOnlyView() throws Throwable
// {
// chart.setIsEditable(false);
// tap(chart, 340, 40); // today's square
// waitForAsyncTasks();
//
// long today = DateUtils.getStartOfToday();
// assertTrue(habit.getRepetitions().containsTimestamp(today));
// }
@Test
public void testRender() throws Throwable
{
assertRenders(chart, BASE_PATH + "render.png");
}
@Test
public void testRender_withDataOffset() throws Throwable
{
chart.onScroll(null, null, -dpToPixels(150), 0);
chart.invalidate();
assertRenders(chart, BASE_PATH + "renderDataOffset.png");
}
@Test
public void testRender_withDifferentSize() throws Throwable
{
measureView(dpToPixels(200), dpToPixels(200), chart);
assertRenders(chart, BASE_PATH + "renderDifferentSize.png");
}
@Test
public void testRender_withTransparentBackground() throws Throwable
{
chart.setIsBackgroundTransparent(true);
assertRenders(chart, BASE_PATH + "renderTransparent.png");
}
}

@ -17,27 +17,28 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.uhabits.ui.habits.show.views;
package org.isoron.uhabits.ui.common.views;
import android.graphics.Color;
import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.SmallTest;
import android.graphics.*;
import android.support.test.runner.*;
import android.test.suitebuilder.annotation.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.ui.common.views.*;
import org.isoron.uhabits.utils.ColorUtils;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.isoron.uhabits.utils.*;
import org.junit.*;
import org.junit.runner.*;
import java.io.IOException;
import java.io.*;
@RunWith(AndroidJUnit4.class)
@SmallTest
@MediumTest
public class RingViewTest extends BaseViewTest
{
private static final String BASE_PATH = "common/RingView/";
private RingView view;
@Override
@Before
public void setUp()
{
@ -55,7 +56,7 @@ public class RingViewTest extends BaseViewTest
public void testRender_base() throws IOException
{
measureView(dpToPixels(100), dpToPixels(100), view);
assertRenders(view, "RingView/render.png");
assertRenders(view, BASE_PATH + "render.png");
}
@Test
@ -65,6 +66,6 @@ public class RingViewTest extends BaseViewTest
view.setColor(ColorUtils.getAndroidTestColor(5));
measureView(dpToPixels(200), dpToPixels(200), view);
assertRenders(view, "RingView/renderDifferentParams.png");
assertRenders(view, BASE_PATH + "renderDifferentParams.png");
}
}

@ -17,24 +17,24 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.uhabits.ui.habits.show.views;
package org.isoron.uhabits.ui.common.views;
import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.SmallTest;
import android.util.Log;
import android.support.test.runner.*;
import android.test.suitebuilder.annotation.*;
import android.util.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.Habit;
import org.isoron.uhabits.ui.common.views.*;
import org.isoron.uhabits.models.*;
import org.isoron.uhabits.utils.*;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.*;
import org.junit.runner.*;
@RunWith(AndroidJUnit4.class)
@SmallTest
@MediumTest
public class ScoreChartTest extends BaseViewTest
{
private static final String BASE_PATH = "common/ScoreChart/";
private Habit habit;
private ScoreChart view;
@ -60,7 +60,7 @@ public class ScoreChartTest extends BaseViewTest
{
Log.d("HabitScoreViewTest",
String.format("height=%d", dpToPixels(100)));
assertRenders(view, "HabitScoreView/render.png");
assertRenders(view, BASE_PATH + "render.png");
}
@Test
@ -69,14 +69,14 @@ public class ScoreChartTest extends BaseViewTest
view.onScroll(null, null, -dpToPixels(150), 0);
view.invalidate();
assertRenders(view, "HabitScoreView/renderDataOffset.png");
assertRenders(view, BASE_PATH + "renderDataOffset.png");
}
@Test
public void testRender_withDifferentSize() throws Throwable
{
measureView(dpToPixels(200), dpToPixels(200), view);
assertRenders(view, "HabitScoreView/renderDifferentSize.png");
assertRenders(view, BASE_PATH + "renderDifferentSize.png");
}
@Test
@ -86,14 +86,14 @@ public class ScoreChartTest extends BaseViewTest
view.setBucketSize(30);
view.invalidate();
assertRenders(view, "HabitScoreView/renderMonthly.png");
assertRenders(view, BASE_PATH + "renderMonthly.png");
}
@Test
public void testRender_withTransparentBackground() throws Throwable
{
view.setIsTransparencyEnabled(true);
assertRenders(view, "HabitScoreView/renderTransparent.png");
assertRenders(view, BASE_PATH + "renderTransparent.png");
}
@Test
@ -103,6 +103,6 @@ public class ScoreChartTest extends BaseViewTest
view.setBucketSize(365);
view.invalidate();
assertRenders(view, "HabitScoreView/renderYearly.png");
assertRenders(view, BASE_PATH + "renderYearly.png");
}
}

@ -17,23 +17,23 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.uhabits.ui.habits.show.views;
package org.isoron.uhabits.ui.common.views;
import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.SmallTest;
import android.support.test.runner.*;
import android.test.suitebuilder.annotation.*;
import org.apache.commons.lang3.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.Habit;
import org.isoron.uhabits.ui.common.views.*;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.isoron.uhabits.models.*;
import org.isoron.uhabits.utils.*;
import org.junit.*;
import org.junit.runner.*;
@RunWith(AndroidJUnit4.class)
@SmallTest
@MediumTest
public class StreakChartTest extends BaseViewTest
{
private static final String BASE_PATH = "common/StreakChart/";
private StreakChart view;
@Override
@ -46,32 +46,28 @@ public class StreakChartTest extends BaseViewTest
Habit habit = fixtures.createLongHabit();
view = new StreakChart(targetContext);
view.setColor(ColorUtils.getAndroidTestColor(habit.getColor()));
view.setStreaks(habit.getStreaks().getBest(5));
measureView(dpToPixels(300), dpToPixels(100), view);
throw new NotImplementedException("");
// view.setHabit(habit);
// refreshData(view);
}
@Test
public void testRender() throws Throwable
{
assertRenders(view, "HabitStreakView/render.png");
assertRenders(view, BASE_PATH + "render.png");
}
@Test
public void testRender_withSmallSize() throws Throwable
{
measureView(dpToPixels(100), dpToPixels(100), view);
// refreshData(view);
assertRenders(view, "HabitStreakView/renderSmallSize.png");
assertRenders(view, BASE_PATH + "renderSmallSize.png");
}
@Test
public void testRender_withTransparentBackground() throws Throwable
{
view.setIsBackgroundTransparent(true);
assertRenders(view, "HabitStreakView/renderTransparent.png");
assertRenders(view, BASE_PATH + "renderTransparent.png");
}
}

@ -20,7 +20,7 @@
package org.isoron.uhabits.ui.habits.list.views;
import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.SmallTest;
import android.test.suitebuilder.annotation.*;
import org.isoron.uhabits.models.Checkmark;
import org.isoron.uhabits.BaseViewTest;
@ -33,10 +33,10 @@ import java.io.IOException;
import java.util.concurrent.CountDownLatch;
@RunWith(AndroidJUnit4.class)
@SmallTest
@MediumTest
public class CheckmarkButtonViewTest extends BaseViewTest
{
public static final String PATH = "ui/habits/list/CheckmarkButtonView/";
public static final String PATH = "habits/list/CheckmarkButtonView/";
private CountDownLatch latch;

@ -20,7 +20,7 @@
package org.isoron.uhabits.ui.habits.list.views;
import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.SmallTest;
import android.test.suitebuilder.annotation.*;
import org.isoron.uhabits.models.Checkmark;
import org.isoron.uhabits.models.Habit;
@ -33,10 +33,10 @@ import org.junit.runner.RunWith;
import java.util.concurrent.CountDownLatch;
@RunWith(AndroidJUnit4.class)
@SmallTest
@MediumTest
public class CheckmarkPanelViewTest extends BaseViewTest
{
public static final String PATH = "ui/habits/list/CheckmarkPanelView/";
public static final String PATH = "habits/list/CheckmarkPanelView/";
private CountDownLatch latch;
private CheckmarkPanelView view;

@ -1,127 +0,0 @@
/*
* Copyright (C) 2016 Álinson Santos Xavier <isoron@gmail.com>
*
* This file is part of Loop Habit Tracker.
*
* Loop Habit Tracker is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* Loop Habit Tracker is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.uhabits.ui.habits.show.views;
import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.SmallTest;
import org.apache.commons.lang3.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.Habit;
import org.isoron.uhabits.ui.common.views.*;
import org.isoron.uhabits.utils.DateUtils;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
@RunWith(AndroidJUnit4.class)
@SmallTest
public class HabitHistoryChartTest extends BaseViewTest
{
private Habit habit;
private HistoryChart chart;
@Before
public void setUp()
{
super.setUp();
fixtures.purgeHabits(habitList);
habit = fixtures.createLongHabit();
chart = new HistoryChart(targetContext);
throw new NotImplementedException("");
// chart.setHabit(habit);
// measureView(dpToPixels(400), dpToPixels(200), chart);
// refreshData(chart);
}
@Test
public void tapDate_atInvalidLocations() throws Throwable
{
int expectedCheckmarkValues[] = habit.getCheckmarks().getAllValues();
chart.setIsEditable(true);
tap(chart, 118, 13); // header
tap(chart, 336, 60); // tomorrow's square
tap(chart, 370, 60); // right axis
waitForAsyncTasks();
int actualCheckmarkValues[] = habit.getCheckmarks().getAllValues();
assertThat(actualCheckmarkValues, equalTo(expectedCheckmarkValues));
}
@Test
public void tapDate_withEditableView() throws Throwable
{
chart.setIsEditable(true);
tap(chart, 340, 40); // today's square
waitForAsyncTasks();
long today = DateUtils.getStartOfToday();
assertFalse(habit.getRepetitions().containsTimestamp(today));
}
@Test
public void tapDate_withReadOnlyView() throws Throwable
{
chart.setIsEditable(false);
tap(chart, 340, 40); // today's square
waitForAsyncTasks();
long today = DateUtils.getStartOfToday();
assertTrue(habit.getRepetitions().containsTimestamp(today));
}
@Test
public void testRender() throws Throwable
{
assertRenders(chart, "HabitHistoryView/render.png");
}
@Test
public void testRender_withDataOffset() throws Throwable
{
chart.onScroll(null, null, -dpToPixels(150), 0);
chart.invalidate();
assertRenders(chart, "HabitHistoryView/renderDataOffset.png");
}
@Test
public void testRender_withDifferentSize() throws Throwable
{
measureView(dpToPixels(200), dpToPixels(200), chart);
assertRenders(chart, "HabitHistoryView/renderDifferentSize.png");
}
@Test
public void testRender_withTransparentBackground() throws Throwable
{
chart.setIsBackgroundTransparent(true);
assertRenders(chart, "HabitHistoryView/renderTransparent.png");
}
}

@ -20,7 +20,7 @@
package org.isoron.uhabits.widgets.views;
import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.SmallTest;
import android.test.suitebuilder.annotation.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.Habit;
@ -33,13 +33,16 @@ import org.junit.runner.RunWith;
import java.io.IOException;
@RunWith(AndroidJUnit4.class)
@SmallTest
@MediumTest
public class CheckmarkWidgetViewTest extends BaseViewTest
{
private static final String PATH = "widgets/CheckmarkWidgetView/";
private CheckmarkWidgetView view;
private Habit habit;
@Override
@Before
public void setUp()
{
@ -56,7 +59,7 @@ public class CheckmarkWidgetViewTest extends BaseViewTest
@Test
public void testRender_checked() throws IOException
{
assertRenders(view, "CheckmarkView/checked.png");
assertRenders(view, PATH + "checked.png");
}
@Test
@ -69,14 +72,14 @@ public class CheckmarkWidgetViewTest extends BaseViewTest
habit.getRepetitions().toggleTimestamp(today - 2 * day);
view.refreshData();
assertRenders(view, "CheckmarkView/implicitly_checked.png");
assertRenders(view, PATH + "implicitly_checked.png");
}
@Test
public void testRender_largeSize() throws IOException
{
measureView(dpToPixels(300), dpToPixels(300), view);
assertRenders(view, "CheckmarkView/large_size.png");
assertRenders(view, PATH + "large_size.png");
}
@Test
@ -85,6 +88,6 @@ public class CheckmarkWidgetViewTest extends BaseViewTest
habit.getRepetitions().toggleTimestamp(DateUtils.getStartOfToday());
view.refreshData();
assertRenders(view, "CheckmarkView/unchecked.png");
assertRenders(view, PATH + "unchecked.png");
}
}

@ -17,18 +17,14 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.uhabits.ui.habits.list.views;
import org.isoron.uhabits.BaseUnitTest;
import org.isoron.uhabits.models.Habit;
import org.isoron.uhabits.ui.habits.list.controllers.CheckmarkButtonController;
import org.junit.Before;
import org.junit.Test;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
package org.isoron.uhabits.ui.habits.list.controllers;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.*;
import org.isoron.uhabits.ui.habits.list.views.*;
import org.junit.*;
import static org.mockito.Mockito.*;
public class CheckmarkButtonControllerTest extends BaseUnitTest
{

@ -17,11 +17,11 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.uhabits.ui.habits.list.views;
package org.isoron.uhabits.ui.habits.list.controllers;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.*;
import org.isoron.uhabits.ui.habits.list.controllers.*;
import org.isoron.uhabits.ui.habits.list.views.*;
import org.isoron.uhabits.utils.*;
import org.junit.*;

@ -17,21 +17,17 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.isoron.uhabits.ui.habits.list.views;
package org.isoron.uhabits.ui.habits.list.controllers;
import org.isoron.uhabits.BaseUnitTest;
import org.isoron.uhabits.models.Habit;
import org.isoron.uhabits.ui.habits.list.controllers.HabitCardListController;
import org.isoron.uhabits.ui.habits.list.model.HabitCardListAdapter;
import org.junit.Before;
import org.junit.Test;
import org.isoron.uhabits.*;
import org.isoron.uhabits.models.*;
import org.isoron.uhabits.ui.habits.list.model.*;
import org.isoron.uhabits.ui.habits.list.views.*;
import org.junit.*;
import java.util.LinkedList;
import java.util.*;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.*;
public class HabitCardListControllerTest extends BaseUnitTest
{

@ -20,4 +20,4 @@
/**
* Contains views for ListHabitsActivity
*/
package org.isoron.uhabits.ui.habits.list.views;
package org.isoron.uhabits.ui.habits.list.controllers;
Loading…
Cancel
Save