From 72f5ca5531226add908142c0ba7b61b2f5e02e2d Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Thu, 31 Mar 2016 06:03:16 -0400 Subject: [PATCH] Add tests for NumberView --- .../assets/views/NumberView/render.png | Bin 0 -> 5279 bytes .../NumberView/renderDifferentParams.png | Bin 0 -> 3951 bytes .../views/NumberView/renderLongLabel.png | Bin 0 -> 13081 bytes .../uhabits/unit/views/NumberViewTest.java | 77 ++++++++++++++++++ .../isoron/uhabits/helpers/DialogHelper.java | 24 +++--- .../org/isoron/uhabits/views/NumberView.java | 48 +++++++---- .../uhabits/views/RepetitionCountView.java | 12 +-- .../org/isoron/uhabits/views/RingView.java | 4 +- 8 files changed, 129 insertions(+), 36 deletions(-) create mode 100644 app/src/androidTest/assets/views/NumberView/render.png create mode 100644 app/src/androidTest/assets/views/NumberView/renderDifferentParams.png create mode 100644 app/src/androidTest/assets/views/NumberView/renderLongLabel.png create mode 100644 app/src/androidTest/java/org/isoron/uhabits/unit/views/NumberViewTest.java diff --git a/app/src/androidTest/assets/views/NumberView/render.png b/app/src/androidTest/assets/views/NumberView/render.png new file mode 100644 index 0000000000000000000000000000000000000000..52e65b579b1cbf64c2cd59553a06325b9a997128 GIT binary patch literal 5279 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 literal 0 HcmV?d00001 diff --git a/app/src/androidTest/assets/views/NumberView/renderDifferentParams.png b/app/src/androidTest/assets/views/NumberView/renderDifferentParams.png new file mode 100644 index 0000000000000000000000000000000000000000..4b4814f1a3113fab0adbececdfd3e0fa0d8aeb51 GIT binary patch literal 3951 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 literal 0 HcmV?d00001 diff --git a/app/src/androidTest/assets/views/NumberView/renderLongLabel.png b/app/src/androidTest/assets/views/NumberView/renderLongLabel.png new file mode 100644 index 0000000000000000000000000000000000000000..89fe4fd328f75478c1d8c7313c882f75a6e4a703 GIT binary patch literal 13081 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 + * + * 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 . + */ + +package org.isoron.uhabits.unit.views; + +import android.support.test.runner.AndroidJUnit4; +import android.test.suitebuilder.annotation.SmallTest; + +import org.isoron.uhabits.R; +import org.isoron.uhabits.helpers.ColorHelper; +import org.isoron.uhabits.views.NumberView; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.io.IOException; + +@RunWith(AndroidJUnit4.class) +@SmallTest +public class NumberViewTest extends ViewTest +{ + private NumberView view; + + @Before + public void setup() + { + super.setup(); + + view = new NumberView(targetContext); + view.setLabel("Hello world"); + view.setNumber(31); + view.setColor(ColorHelper.palette[0]); + measureView(dpToPixels(100), dpToPixels(100), view); + } + + @Test + public void render_base() throws IOException + { + assertRenders(view, "NumberView/render.png"); + } + + @Test + public void render_withLongLabel() throws IOException + { + view.setLabel("The quick brown fox jumps over the lazy fox"); + + measureView(dpToPixels(100), dpToPixels(100), view); + assertRenders(view, "NumberView/renderLongLabel.png"); + } + + @Test + public void render_withDifferentParams() throws IOException + { + view.setNumber(500); + view.setColor(ColorHelper.palette[5]); + view.setTextSize(targetContext.getResources().getDimension(R.dimen.tinyTextSize)); + + measureView(dpToPixels(200), dpToPixels(200), view); + assertRenders(view, "NumberView/renderDifferentParams.png"); + } +} diff --git a/app/src/main/java/org/isoron/uhabits/helpers/DialogHelper.java b/app/src/main/java/org/isoron/uhabits/helpers/DialogHelper.java index 4c36980d1..a3b660b7b 100644 --- a/app/src/main/java/org/isoron/uhabits/helpers/DialogHelper.java +++ b/app/src/main/java/org/isoron/uhabits/helpers/DialogHelper.java @@ -23,7 +23,6 @@ import android.content.Context; import android.content.SharedPreferences; import android.content.res.Resources; import android.graphics.Typeface; -import android.os.Vibrator; import android.preference.PreferenceManager; import android.util.AttributeSet; import android.util.DisplayMetrics; @@ -71,26 +70,31 @@ public abstract class DialogHelper return prefs.getInt("launch_count", 0); } - public static String getAttribute(Context context, AttributeSet attrs, String name) + public static String getAttribute(Context context, AttributeSet attrs, String name, + String defaultValue) { int resId = attrs.getAttributeResourceValue(ISORON_NAMESPACE, name, 0); - if (resId != 0) return context.getResources().getString(resId); - else return attrs.getAttributeValue(ISORON_NAMESPACE, name); + + String value = attrs.getAttributeValue(ISORON_NAMESPACE, name); + if(value != null) return value; + else return defaultValue; } - public static int getIntAttribute(Context context, AttributeSet attrs, String name) + public static int getIntAttribute(Context context, AttributeSet attrs, String name, + int defaultValue) { - String number = getAttribute(context, attrs, name); + String number = getAttribute(context, attrs, name, null); if(number != null) return Integer.parseInt(number); - else return 0; + else return defaultValue; } - public static float getFloatAttribute(Context context, AttributeSet attrs, String name) + public static float getFloatAttribute(Context context, AttributeSet attrs, String name, + float defaultValue) { - String number = getAttribute(context, attrs, name); + String number = getAttribute(context, attrs, name, null); if(number != null) return Float.parseFloat(number); - else return 0; + else return defaultValue; } public static float dpToPixels(Context context, float dp) diff --git a/app/src/main/java/org/isoron/uhabits/views/NumberView.java b/app/src/main/java/org/isoron/uhabits/views/NumberView.java index a73af4a76..f8f8695c4 100644 --- a/app/src/main/java/org/isoron/uhabits/views/NumberView.java +++ b/app/src/main/java/org/isoron/uhabits/views/NumberView.java @@ -31,13 +31,12 @@ import android.text.TextPaint; import android.util.AttributeSet; import android.view.View; +import org.isoron.uhabits.R; import org.isoron.uhabits.helpers.ColorHelper; import org.isoron.uhabits.helpers.DialogHelper; public class NumberView extends View { - - private int size; private int color; private int number; private float labelMarginTop; @@ -48,19 +47,30 @@ public class NumberView extends View private int width; private int height; + private float textSize; private float labelTextSize; private float numberTextSize; private StaticLayout numberLayout; + public NumberView(Context context) + { + super(context); + this.textSize = getResources().getDimension(R.dimen.regularTextSize); + init(); + } + public NumberView(Context context, AttributeSet attrs) { super(context, attrs); - this.label = DialogHelper.getAttribute(context, attrs, "label"); - this.number = DialogHelper.getIntAttribute(context, attrs, "number"); - this.textSize = DialogHelper.getFloatAttribute(context, attrs, "textSize"); - this.textSize = DialogHelper.spToPixels(getContext(), textSize); + this.textSize = getResources().getDimension(R.dimen.regularTextSize); + + this.label = DialogHelper.getAttribute(context, attrs, "label", "Number"); + this.number = DialogHelper.getIntAttribute(context, attrs, "number", 0); + this.textSize = DialogHelper.getFloatAttribute(context, attrs, "textSize", + getResources().getDimension(R.dimen.regularTextSize)); + this.color = ColorHelper.palette[7]; init(); } @@ -75,12 +85,21 @@ public class NumberView extends View public void setLabel(String label) { this.label = label; + requestLayout(); + postInvalidate(); } public void setNumber(int number) { this.number = number; - createNumberLayout(); + requestLayout(); + postInvalidate(); + } + + public void setTextSize(float textSize) + { + this.textSize = textSize; + requestLayout(); postInvalidate(); } @@ -106,7 +125,10 @@ public class NumberView extends View labelMarginTop = textSize * 0.35f; numberTextSize = textSize * 2.85f; - createNumberLayout(); + pText.setTextSize(numberTextSize); + numberLayout = new StaticLayout(Integer.toString(number), pText, width, + Layout.Alignment.ALIGN_NORMAL, 1.0f, 0f, false); + int numberWidth = numberLayout.getWidth(); int numberHeight = numberLayout.getHeight(); @@ -122,20 +144,10 @@ public class NumberView extends View setMeasuredDimension(width, height); } - private void createNumberLayout() - { - pText.setTextSize(numberTextSize); - numberLayout = new StaticLayout(Integer.toString(number), pText, width, - Layout.Alignment.ALIGN_NORMAL, 1.0f, 0f, false); - } - @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); - - pText.setColor(color); - pText.setTextSize(size * 0.4f); rect.set(0, 0, width, height); canvas.save(); diff --git a/app/src/main/java/org/isoron/uhabits/views/RepetitionCountView.java b/app/src/main/java/org/isoron/uhabits/views/RepetitionCountView.java index 8f617dba6..4797cea1b 100644 --- a/app/src/main/java/org/isoron/uhabits/views/RepetitionCountView.java +++ b/app/src/main/java/org/isoron/uhabits/views/RepetitionCountView.java @@ -22,6 +22,7 @@ package org.isoron.uhabits.views; import android.content.Context; import android.util.AttributeSet; +import org.isoron.uhabits.R; import org.isoron.uhabits.helpers.DateHelper; import org.isoron.uhabits.helpers.DialogHelper; import org.isoron.uhabits.models.Habit; @@ -37,13 +38,12 @@ public class RepetitionCountView extends NumberView implements HabitDataView public RepetitionCountView(Context context, AttributeSet attrs) { super(context, attrs); - this.interval = DialogHelper.getIntAttribute(context, attrs, "interval"); + this.interval = DialogHelper.getIntAttribute(context, attrs, "interval", 7); + int labelValue = DialogHelper.getIntAttribute(context, attrs, "labelValue", 7); + String labelFormat = DialogHelper.getAttribute(context, attrs, "labelFormat", + getResources().getString(R.string.last_x_days)); - int labelValue = DialogHelper.getIntAttribute(context, attrs, "labelValue"); - String labelFormat = DialogHelper.getAttribute(context, attrs, "labelFormat"); - - if(labelValue > 0) - setLabel(String.format(labelFormat, labelValue)); + setLabel(String.format(labelFormat, labelValue)); refreshData(); } diff --git a/app/src/main/java/org/isoron/uhabits/views/RingView.java b/app/src/main/java/org/isoron/uhabits/views/RingView.java index ce02ed5f1..fad31fa3b 100644 --- a/app/src/main/java/org/isoron/uhabits/views/RingView.java +++ b/app/src/main/java/org/isoron/uhabits/views/RingView.java @@ -63,8 +63,8 @@ public class RingView extends View { super(context, attrs); - this.label = DialogHelper.getAttribute(context, attrs, "label"); - this.maxDiameter = DialogHelper.getFloatAttribute(context, attrs, "maxDiameter"); + this.label = DialogHelper.getAttribute(context, attrs, "label", "Label"); + this.maxDiameter = DialogHelper.getFloatAttribute(context, attrs, "maxDiameter", 100); this.maxDiameter = DialogHelper.dpToPixels(context, maxDiameter); init(); }