From 2c62e1578a2a5ded8402ed924af44c50a5e9f99a Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Sat, 26 Mar 2016 19:25:50 -0400 Subject: [PATCH 1/9] Create base test class for custom views --- .gitignore | 1 + .../uhabits/unit/views/RingViewTest.java | 48 ++++++ .../isoron/uhabits/unit/views/ViewTest.java | 160 ++++++++++++++++++ .../org/isoron/uhabits/views/RingView.java | 29 +++- 4 files changed, 229 insertions(+), 9 deletions(-) create mode 100644 app/src/androidTest/java/org/isoron/uhabits/unit/views/RingViewTest.java create mode 100644 app/src/androidTest/java/org/isoron/uhabits/unit/views/ViewTest.java diff --git a/.gitignore b/.gitignore index c2db49228..b5365d8c1 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,4 @@ build/ *.iml art/ +*.actual.png diff --git a/app/src/androidTest/java/org/isoron/uhabits/unit/views/RingViewTest.java b/app/src/androidTest/java/org/isoron/uhabits/unit/views/RingViewTest.java new file mode 100644 index 000000000..c308fe596 --- /dev/null +++ b/app/src/androidTest/java/org/isoron/uhabits/unit/views/RingViewTest.java @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2016 Álinson Santos Xavier + * + * 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.helpers.ColorHelper; +import org.isoron.uhabits.views.RingView; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.io.IOException; + +@RunWith(AndroidJUnit4.class) +@SmallTest +public class RingViewTest extends ViewTest +{ + @Test + public void renderTest1() throws IOException + { + RingView view = new RingView(targetContext); + view.setLabel("Hello world"); + view.setPercentage(0.6f); + view.setColor(ColorHelper.palette[0]); + view.setMaxDiameter(dpToPixels(100)); + measureView(dpToPixels(100), dpToPixels(100), view); + + assertRenders(view, "Views/RingView/renderTest1.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 new file mode 100644 index 000000000..45344a560 --- /dev/null +++ b/app/src/androidTest/java/org/isoron/uhabits/unit/views/ViewTest.java @@ -0,0 +1,160 @@ +/* + * Copyright (C) 2016 Álinson Santos Xavier + * + * 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.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.support.test.InstrumentationRegistry; +import android.view.View; + +import org.isoron.uhabits.helpers.DialogHelper; +import org.junit.Before; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; + +import static junit.framework.Assert.fail; + +public class ViewTest +{ + protected static final int SIMILARITY_CUTOFF = 6000; + + protected Context testContext; + protected Context targetContext; + + @Before + public void setup() + { + targetContext = InstrumentationRegistry.getTargetContext(); + testContext = InstrumentationRegistry.getContext(); + } + + protected void measureView(int width, int height, View view) + { + int specWidth = View.MeasureSpec.makeMeasureSpec(width, View.MeasureSpec.EXACTLY); + int specHeight = View.MeasureSpec.makeMeasureSpec(height, View.MeasureSpec.EXACTLY); + + view.measure(specWidth, specHeight); + view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); + } + + protected void assertRenders(View view, String expectedImagePath) throws IOException + { + StringBuilder errorMessage = new StringBuilder(); + + view.setDrawingCacheEnabled(true); + view.buildDrawingCache(); + + Bitmap actualBitmap = view.getDrawingCache(); + Bitmap expectedBitmap = getBitmapFromAssets(expectedImagePath); + Bitmap scaledExpectedBitmap = Bitmap.createScaledBitmap(expectedBitmap, + actualBitmap.getWidth(), actualBitmap.getHeight(), false); + + boolean similarEnough = true; + long distance; + + if ((distance = compareHistograms(getHistogram(actualBitmap), getHistogram( + scaledExpectedBitmap))) > SIMILARITY_CUTOFF) + { + similarEnough = false; + errorMessage.append(String.format( + "Rendered image has wrong histogram (distance=%d). ", + distance)); + } + + if(!similarEnough) + { + String path = saveBitmap(expectedImagePath, actualBitmap); + errorMessage.append(String.format("Actual rendered image " + "saved to %s", path)); + fail(errorMessage.toString()); + } + + actualBitmap.recycle(); + expectedBitmap.recycle(); + scaledExpectedBitmap.recycle(); + } + + private Bitmap getBitmapFromAssets(String path) throws IOException + { + InputStream stream = testContext.getAssets().open(path); + return BitmapFactory.decodeStream(stream); + } + + private String saveBitmap(String filename, Bitmap bitmap) + throws IOException + { + String absolutePath = String.format("%s/Failed/%s", targetContext.getExternalCacheDir(), + filename.replaceAll("\\.png$", ".actual.png")); + new File(absolutePath).getParentFile().mkdirs(); + FileOutputStream out = new FileOutputStream(absolutePath); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); + + return absolutePath; + } + + private int[][] getHistogram(Bitmap bitmap) + { + int histogram[][] = new int[4][256]; + + for(int x = 0; x < bitmap.getWidth(); x++) + { + for(int y = 0; y < bitmap.getHeight(); y++) + { + int color = bitmap.getPixel(x, y); + int[] argb = new int[]{ + (color >> 24) & 0xff, //alpha + (color >> 16) & 0xff, //red + (color >> 8) & 0xff, //green + (color ) & 0xff //blue + }; + + histogram[0][argb[0]]++; + histogram[1][argb[1]]++; + histogram[2][argb[2]]++; + histogram[3][argb[3]]++; + } + } + + return histogram; + } + + private long compareHistograms(int[][] actualHistogram, int[][] expectedHistogram) + { + long distance = 0; + + for(int i = 0; i < 255; i ++) + { + distance += Math.abs(actualHistogram[0][i] - expectedHistogram[0][i]); + distance += Math.abs(actualHistogram[1][i] - expectedHistogram[1][i]); + distance += Math.abs(actualHistogram[2][i] - expectedHistogram[2][i]); + distance += Math.abs(actualHistogram[3][i] - expectedHistogram[3][i]); + } + + return distance; + } + + protected int dpToPixels(int dp) + { + return (int) DialogHelper.dpToPixels(targetContext, dp); + } +} 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 a8314a453..ce02ed5f1 100644 --- a/app/src/main/java/org/isoron/uhabits/views/RingView.java +++ b/app/src/main/java/org/isoron/uhabits/views/RingView.java @@ -29,11 +29,11 @@ import android.text.Layout; import android.text.StaticLayout; import android.text.TextPaint; import android.util.AttributeSet; +import android.util.Log; import android.view.View; -import org.isoron.uhabits.helpers.ColorHelper; -import org.isoron.uhabits.helpers.DialogHelper; import org.isoron.uhabits.R; +import org.isoron.uhabits.helpers.DialogHelper; public class RingView extends View { @@ -48,10 +48,16 @@ public class RingView extends View private int width; private int height; private float diameter; + private float maxDiameter; private float textSize; private int fadedTextColor; + public RingView(Context context) + { + super(context); + init(); + } public RingView(Context context, AttributeSet attrs) { @@ -59,25 +65,28 @@ public class RingView extends View this.label = DialogHelper.getAttribute(context, attrs, "label"); this.maxDiameter = DialogHelper.getFloatAttribute(context, attrs, "maxDiameter"); - this.maxDiameter = DialogHelper.dpToPixels(context, maxDiameter); - this.textSize = getResources().getDimension(R.dimen.smallTextSize); - this.color = ColorHelper.palette[7]; - this.percentage = 0.75f; init(); } public void setColor(int color) { this.color = color; - pRing.setColor(color); - postInvalidate(); + } + + public void setMaxDiameter(float maxDiameter) + { + this.maxDiameter = maxDiameter; + } + + public void setLabel(String label) + { + this.label = label; } public void setPercentage(float percentage) { this.percentage = percentage; - postInvalidate(); } private void init() @@ -88,6 +97,8 @@ public class RingView extends View pRing.setTextAlign(Paint.Align.CENTER); fadedTextColor = getResources().getColor(R.color.fadedTextColor); + textSize = getResources().getDimension(R.dimen.smallTextSize); + Log.d("RingView", String.format("textSize=%f", textSize)); rect = new RectF(); } From 55ed2585ea26ff06603b5bfcb601d3f3c08ba096 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Sat, 26 Mar 2016 19:46:33 -0400 Subject: [PATCH 2/9] Additional tests for RingView --- .../assets/Views/RingView/render.png | Bin 0 -> 10049 bytes .../Views/RingView/renderDifferentParams.png | Bin 0 -> 8769 bytes .../assets/Views/RingView/renderLongLabel.png | Bin 0 -> 17042 bytes .../uhabits/unit/views/RingViewTest.java | 38 ++++++++++++++++-- 4 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 app/src/androidTest/assets/Views/RingView/render.png create mode 100644 app/src/androidTest/assets/Views/RingView/renderDifferentParams.png create mode 100644 app/src/androidTest/assets/Views/RingView/renderLongLabel.png diff --git a/app/src/androidTest/assets/Views/RingView/render.png b/app/src/androidTest/assets/Views/RingView/render.png new file mode 100644 index 0000000000000000000000000000000000000000..c77355c7c49a74096691e3c42e50e34edb28e8d5 GIT binary patch literal 10049 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%0DjiUrQljh=*`j>8QD3>@ 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 literal 0 HcmV?d00001 diff --git a/app/src/androidTest/java/org/isoron/uhabits/unit/views/RingViewTest.java b/app/src/androidTest/java/org/isoron/uhabits/unit/views/RingViewTest.java index c308fe596..06f2ac901 100644 --- a/app/src/androidTest/java/org/isoron/uhabits/unit/views/RingViewTest.java +++ b/app/src/androidTest/java/org/isoron/uhabits/unit/views/RingViewTest.java @@ -24,6 +24,7 @@ import android.test.suitebuilder.annotation.SmallTest; import org.isoron.uhabits.helpers.ColorHelper; import org.isoron.uhabits.views.RingView; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -33,16 +34,45 @@ import java.io.IOException; @SmallTest public class RingViewTest extends ViewTest { - @Test - public void renderTest1() throws IOException + private RingView view; + + @Before + public void setup() { - RingView view = new RingView(targetContext); + super.setup(); + + view = new RingView(targetContext); view.setLabel("Hello world"); view.setPercentage(0.6f); view.setColor(ColorHelper.palette[0]); view.setMaxDiameter(dpToPixels(100)); + } + + @Test + public void render_base() throws IOException + { measureView(dpToPixels(100), dpToPixels(100), view); + assertRenders(view, "Views/RingView/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, "Views/RingView/renderLongLabel.png"); + } + + @Test + public void render_withDifferentParams() throws IOException + { + view.setLabel("Habit Strength"); + view.setPercentage(0.25f); + view.setMaxDiameter(dpToPixels(50)); + view.setColor(ColorHelper.palette[5]); - assertRenders(view, "Views/RingView/renderTest1.png"); + measureView(dpToPixels(200), dpToPixels(200), view); + assertRenders(view, "Views/RingView/renderDifferentParams.png"); } } From 51b7cfc8fac03374f00ddeffbf4cf9faf93609dc Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Sat, 26 Mar 2016 19:47:04 -0400 Subject: [PATCH 3/9] Remove useless asset --- app/src/androidTest/assets/icon.png | Bin 49120 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 app/src/androidTest/assets/icon.png diff --git a/app/src/androidTest/assets/icon.png b/app/src/androidTest/assets/icon.png deleted file mode 100644 index 7907954db759e36b4bacfb99e9c15b9266083b0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49120 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 Date: Sat, 26 Mar 2016 19:47:53 -0400 Subject: [PATCH 4/9] Add script to pull failed generated images from device --- app/src/androidTest/assets/pull_failed | 5 +++++ 1 file changed, 5 insertions(+) create mode 100755 app/src/androidTest/assets/pull_failed diff --git a/app/src/androidTest/assets/pull_failed b/app/src/androidTest/assets/pull_failed new file mode 100755 index 000000000..845b255de --- /dev/null +++ b/app/src/androidTest/assets/pull_failed @@ -0,0 +1,5 @@ +#!/bin/bash +P=/sdcard/Android/data/org.isoron.uhabits/cache/Failed/ + +adb pull $P +adb shell rm -rf $P From 285f79ed9568de0cecb7c3c111b898b246cd6f52 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Sat, 26 Mar 2016 20:11:17 -0400 Subject: [PATCH 5/9] Add tests for CheckmarkView --- .../assets/Views/CheckmarkView/checked.png | Bin 0 -> 7595 bytes .../CheckmarkView/implicitly_checked.png | Bin 0 -> 7650 bytes .../assets/Views/CheckmarkView/large_size.png | Bin 0 -> 24989 bytes .../assets/Views/CheckmarkView/unchecked.png | Bin 0 -> 7980 bytes .../uhabits/unit/views/CheckmarkViewTest.java | 87 ++++++++++++++++++ .../isoron/uhabits/views/CheckmarkView.java | 20 ++-- 6 files changed, 99 insertions(+), 8 deletions(-) create mode 100644 app/src/androidTest/assets/Views/CheckmarkView/checked.png create mode 100644 app/src/androidTest/assets/Views/CheckmarkView/implicitly_checked.png create mode 100644 app/src/androidTest/assets/Views/CheckmarkView/large_size.png create mode 100644 app/src/androidTest/assets/Views/CheckmarkView/unchecked.png create mode 100644 app/src/androidTest/java/org/isoron/uhabits/unit/views/CheckmarkViewTest.java diff --git a/app/src/androidTest/assets/Views/CheckmarkView/checked.png b/app/src/androidTest/assets/Views/CheckmarkView/checked.png new file mode 100644 index 0000000000000000000000000000000000000000..6f744b1fe525aa82f33be255153623ca6714d665 GIT binary patch literal 7595 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 B;eh}E literal 0 HcmV?d00001 diff --git a/app/src/androidTest/assets/Views/CheckmarkView/large_size.png b/app/src/androidTest/assets/Views/CheckmarkView/large_size.png new file mode 100644 index 0000000000000000000000000000000000000000..3aad412d59e4fe440bd30b1f95077277ee24d735 GIT binary patch literal 24989 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 literal 0 HcmV?d00001 diff --git a/app/src/androidTest/assets/Views/CheckmarkView/unchecked.png b/app/src/androidTest/assets/Views/CheckmarkView/unchecked.png new file mode 100644 index 0000000000000000000000000000000000000000..92dfa2efe6e213764c3b9d34e6b59cab4b684701 GIT binary patch literal 7980 zcmcI}c{G&a`}bpH$(}tsDN-nevL;*hkfmW1LiSx4TgWbweJx3{PPXg{*&9ptt&Dx_ z`#OI2^nKrR-uM0U{hi-)j%Ut{>%Q;nxz^9;dLneRR4B<<$RG%!e5k6Z3qCu*-!UmM zxX-PSN`j9IZVC_eNx_9AwG4+K4$MQv`}!|4)~0-o-g)58w?-yKqeWXT6B7_AF$ak; zRPyWcy=k+WNE-4g6~8_>U-u~4Ols*9V*zT#YFPV#&!O;niT>xy#&BB_@~;|-`eK?F zEGY6GQT-sLxFyB_g$w^oZ0N(LbuHGNoBq1xG; zV&W|&A9tkz`wb>i->tbv&`;POpS#x;>WN66-U_4|y&Ta1_EKHPd?ekv##Z~QqUw9B z>gq*a$P`YcaGXE`Q7(usg{(!eE=IMu#A(V5^p`O&?{Ar!of5@boRc=(gJIR9AF zcz;5>AQ};xM_eJBq_@vWcI5e~MB?^Fdqt>25C>d@Q$Y>OdJA{Ntfs~pogocBjlv|pgM&YFn*fU3-^zZ#3njgXc z{{j+`*xb$pJ`$}g>ASBmk|jk&MSpkDa!#AO85%?+B;<>~GNpKVcock&w&#cI>+91N z78bO$(cL4YJ+j#=5f2aFR#a33G9h06-GBcejOr5U1$%P)qT=G>i7JPQ_)ICUVITKb zkhtTd9;Lr6&WY_%MnwLLe9RODtQ?d1q}!-^q$R>#U)42q0y zs|zJ}6TyO(g_(kynwkP^ZEZ7*ZZ`VtEhpIx{PoW^|%{*Iz7EKW~PrD;23*`?lH zQHj;~16LMG4%6cmFBlDkp$MZM2qcapH_T%(|4W7}lxI5Y`E}ZKeS7(!(Y|y^W-pZi zaE}a0j-=$L;qZ$Hb}{4y_xGwrx+nr7^Uy0Uw@PALpblh6n;1x$~5K1e-oj)cJJQ3)2060#Ub0uUy0Z)*MDL+pH$d< z(73kaHGl7zB|>Tzs$Jk?j4Jip>6P#(K_oNjp$JTS?G$+8Ri{uK@v6N3r(5lb#>U3C z_it{LNTzIVIw#}aZeFDizu15%^%|*NjcJ{7f#l(Ec$n14VlO`poneWI3)V5TSXKHG z31so;(W993k>$!I=2k@@RIXbPy(szX^ki0KIQF45J;|5C!a~F1CmuhiuzMo^G}PDE zx5>@Tt$g_K;R8+FaLatpl`VZXO-)ThCSin$J{*p%GSw8$Gbbc#?eUuN8=;}28)_4`pPTmGh>4DhavLkKvP(-#V>v$_Y4Z2mp6fL5DxDzz=gOS2va)Ht_zOftch8j6 z;I){;FCbdmrm*|E_~VN<^?BEoU5q}0{XyHEYnF=pG%R3FE|I*{7Gs2bLrlc?jXB{A1?#3t& zD!NF9Mp8;QO7+d~Uc08;Oy~jyYFtbB^y$-UAM>d*28a6@{Bm*u+a2*&7_y!;DVcKo|zkmOBUg~?FJv%%5LE1Zj)~k3V3a|R@a)*hk zigd@?>-|$$2ax$MaYu_yzq-2%x8}|sRy)Il z_6Rz@Cj?L1A{pj=57uSO#aJlUGs0APY0=qoa=n?@UC#=l+bH|7ukhekuU<{nXzfTc zYoEo`De}Z09vuxOzk5e9XDZ0R+Q-Bo=aq*97pLsPKrS(eKukvlPC^f%+pEshmRjW&XpR*kb_ic1&*l!%b%5) zs5pUtdT0!QtKPEn?d<-(XKvx}UqZa~Q}_i0Y`>kX*R?1pD44kBOpi!18>*P!Vy39` zT)PJnMXaxy3m+dnY?97@MlOq5br2E~X8JU*+pt9!^4w;oc#W1jKi#bLz<$Zt%aGOh zS7nL~>`u44g@q+WX|3Dv1&6WyMrpn7-{_+~Li}bo`)n(JHuxSOQtsF#wZuzGQT;TI zXQm)-vCj6}x6snk$`f5&#NhQa>YtuocjhgL40aKtjcgIX2Zl6TMC*{tEx(x7r?;48 zkLD6M4NDQ4F1z@IY9(gujJ_;7cmMu$jQMNrx#m9(LMRhgn!Pms_Esp?m%P{ZB#_ZiisL zap2XQ%98Q*HvtCn*6u-v{fo~~U{nlfT7|Tm)+OyfXk_2Z}?5Rgj3^E=g|=<18a)e zJMp37L9SLQhOY#sMXLWJz4*W1&A|@b+q)Nz>&mUsLbMTz{wy({{C|X8-0<;{{pf`h zhy&?y>@-^TOdR?>GGf+njyq|Zh5MtkWJFuQwE`~Amw$o?k=-01$f(UxFXOcG2Q{;0 z&n&Eajo<5hBo9@1sIJ~k1ks1T*(#7%Q&)#OHl6L)@Wk`$76+5odqSZiQgsYd!^mT7f4c&W_AL(&ioOD+LDGq;t`dCj`pr{Uff~a z9c1hF2148hJ6v2aoOCvrjdLf52=Mx5yKTRVpx&vG|82WxES@Fq@FcQw-mzvriS?DL zx_UW_DiV3BX>aoAk;{1h-M6@wMc7^c)5C}2u`w~4U#m>q-FJJZ9#|YKS`-Q1NbY8s zYWW3vO7-aF9p1BGG|~2KlyDLY1+gF$^7^&FO~Hi3Lph8zV1x=R-U7e7BguJL4@ zT+~b)bZRzcW=S^a2^=mwzqn|Ix)avZ)ARoB-MbHyvd}|czkW4$b#;Af^(*7@>bl3o z4N+0IrLM#qbbMMFOB>5Il3k0if|8PTP%<7vT#0JAq9P(6dXhUkI#Qz7&#M3?StWvk z3#=mDkjGPkeb?=wr_?I5_yAyStmIvbuW1AHabf zgwJwbb>s0$;hXgI^lBz1CNw2AHPgOl!;@mqe1pO%@8y9!HoNZngK6J{QP=iZ_H-xQ zOLcYiEbu>L1fp>%UWMbb$>YbB6}h<<=!M?&892(ktw~KyP4Eaqvhz9zG zJaY9u(20wWcZoW}Y;A2_hx(?c5ndyvUT66L32;Df6B2yc%A+~uveqK+=jmpmDjM;@ z+||)x#D3|LOOy`(yEJLuIJLY7KV#WXRE>?t&arDwJ)mLa$!s`F*^VuVb#NY-RC|}JVlZ! zZ*ZP&!BBAyfSe(MdjFw^K;1HsqrsgDqDl04H2$~ab7;3e* zw(`%r9@*?HM#jc+jLC?tk5^*Dk1%a*ZEgu~->#F?zPfSa#)O`c(aZYc;$G*)Ot09+ zwWR;N4;chHpFlPapx z?vjyhBELFU~b>Otrnpu^0GJWj)b6DndetEe0*UPFWWvk%G6<%fExe`mrr=8Wq3HD=52t!{_>_Kr^Sy?}m zOsnjTVG|BDK6|!rM&y1*U%t|SJlc*h3pm?r2E@xNy^R3s=rIG}F(J}|o));aoA(NRexAL_z z2dFq@k$aneTh7Iw{RnXwUidI%%Q|NCUdKqL?p=KRrAmOY*cj()+!ptZPQLrhCmLG0 zvhfiFe);m{%HG}{v3mE~C<=4@;zh!gQnd&(1^X~ZHyYjK3TP$<=roy=pY89HabmR~ znLXJC3j`$~OP8Pi0M-oXTRU{*O@QPT{Q2{zwXd&F5g>%m zpa%PaM%THz1q`tIx!9xeY=5EvRA4qbfDEoPM&+@!UnJn-<>mbzd)i@lY)4Mbeorhm=Irb&SY1txqrA%A+B!cLBPo}vv9Le*YyWVqdPX3O;pW#UeQIjz)i-jum$}*5W*y&LFxLbUyK+}aa4SQF z2AIQzbSI9Kdmbx;upoH=p@84^@=Hu=bjN=Gc7L2d=m9l@C04{FBz$n+SVtJthuvcV zdB~g4`Fde-QJCYN`%-rjBO_Vph?(IFC#O@wE@KGrud7?uQ$5f&K5B>V(< z_MkwYSTj}RIrxcY#l7~^MRYa<0SBdLWMp*U8p_Hxzvay*3&O=iO)r^%zBr@H zwr^`^SE#P79pDW{A}j1tp7qbfSUjM(q@?}U<2|ge3E!uFn-a5aS8Q?hlZJ&J0_A3z zrhXD?4(W^-K$vA*S!zp>_u|$jsyPYzEn0=aSIp(o#7+Q&Wen3JU}xE3LtwmYF#Pf9Q)Q(~wcWzD&|l%E zQ`esHuh8a%Q`1ygy1t&C+wk~Tr^cg&gVnBQH72r+pFS-(O;kH+!yAz`=6KvZWV<&5 zdQ1jULU3P4hiYBvSHJB}z7Z7X@06637l5<4X>iVf@-<;^c=OI35C6xHhjcw}=PJBs zt^f@61qh%SdOA8cYXCAi?+5W-*!sR3t6 zf^f%7xd5DPEasGgIC#Hu1OcxH{Q%o;Ktjd#EdUQ4*xF6y3WvtV#(ueEaN;(YGEiT? zZtqN+MBTCe#ddVE(RBVvktd?8D%zm%Oj96HnNZ%_`zUK}ZjKdE4Y;nEGaKJ9s5Y^f z*45D7^`ogWUjxv;5ukrd?f*izkc~AjR&x;%5vla~HIGeBnzS*IK+-!sqHR76IF>$- z`XAu?q)R)y)WOC~6QXbkXSE-PDkxZ9EQVJ%x}P3y`K@w-n(89z!!0UWJ_izhgTS=Z z;-<+r=ZNJzQBkX&(S-E$69oqchZmqPP%Zf=v6!B3M6<*!oHqKMAh2tpk>Gd_0Fk;` zSy=oP4i4S`y^8?_&32fo^~jV#=MC9n@qjG31kvC_9M~@wTUAw63pi=Op$?nG=8<5y zRIyo;e-D`JSxih!c+3Qx`^|%jQ8-zH+uhymi;j-&cde2B_Wu2SH-LM{K@U3}>R&Xi zu<0)Y;{o2Iqoar+TaT%3;U?tdxJ$iS%cRqA~pNf6&q}ZL=a(X>2H%_YR=ZZ|v;t?GJWM zOhSK|UmDQkX6+MV{C|ei)~Ms4^@GJ27!<02njYL)*5;4%=emCV#oNwwWiSF$1oQ3x zdyLKg@jw^2vL}xF!D&=v{$y8Pzu|VZ7NQ+JQ17WBIABPQ@LgK zTE=dw<>lq~zy!#fLPCy_ou*mQf`Wof+JL&w%N$H5IIT^M1eHuw=jG?4FOrk9I&9-= zl#2~c;7UqL{S61xb-e@G->NDq=3LnL9Bpj)&8i)zCWIRgXU{w4x9LG`t@qhmK|g!; zOq)R7!U7{VW_&Y9{uU*ql`Wgez{x4c0CjbB$<_djAy+0=4T9*C>~_Z$G@(2wGiVeF zb>n1LbHxmp*Ar#$yvt}4JJ}dBHGA{cty`X;vSE36c&?FMfN?|4Y}Q+*1}Oli(XC<= z5)u-JlhQ?=chOgwXllj`9gwnqwjuvv0l@V4^CNTs?m3px2GTJ$K1w~3ilPU!4a`nW zq0N~_N(jtA4kC`$CPrtF0Po)Cq1xcZbs;UKbK$&v; zM{At_{_sv(&lwsR*v`_p#yUPWR&avhJU?7opQ^LV+&kNO7HTiw4yHa0L}{WH0-OyW=V0e;K^1yXS(TKYBQxEqrXM) zoV%EPhuBeoZ*T$UCo=)Gq!;|B>WnvF&3F{?V%5_F&y1ELYK~xJtz_1du-=GjCv16r zz4RWdQ~g!~pg(BOa#uIELeS`(2%rW;fWzM(p(G}i{$?uRgeAeg48Id`l?(u{{#3je z{OPq})hp?-qJQ7W$VdeGJhWl~O2yf}=|eUpl4S!)A96A4>Bini0LUEamX1_I@?hBE zaKoS|<>z$J8NlJ8S!v0_V5a@QZJUedDZgz!uJ?I}-vDn)SRi+IcQNVH&6dy-M3Zpt zePP#K>qAH1C3f>n=mb$K+%oVON03_tqwSuz$lih3xSV?yTAg z418D(i%Xkw>_9BffmjBLO`kX!)iHLPC@Hn=kcG}7ATU_8P1V>B?{#W!*6$#$AVPhQ zhv(EB?>jV9I?Xg<^WB6I^)_3G?K$NNqGci#$DoDfiE4soP&}>j^Yev?14lsW2l)7| z_(0b!3CS#>g5qMo2SUkjsy*9HT}|=TW*9;}Yk7@wtwFLu8KB|Bpu-wbBsuHy8 zG~)H1611$j&V)J*?JIN>K(Ht$=V>=6!VCbuXo6Xzz@0OhgvQDJ0bxayQb){7!WS2~30XIU7}EX2BWc%3#^(`Yr`gTVfU^huVkU00x4|2EGnS_K=23L;U7lPTi zExVI$aX6HHeN@I6&Jo!4xSYGS`}5QJvR504?st|vE)AUD$;Dbv@xYVQG9dP{1f2St zl5Cg45b>-WI(fpt?>X2i)$<>-e`JQM7)U`-1avqEs)keF4J$Fj)vsQ>ur#i1M@R!3 ze@ip-NyU)O;Ej~V7%OQX!^JhnOJ+Yk3+)~6GDmIPa||YxCkqUeMGA6f4MfXkxUZ;l zY0w8sLbN1V!8C?;4@R(To@=_PZoD)(c6PLbXZJTyO7$1(EW2i}^6tBe(I|(Ml$*G^ zvv=s-Y^B>>s + * + * 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.helpers.DateHelper; +import org.isoron.uhabits.models.Habit; +import org.isoron.uhabits.unit.models.HabitFixtures; +import org.isoron.uhabits.views.CheckmarkView; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.io.IOException; + +@RunWith(AndroidJUnit4.class) +@SmallTest +public class CheckmarkViewTest extends ViewTest +{ + private CheckmarkView view; + private Habit habit; + + @Before + public void setup() + { + super.setup(); + + habit = HabitFixtures.createNonDailyHabit(); + view = new CheckmarkView(targetContext); + view.setHabit(habit); + measureView(dpToPixels(100), dpToPixels(200), view); + } + + @Test + public void render_checked() throws IOException + { + assertRenders(view, "Views/CheckmarkView/checked.png"); + } + + @Test + public void render_unchecked() throws IOException + { + habit.repetitions.toggle(DateHelper.getStartOfToday()); + view.refreshData(); + + assertRenders(view, "Views/CheckmarkView/unchecked.png"); + } + + @Test + public void render_implicitlyChecked() throws IOException + { + long today = DateHelper.getStartOfToday(); + long day = DateHelper.millisecondsInOneDay; + habit.repetitions.toggle(today); + habit.repetitions.toggle(today - day); + habit.repetitions.toggle(today - 2 * day); + view.refreshData(); + + assertRenders(view, "Views/CheckmarkView/implicitly_checked.png"); + } + + @Test + public void render_largeSize() throws IOException + { + measureView(dpToPixels(300), dpToPixels(300), view); + assertRenders(view, "Views/CheckmarkView/large_size.png"); + } +} 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 3f0950fe6..ebdb2df27 100644 --- a/app/src/main/java/org/isoron/uhabits/views/CheckmarkView.java +++ b/app/src/main/java/org/isoron/uhabits/views/CheckmarkView.java @@ -32,8 +32,8 @@ import android.text.TextPaint; import android.util.AttributeSet; import android.view.View; -import org.isoron.uhabits.helpers.ColorHelper; import org.isoron.uhabits.R; +import org.isoron.uhabits.helpers.ColorHelper; import org.isoron.uhabits.models.Habit; public class CheckmarkView extends View @@ -65,6 +65,7 @@ public class CheckmarkView extends View private Rect rect; private TextPaint textPaint; private StaticLayout labelLayout; + private Habit habit; public CheckmarkView(Context context) { @@ -114,11 +115,8 @@ public class CheckmarkView extends View public void setHabit(Habit habit) { - this.check_status = habit.checkmarks.getTodayValue(); - this.star_status = habit.scores.getTodayStarStatus(); - this.primaryColor = Color.argb(230, Color.red(habit.color), Color.green(habit.color), Color.blue(habit.color)); - this.label = habit.name; - updateLabel(); + this.habit = habit; + refreshData(); } @Override @@ -193,11 +191,17 @@ public class CheckmarkView extends View padding = 8 * leftMargin; textPaint.setTextSize(0.15f * width); - updateLabel(); + refreshData(); } - private void updateLabel() + public void refreshData() { + this.check_status = habit.checkmarks.getTodayValue(); + this.star_status = habit.scores.getTodayStarStatus(); + this.primaryColor = Color.argb(230, Color.red(habit.color), Color.green(habit.color), + Color.blue(habit.color)); + this.label = habit.name; + textPaint.setColor(Color.WHITE); labelLayout = new StaticLayout(label, textPaint, width - 2 * leftMargin - 2 * padding, Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false); From 53e737c169bca0ea6614e69ff4e5b58c3bd292dc Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Sun, 27 Mar 2016 06:39:40 -0400 Subject: [PATCH 6/9] Allow API version-specific view tests; use relative image distance --- app/src/androidTest/assets/pull_failed | 4 +- .../CheckmarkView/checked.png | Bin .../CheckmarkView/implicitly_checked.png | Bin .../CheckmarkView/large_size.png | Bin .../CheckmarkView/unchecked.png | Bin .../assets/views/CheckmarkView/checked.png | Bin 0 -> 5170 bytes .../CheckmarkView/implicitly_checked.png | Bin 0 -> 5387 bytes .../assets/views/CheckmarkView/large_size.png | Bin 0 -> 17527 bytes .../assets/views/CheckmarkView/unchecked.png | Bin 0 -> 5589 bytes .../{Views => views}/RingView/render.png | Bin .../RingView/renderDifferentParams.png | Bin .../RingView/renderLongLabel.png | Bin .../uhabits/unit/views/CheckmarkViewTest.java | 8 +- .../uhabits/unit/views/RingViewTest.java | 6 +- .../isoron/uhabits/unit/views/ViewTest.java | 89 ++++++++++++------ 15 files changed, 70 insertions(+), 37 deletions(-) rename app/src/androidTest/assets/{Views => views-v21}/CheckmarkView/checked.png (100%) rename app/src/androidTest/assets/{Views => views-v21}/CheckmarkView/implicitly_checked.png (100%) rename app/src/androidTest/assets/{Views => views-v21}/CheckmarkView/large_size.png (100%) rename app/src/androidTest/assets/{Views => views-v21}/CheckmarkView/unchecked.png (100%) create mode 100644 app/src/androidTest/assets/views/CheckmarkView/checked.png create mode 100644 app/src/androidTest/assets/views/CheckmarkView/implicitly_checked.png create mode 100644 app/src/androidTest/assets/views/CheckmarkView/large_size.png create mode 100644 app/src/androidTest/assets/views/CheckmarkView/unchecked.png rename app/src/androidTest/assets/{Views => views}/RingView/render.png (100%) rename app/src/androidTest/assets/{Views => views}/RingView/renderDifferentParams.png (100%) rename app/src/androidTest/assets/{Views => views}/RingView/renderLongLabel.png (100%) diff --git a/app/src/androidTest/assets/pull_failed b/app/src/androidTest/assets/pull_failed index 845b255de..8a3238df7 100755 --- a/app/src/androidTest/assets/pull_failed +++ b/app/src/androidTest/assets/pull_failed @@ -1,5 +1,5 @@ #!/bin/bash P=/sdcard/Android/data/org.isoron.uhabits/cache/Failed/ -adb pull $P -adb shell rm -rf $P +adb pull $P Failed/ +adb shell rm -r $P diff --git a/app/src/androidTest/assets/Views/CheckmarkView/checked.png b/app/src/androidTest/assets/views-v21/CheckmarkView/checked.png similarity index 100% rename from app/src/androidTest/assets/Views/CheckmarkView/checked.png rename to app/src/androidTest/assets/views-v21/CheckmarkView/checked.png diff --git a/app/src/androidTest/assets/Views/CheckmarkView/implicitly_checked.png b/app/src/androidTest/assets/views-v21/CheckmarkView/implicitly_checked.png similarity index 100% rename from app/src/androidTest/assets/Views/CheckmarkView/implicitly_checked.png rename to app/src/androidTest/assets/views-v21/CheckmarkView/implicitly_checked.png diff --git a/app/src/androidTest/assets/Views/CheckmarkView/large_size.png b/app/src/androidTest/assets/views-v21/CheckmarkView/large_size.png similarity index 100% rename from app/src/androidTest/assets/Views/CheckmarkView/large_size.png rename to app/src/androidTest/assets/views-v21/CheckmarkView/large_size.png diff --git a/app/src/androidTest/assets/Views/CheckmarkView/unchecked.png b/app/src/androidTest/assets/views-v21/CheckmarkView/unchecked.png similarity index 100% rename from app/src/androidTest/assets/Views/CheckmarkView/unchecked.png rename to app/src/androidTest/assets/views-v21/CheckmarkView/unchecked.png diff --git a/app/src/androidTest/assets/views/CheckmarkView/checked.png b/app/src/androidTest/assets/views/CheckmarkView/checked.png new file mode 100644 index 0000000000000000000000000000000000000000..7884c804f513594b4b3b9e2b4b966f2199c94116 GIT binary patch literal 5170 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 literal 0 HcmV?d00001 diff --git a/app/src/androidTest/assets/views/CheckmarkView/implicitly_checked.png b/app/src/androidTest/assets/views/CheckmarkView/implicitly_checked.png new file mode 100644 index 0000000000000000000000000000000000000000..3096be18064061aecdad6afd8bf7123e301cf9b5 GIT binary patch literal 5387 zcmcgwhgVb0x4l#a5&S3;ilBh>rhFnr1f+{p69`=pMLLlZS_BjeA|N85^dcgih_oO@ z1)?BCYUnLO=p90+Z}`2n-XHMRdT-WBy~*5}bN1e6pNTRx);rD2%M3x#X#;(2bMTr3 z9(5-f!Sizkm*WfczBdfuC&36k>HGqMIKLZcYr+H5mPSL6x6v8+HG+Zu`8zdF4K)gA z=yG6LpU(Fqh*NozettpD9^dr1@v*pbU;AQ>QK;fxe@|5vg_-~l$3E=tD^-H*ywcqg z-4m(bPGy<7#-FGyh%AasJ!!BV$J=s}_L4f?}RFJf}aPjYacb$t9?=$0uml8HH5Ueoa(QE}<-^iOr(W&Ph>4Cv2j zG9{DAVz>15Vb?td?L7km0_rQt&PB4CC6FpWeIR>guWq zViWDeg>Z73(gEMTF{)>hiPzsjp-=+sQO%{r#l;7R^yHjiU5PtdnfTqQXgSfyXU`aU z)Mfq*3?Rc+C%ze4Sy>^Z35I6=1kqBYUYtPsS$6izDR`1v&^1<8)|?kFUJw@-7w5}t zYrC7LzS>lIFr}%79g4i1=gA8{9qGS0+vS?88?(ORB^ZY%NpUi(M`+wxtEuuBWQXzb z8Jek;al-yO){9FDU(fVjs}V2cmSkW=Au&;HKi{Ct;Pv2>EAjw*f^o;;iwN!Q3R0yq zHdXYUsaL(ti6P2{*!WN3-*}Uh&3M+Rp^uQrcUCB#+^G#JXJ2$8?Gx$Z@%@>r*^`r# zcOCAt_)g_~+RfvHIXile)Sy0J9Gkq_%8(_iu730smG|*u8<~(PXk@l!B_aQFtoxrR zZ6U*$i)T(owkOMFW~8Mp4)zTdJKfbp_;?0i5!3wn&C+xr*5-+KH zVawl_+?m*LussaszZs#qQ^zO5&ZI6SCDn=tqx&w}&+ppQT43nQ`8@Fm&44%t$lu=| zmuHxqQ5$x2h%tX-QrZLR0W=9&6soj9{ ztykXW(lQ1io0?v^f6`+Z&;ajVM(6Ct8$~j(yaEZx_YjqC!hzTmJ{Ocj3(Y!aYJ{2Z zwDz91oCu1?W$6i5TgviiUHd#gCxYOiC_RC%Ns_S%NYb$dAs_TZLaAVqvB6Me_&pK` z_kI0H2BfI$%fgjsw~$TkEeIqMscp73`kMKayj&@WQO<`CA6Af^?fopZ<>7}dI%e-( z^q(BefaSA2f&LQcH7qDDdLCq*FdbL zmzS55v9a+D6TEn0+tb?G+NevHF3FBA5js0F-lwLf*0>X8pVn@`6z=~P4+}d|*3{JW zey7S9l$3tO#NOI^NCh?3e32i|WNvN_uS2iMuHeF^+Y*I88l_h8Lf$>$HU?4MpBy8J}npdwbzdK*X>vgpAcvJUu=A zE5?jgS4kNe8T|sd?9Yx445hc=wlBAw{bJuZ6-;8FaQU*(W$^g>uogqatgWqO8gtlyk@0cyBA&oJ-!g8JSd;Tc`i zv(tS0i8rSor=_JuV)nMx&^pzkMMtdNiBguaKY#vI%IcXLs;{pn6Z`t+poxiZPZBsd zII63^e1SjsH-!&u+Itje>8BgnJ8~pqKaqGe*3sb!XzPM*q|T%sxsPPLd9yyGCy4pd z`QwK$r=38qeVMnMq@;@S{on7#1JbpQv+nHd{Mn*N<{=6dM5wXLHhlq?L_7mQFaG#( z=5ul~QJ2&JbgYzxmGzJ*4$r|`J?Do@DzYpSh zx90#5KV)Qdl#5EGo)8iex=b^%KHY98dh1PAFo!c^zXm_j#yWF zjaC7jFC6P6yk>_%mc{iU6pO0LO2h^=^!Yi}0Bu;cp02JgZMbf3ZMH?x2Gm3#$bDHL zzHFI_hgkGt`D;B!6#eJnWRvUEzZ`6AapnE}{cQ`xvM|hCciur_Vj@{Nw&D~(-8)bu z%P{Y40s^*q#l*y{Y;0`$z}nET>hT6l$iV>iE;o%lCpULyjo(~%GWa9+PH2NTNH;ar zyCEv1cBL(vy0>>!aZ5DS%*+g>2xPg@(9rPcW6zubuC_MjV6lQ=Zk172RxEH9x)!*a z1%q1S1O=T&W=JFjR%m^FT^5MAeeawfTY7r>G#~?tE}Wo#Wb5eSLhkMFw>WsNzCZa( zkOr&-e=T1B?{I(r$Ec_%E3UI=w{_s~UcrO?{ca%ERCP!`cypGgzGDvHa|6)eR=xdr z#{2iR3aYAg0?=gzh1|ansn?!-%Tf*9SuLZZqf?Io3HwVXQ&xcWP-TG<#7ttV|5EUr zcvOG`W(zU@GhVn_Pg~m=>~KZt_)n)9pZo_=Yb3l2_F9+&%Zu{mvHCqaNI$PzV*(!% z<@nd zeE^&g0^oUKVl9X2F;df|E-E^s2H65M&H&4>5wqvy{LrM5kL;I zv?M~1zOive8;ZXyJA2YXN2f&?5(h%Ky1IIjjg>VPdaVX_t1;pFR(Ec0t_8|yKFh&D z$}ttU1-i2cJP|)lI7#UddgIJV`l-gFgO%tTT3UC3qi8-xmY7LK=$C~{%gf8TP!?e8 z+~!;l_T$}IKb(a?9QiV8N?RS8{_zGNR*Y>RC`6iB{6p5 zoH&ZVfKdETm$tVOQW1hji@(O|Lo(}_xKGmmfHXuCI+A`lSA_7kA1hKmrWk%44D~~{ z^+JNDn?@u9WL;9#JUXhjnT{S~O4b*-3(YDhD9FJm`T6_kP$)O9DiBC6)g^6b@Wr&*{^r)eblF%nO#^QPSld+}#(nvdB{F zMgQLU4gete5RGO#&BPQ1Vqa=xWOUKayNxCbhueL2OO)@h-^RP+uTrORQD4%#*oxq- zdHQVA+5YZsb45^(9c*iSG~Gw4{TKSXnJ*D{l%Q~+a=YSwhYDy=9>tQB>LMc}ubkqR-Gst9#EjGAVJyKWCWIHu zkBZd+^cD~HD0*syJPk_WSsoTfjHjoky_S|%o~byefyf&TERx^U!J#ZkU!-w% zY0bjY@(6&NOrLH{w6L>Fr+~aG0#*>4ov_7ud3iUa&&JI!C!#@oJAq!{a4KbBX>J4M zj_d_+m3Ta9@T#KX*%;m{Zi#E>Sfos8>1JOtT*DB`K=r$Cf`6Ns$OUPDicsqc|Bst7 z($xHR0o-c_Y-Dy}K~+ck?A~~-FWDQ+Dmc5f%L*au0zAty$B#Xb!z1c+esF!m=GdmNDQCUTtr0TZ7Cn0o$b>4=4=?w(sWVChOwtyx$-fMjc#wg<1mMn3*^Luj5A^s&v=8$o{Jac&lm*29xi@?~>p3;9;_y z!(lvEZm^Sv9ah>vHhH*_G8Pg61UVK|SL)>N_X;u6oe4=vXGN0R)%f`MY}n4J_zkC- zSc!;{*~;+-FkgF-#!#cG)X;t@34aD9&xpi76z%e{Uxh5)0lzu(^d!2|J%ZQEci3bMKT zEu_Z9uKS;E{+?s1q9-rH++}XGeHMhH7kDLdcl6i`V?)DJDc3Q{1p$$b(HF6HR&gMazxk=y8N%W48)(53 zyxMQWPhaQSc1c`sFHYHBU4?N72xJTl4OyGn*o2f67vCD~NdtbsgqMY}{>hUk@pv}%4ElU zb=#Hd@l{q*3QSiE2{0j!^K>PEerAli`h(3IS63(X@z(px=bCg#4Ldu5CReXk-+^|P z>sC4&ev<_CJ?3BbjU(FRD%`ArR&QRE6t1+!utK323?4XfvG$7oG6(eplG3*y&)JGN z*x5TN)NialivBJ0E0WX6R#!abVJf={)s*qDqq3l&pmuuNh~dM7y?hyD`Ghn?&%mHV zs{!h|Z?qnxLMn568lr8cG-X*1SdswH2#y@H;nq8ON8a#?W3}_~_dj>4$!Bo@+xS_f z`pN(tIZOWU+r&2RPs`<7l-lwLC*E{OZlB)fQ}hT-z>}E1SbMI`bflh=36gcMC@9~p zyGgxgVU&8euMiOg3|gKO7Fh+F2p(`kk^oI?FAXavT_b4RxqWrzz%I`t3ej_bu(b^p zIA*j68co3hnv;4=)YV$1Z2O&WJ8q#9Kj&E(QS^d?cMa<8j~?u-PI|8fUURgw8{JyA zpA=m5m@n|zn(w3D&No(5^ctzr0p})r}2ZK|Y+L%yHoFKRf}Kh)9DaR)Y(^u>C~lbbu4t3QK{?q*Y~ z*Vu{A^YioRz(8F9>Sb0&MDNd;gbjHwDT9NgdX+Tee0QQ-<-L64bQO>NU%eJxw=ZD- ty?Ez|+|}0+5&zq>z6+7BFDxI?2GUrXtE>~0m+gxh~%u28W0dra*!ZMmK+;iBuUOW zNp5IpBtw(#?)QG*)O>Ykrl#)vx>J`bO6#1n_t|HMC#nFCKlVmbN+DJ~0$^^ttmTN@ZqdSl@A~^1Hnf<3rdd z9ypw0DvU49LM(mv3y0msCFEn9Xt~8yyt!1yF?vkO*6dWS`f$jr-z8lU0!Hya{0!;~iHmk+ct<4D47|mMts)vypNtdP2OeS@Cy8r)-+*52Jg3Z~i6r zGK^sVdr;!g*Ni;~%ni{Nl96-81PJS(TT{vK5sxEe?hhDLbF5+)%{XHG)xxK;&fj$R z=CFq=BszKTxAW@BBaCmgC z^QITrs83_eRK|6o1kx&FbZ5xN?>F!dMfq4YE8_=za=AL3PBLS2%uk83$=7z=C(J;%lGf{ z;$A@q3&IoS9I@5XHcmOgJ!ee{dU@OeQQw*nW1^BHA|nCq%I0Z6uMkc!207khZHuw0 zn!{T4&Z;a6TsF~!K^GR8|VMEAog$j$Hi zMfK|m1{t=a`@E0D{IBB$jp;B`xypFwVk>N1;+Fg#Ah_WWY0dif;XG!lgY8{S`_%j0 zkr|Tjp&Jwt zs+O+0(_y*i5ZKKr%_NB@PeIQRm=mu3n61{59}$894*9dyMy1UBC`;i;E5Rg$hRS@KBy$#60>N6mHKUHbk>yCVdWt zOT+UmU3flrcrvIodR_SME;Si)?n;uhfvJ2LXDi5VSAtA~_%Ei#%5o}h+WP(HtyplY zFzio)UgP{f0secAW{uI;cjY11lnIzUVPFgpG6+FisZfdCtkDY$ZYG-`Fve?4RGSPw zHDV0Ye@$F)4HO|CB%>f9-iQCtPi#9iYcuRDOPewVNi!%A$RfSpM5Cuyxkua2gg*;I zV1tTeEzjkkdfM-t1o+M1T9eI#=jU*I9IkL{e{eZu1RB9@70_!9$nK7wpxOh4-pVlws zsJrv&@afSFIi7oDa#m3I0m8U1HQ`_`Y$Wz&Z@jz5r6B6i)YrYl1pF>XJtcRz+6k;d zFK~+V#tV~`)2elE+EJ58P=dD3k%F;(&aXgZGJe!UFxFp( z$&Gr0<5{52MxR_Yc)9%eUFT;=2-8OtR}l0?m^?w?t2A|S-y!%}bZ+k#-jIK%%L8;+ z`C5TTX>6m-iL1WtvbF17``@i{8@ay*a?rU*XqM&@Sqr099(i*bvj&mF&A`1Q0b`Yv zBn@Cw7`^dfa&1f0EsVOR)_hc71SaOy2?k^chBP5CrdS9W5tcVZ(^7BQk3#}>VnE(f z3Y9r{2uF~xy!>}8=SNv852O-jYfKXn18$9EG6(!{ggeXLor;2yu!X+5w%se%0TlVu zN@}9+0=v8Wby1W|h}Vok5cU`_F`KSS$1W6ySgM=M!VQeh8R*x{9})NA5H%$1-#PI2 z7-EUq(MXd%BF&m$*eAN|cO zqXUCue(;jzPtf&^NHU_^9e;h0E4@5aEfIT!NlShlVILt(^blCnXbLb{gXs2v0o|2a zr=`lEC>R-$JOLSZ5Y*WFups57j|)K{kvH+vi27MUy)RXBu+3<^hFC3`uS7oby`Zz~{;&UcsEqkK9#h5q~EW}#9_{SlLiz4mUF z3=2!0KPDoi`XY>pIB#k}TlUFh9^QpNszZlFKV=WUyVHtt-VM)e{}!$_F`KSH&upaiHN2~(ZMa5LTla?{Nnx=PUfyZ<*cA@=uH#0E>#j4ck8bw;%Qdzeq@WAcQG~ z4Bl0B(g>Wnta#!pt#ga{)j9gsHw4`DJc+my!88OO7^_dc1P?S4n0e|5wGV=msxS9f zTn>u72KzGGl5A_-7!6BTEqFqo=Hb;X)SZYRgs`sj$lY13hzSt<(dmx=exkR*7Ch+cT28l%ziNo5O1IF~T6MZp>N+dAX^&gpBF2BM@SRal z2E4mHoovxwCAyb8(>kT~kAd5cyNrz0)%x1WRX3cedC$2O@ihL1++P(rs9*2_w=3lS zCzw@;Rg#vL*WPfUCgP6{f)RTc9IUp#zPwvgRF9buO(9Sw4pT%mxWNRDESW3;IJ{ax zP&%d%#*e5TaQfjytMUXx6J&6?PgLEZ5ctg?Xd1XCLjb!2N2oK0_%VNE*D94Bq0ao1@`E!>7)l#=65(Ws|R7SqeuYbgCiVeh{nh3S1L2O*}y`{=E-J(8~~!Q<4$%D?*0M5GG5okJ698MR_7}LNbC%;7x>0 zsRHDnkZ33qE5hU)D)Y@R2>Mi($SfLyPsbdDcx*}~CI>|j!Q^_$TGJH?KKv$wx7~QU zB_an!J%A%>VIgzi$uva>nNHhJFbqb~AgHq0S6pmB-=rCSLWL~_=+dI?Vlm|WipT<^lvD*-9`eFD;-S$ zmhQtOn87NnDNz_B)F%jv)H4oWWG8edmtiDU1xC>mcP1rp!tcR>{gd{gr>oY6OS<{odWCV99U_tjJMZ9KR`t|}k zSwgt)@4TCnCioB}4}nE`w&D7ThQgneeS(n@coV`Q8@})MYOSVdC1_hgwEyscN_Vu~dPii;_))r44gy0S=0*9e zHJ`g4rf=SM;y2zoJZs;PJgePc1@rnW2nvO76&D=z`CsmC=6N`{)Ppo5$5_Wee-*jC zt?QhfYBX@$n6SIgsvY6~gCbAlCD(jz}BiL~+_tzUQ$ zW8(jbANgL)PD)vGJ}^$)FHFbv-VqM@Ab6y$g>9;{^a_N+&Gm}A{~o9c2z8Y>IXVzO zaQd-N_oH~P8oSiw`uN|c-Cu#s=E=HqH1rqwj@h+AzFLLl>asWJFJ3k z{h40O?rk06mG!4+uhN>=2|uoM?L0nNTuBlvZ26XYRu)Hm*kpC=i`k6oZ1y?7rxMam z@lLSna&&jxjV-F$z4I9FeY!M+{GWqH{MKW(J|)|;-2wJz5_4p~oOMMu0|pGub-wJ2 zJ}NNmyTsgHbmFdWGZ9MqTFuaGHfHBGw|jy&s7XbmhL@2lUgFj9>PvDy&7t8H87D}6 zX9YjPAu%Rp8@Pns?QnOU;vP*E6AB!&0%pQlLqA_UlyVTywIVK&Kki-$GO$~&ul)j_*d zU`bIgA;7(5s1mhN!@(9$la+r6K0Aq z3;FC`Wd$=-EsBy$sfVBFt#JK;4-XTw%D&!yZh0KYPJb~6-7+ZupOZ{07yeXgjQ zrbuX>8libt*s&@bqImz;q78L&=h0%<-4arK)P0Bv{w<+8^Vi;}Jv+Lmn{K9XcXcI5 zL?Js;5j_x;>ZKmNBp4Z!q>J@e?t(ST;!NChtSm?2&2Kty!m0?$zc-HRZ`kiy>BjX( zs1!_PrA!69H@V1PCL!_cJA=k&V9gYCj{uo2Oon(7_+ygu;Dm6P(AIc zb1#x7QgwiTad8zbf?H&=YJ8MwH z?WzRz8IVXTSG@jGU873il0<1%OHE;KsR*(O})ppyD$aqz-^ zdNzkW)aZ@PnPpXRhqlL`IkV8YfayIOO{+^sGKL_Y7JDhfwIu!LRCmjErxtZWhj;~a z&f1S#$ra}=?7NbEFnzQaY^g% zPaJOM3fg;qm(sQIl59FH`IK~eUF?2K^~+w0)lA(xTMY9Dk(IAp zP=jxa3|G=-0wayCr)`cIN`h1i@Cz9FnRFf6fHh_) zAGrm;FFJexhwLVtCd^!kJC!jHL(+S43YJoqS!X0`7yA!9FD0}5z;XejiW*NI(?uz1 zGGEB*3EF>=&m)T)=vMcqp5k21gNN7+bB-gNvJ*9VCaw8`xaQnZs*yDvtDB>PE3Flj ztQU^`Ebhe~t3&mV0zPjPTh!!E5yhn4cg+K!-)VEOPHv*s_A%F0)#XJ8sc4zvGPhN) zinr_KT}2<2Rr&636A>9|DRHVqV&e;r6IYw$iWBq50zSe_jfICD;BW# zIQ_hs`;{zpsE??^v=39zZ^&>ybs$m=026hRV>megx<2rY&HIggoqu9gQCe3e@Y$aC z@znUk3j|1cm7eKME-ZpQNpt0~c>ic-!N0hPuX9vO!?>Qq;v2J;%gO23bsvK(HQYBDC-u5D~(>J)hE}%94%qp%Km@jj^SXW)a6n{^>TpG;!!yqW% zJ{XOEm)4OJvZ7H_b_wML{Ni?z__hr#986epiqqDkAO)nlYHvSr*q0vktww|Mv56*w z#)j1oN&DO0bEkp$G4l#fx%7QH!}?aIkKwj;JVFb947{^NhjmCWfnqvHdgm{c zz=2B$+sRBq{5`YUE&@sC9Vd-ml!!<;@BU#Lxn8lxrZHICWdBlY7j@1Or95!y9w+9>K1?P0`iZN+_I{z`$pUvpe)7X?jR*!`d9OJ7&^ntJ>?n zH-35i{Z>%s5J6?xE1zqaw}rK-=>4MeE+5mhIf2}Y)h`p`ty+kIYWjx z{oNnL-!mCB-9(-He!fVy;+Mfe`|lMvGz0`sNJh2KL`4-qgtMYFHqbvY&vTMwIFm~1 z_rz_!Jb(eIxsX)xp3rhYg*xnE zJw>U`zS;oJEhhxmA#d#h7x^5Zwas#7hY9xjv5u;i?hRJKddEdK@UQJow@AQb3ksti zjEeg-cuJczEY{}y{QYAS9^iK5Zko9*A1te;7pI&`ukj}Vz2Nle!1*Jv2fGQywEW9S zDdrOz1MH|_cWt`Uvn+PH){#mbJa5Yh!F6)6>L7_YYj!}G%n810TuYh;PI_m~PRA9S zypG&KYOU`EHz`slCzlurHC_lw@}3nP$k|!VyAl+OdJkSKq(}~(`@Om+Kg(l%&1z#(#QSxH{ijCG>&B()K=7*G& zL~9}%jH>a<&-FDj_Bc3c$o7^*%Zy82Kr-v#zpGjmQ>s|C0f9h$R6n;?9+zHSI0%@r zdKTG`lzCBuqEk0B-YTb@t3RGAH3Z_di-EaP4!4kAzz#)tFDX=XlK-%FJRlvWdfBUP z8^H3}I7@Hoii%QFK3)yY^BLl z8g=I{ibqOg>P8TBF=U2$anG}zuR+q|a{W^sY$CG4LAjomi^?I&oI==}9^@-eX7OjU zdC!9V_TRm@WbE@uvU^q;Djh8BLmNEa$<6SxnR*EMc~ zg`)r~J-vGVz_Kp%P?36g*X(vP8kj_Jzp3GS#T7!)18f+donov~Y0^#NcR8DimgY7g zHmi%*4ZVkacP7dDG7kSfqHt3*PoLSZQ$c$-L*c5?Z$|9fZi1DcQBUxyvP>sdQ`X_U zxjj*=d;u4lba-1sU?f#5v~>r?-tMDUdHFo=a3cK;j*0543@N#)i)PKks7+J9vh zSekRGn%B=&WnHWXoXy3|EMF+5f?XAIM{~rhpPXPv>F(swh()>=&4jDv3Ng>~(iO)4 z)B;o^{cEfT!Dl>UNFOw6I4}U=yO}D zans&{1wDG!!&7PaNg7dsuA6V#98=$UMD``Ye8Sgx6n$^^Jl0M#%Wsx3+o)9J7Msd4 z2gBU*w~mW?kS=DJuOAA@{0&rk!;r>db1@WL0hg3iUoMidlcx$`WHjQMpIdx8tsfdO z=MkCq;GMh6?t8e|3^b}2g7jYiSYY#rtuYst64x>jgeJ*B!= zVWg$%jlAoqT%E4>+Vz>Ee<=Ag9ARc?7eA4PYD)w0JRGhzDQ610Wxrh}i?P(O`?jq%&CJ`MQN%0EqPAZhwlw|3>0z7z zICxtn4$h}DB_&cULRXEodPD_-(_>3-3?uWz;x}lLlD=OJt>`N6-y{;OGMq0E@;sh2 zIZnm~8pWbC1qI$KY1J9R7UR?*lx<(b_R*-IrX z+st9$K%M-*Ab=h@hol7cY18|ZfvF^>M}77~oYZ?`TSF0dZmUs5O3b@!yE-t>yGF=+ z`3`9v_0`PBd7Ytdjn7lbz=CQkfByCbp2o0VN_EVJ)G+I~;9c;7BYSLQ-q8LD>|re( zP0WjX@*EEi#)6XG)~FSUdh;ylMl52ki60AwQ+r((2qhHy8tk}nFCUk&Ss6F5EtizV zIgAV2Cyk~7g6Z6Ae(4K-XkatD?}nToQfk(I?bRLG;js6>)z_3An4^U{)T^s6PTE}D z?00_F?@I zm)O|WkX8l=LSpQGI&$p(JhPQ8@(>d*U7HjQ;>YF36|t3$KXwX?O9GmQeERz?UBI;L z6NdE9_o-E*)AcI(Em~9tMiut`e6MZaxFML3c3>|_ciK;%R#n6L)G=Tq;*E%dI2qMV7<2n*mP`y={$}V1{NNgU6p+`8?YkI60co_ENA)ZSGe3+a#aR$$m38 zC*-{8Uo0=bFw$1g-@NM~Q#6ntZ5nY;2ftX?80V4x!OB(i=*XdW+ad;9Fz4*c>?)t9n}th1VjdVd5{1(a4>-n#s-*%5If+s8%&h z!S)L4IEuPaOZn~ne#@(v`svT;pwlj^JR@U+Z%FB*v(9K&?3PJu{-9mBrIr?jzw?5r z|2tGwgM`Vr-1cuAnK`ZAam)6o@+QXM(0i_2D7`ddO!8xz)~f4GjMs6oXpN3fdh3Oz z6r6 zOk`GS3+|ryF0EdtTM!%?@8+?KQ14^siR$Xrj*HCwtW(UH_S*W)pym@5CGRYI+Z1JQ z!$ipsJEw&jxw17>%lOr;isfKHQZyTTS22&-V@BEiyb}GkurqW>?}HB7zjpD1k6Ko~ zWp2+32Q+4KZR$G=`r!ufUEGy79JIsjPDrHN_GX4y!TOF}9J^jzDiQ+9fi5 zJmmM*z~`d-i0V-EX;a2gr#Lb!`nsU}Eonr|ma;!}$g==p6suM|t{%z9;=n?+T1BoK)l*b|$ zk%4qJu+oPau1nQn)zx1@)qhjP$D2@Pmhrem_G}mj6kO1)RH=4#30cpD0On_4Yd*KG zLV>Bl>=5my=foHUHPszb>hWMz9T7hpyX#2i8dnfr7@=@5?RUNB7tyuk!-80|J5ss@ z+*D~~qFsPdA#r;r<9?7Td2we_XX^*Yu`O|up`>T6E}HI8UokveG8-$sJZ<_xLcY{% zje3fJByD-VX61~_QJjjrO!U|TGe z?g1G9QQ-A!Zp}pDNR;-x zD6U4W(yg&+zL~qXgwjFksH+P_F-=l)9jPmTc$$=Hm!x2-WSe}st5Wi8NY8{#8)JB8 z**b5#ZRd-V?*tgW4VH-Q^z!Yb$QyT8#&L_uHNsh)N^*-78BLD@-i#LRp4+Z9=A=*e zE9E^}5~|?7HT6p9C6K4Q8>qb#S1IWMHcvnar79%u1{jzmk<0dv;^PM4N}w^xNEaP4 z`2&2HbS2uBzNmQ5+jlxa(UE~KbEGvO4!fEUWFit0^C}erKH?voO1!eUW{Ix=A~fVa zf_O@2v_A9P`xm(*`JBj&K-K1C5sm$JftP^~^07h*bIE#NC}teq3x2h0R&D@Uq_9Nk zw-Kvg9TI9s?9dloLvJq8cRNA($~_^GpPr0HbG=?dQLaf&39t~(seVy@5cD(Q_|?h(bmJ_NtMq9949I+910?;T z){GEzb!G>0Jt6u{U(3vYzugD4dBn!lYV+~7tBs+eKz;$B)mNhq)H#IQJ5gcr0S5jK zwi?_$Rv=#;{jQ=Z))2CF)oYyUyL`h;U}4nDS913xinC8IL)I7i%P0%yZCi;NZfqBb z&rQ?m*8|@-Xt+w${QM_$QHVBjv}2e&xy&uGw>unQ8dtv92l}-$H$uK!paLX(WQK>F zE_l$mB;8%J^LUdbxK4e9-2ZHUl{_HFF;r(@x^cZs-il%wK z9mhW-6q-*G6k#iEHEDTOp?lgNWHWB);VZPC-xHrpFz}Lsl-{z*7KPyAygN^gQ=?^k zwT%{3{oT*!>p5abt&?8yyCJ^kc7$qSDUx$LOr=!)*5#~z<2=1Y#XB(CeU%awA6z65 zWm#*KnBw$0VBc^9@KzFANt+;@5s?yq@$0aKV3?h|vB%bGY-9ZB2nc_=?cDVQ6EbWK z#XVn7nl!2zHd36PsWAvGh?}Nrq3Qep$}28x_u=9)pOS?E1h?b$2L8tXaK{oWd~cr1 z94KS4szt=4nYu#49Q8W3s0qWi*4~I+8lI zc37@0df@iLBxY^E#8D>GW~A7|3R9TB=g1{C=IR+>dl?&c(45@Dx~`-Bra=%?DhdV+AM9_qWH-fA-U0{}hDK}(9Hg>w zVEBqb+s0Kj;wFkx?$0J=o7kz?gE*HnTE$$e{OvviE<4-57uIu6;=5INf__q-9*jB< z7@Dz#UYy&79=Xp%qR{FO+(PeU4(w1mDb@|T4=(amHRZWGxXlYW>rKKWQ(As}>Kbh# zEG(YWx;L zb=*xzu^1nA+WBZxi{xra@fS-*d($ogAZQ8D)eKydS)b7~m5i}$Uo<^76BD%IYOw^z zb@CVcOWxvf_kmX_66ya~luGKKoj1{yywyLILkBJ^&Qdo2eWg~!MCCfrz`ki5W_s(N z>h#IF@27bTr4CQ>rAEwza=G<^;-MtU9|Dupw6pu8zr#_A?v3I>(7`7oaO5iUVdkB; zcVKND4q=3DvK?;?5=)XOw7~uTN|yUNEClC_T4jDo~2ALB5q3D zx#L3T_Fh7sA)2MT>1uu^a?u^18l^NQ<+f2yQc77bZsgpfUpngN2WYd-`bGI>KxldF zfOT6(p13+_C_GHn&M-EpId89*a+(<&UD`e`eOZww@HgUcN5B{G;x}RanAE!%HGLhN zxV4U3QgGy_2yx z2t^$YPoG`5u^Sa#{FMu9*zP;mqtT!HkPzWfXL*U<-6Rw$65IJ?hwLDsfu|x#-*pWh zv6&ux5gTtbqIA>=!yyU*!d{kge9{>+6>|bxVN%+ce*?!3Q+m{^74{5nRCyvlM61Ww z?f^gNw+N_+)0*v+rKT@)#|u6U&TIS8I>q7!v%~ZBaWd-BY=5yWekHmCQbrel^3eS$ zN~0*7?Xn6z+%N;qs<0}?ekE%-8X~5{2e3rPxFw`IUCAgMPaB*+p$UVXi>)kNR&s=N zUIW4@sy}a0Tz`uL{*)AqNgv600M#d=C z(8IQ1!O4h$z)=4PoUYvTV=k*WL5fkJ;+(j-%G@8qMpk7W8nk-_~OFk}oMvMQ1E{$`=#WpmK;Fw<)G z>TSt*Xc9+Y&^r)+Tmf*F3r0}r==!ZPzvXJBq}Xq%&i2R?|7x-Vxys;E&369R#LI=b zIopp&Hv4}@7+)lCTiRAFef<6Sk@k>dLl6*5;D4SLQzWe-!8R*CSq5rah7g7SY27_X zJ+ac-f{sA~?|0(>vzh2-gT~Iok?0A*j^)Jno=idS&9Q7#hk=?ShYnKn1MzJTvYa+< z$^TEf{tgVek}v>GG2vNcxiK3_A*ng$Y4QS3=$oYmM>k2n2nwDYkG=Aqe=LG3c_(_k zOgR1jHPslv5w&grHdvj18`XZ!mbh%lSS~r!w^5)%OZ$31z1hEMh#I|o&6^p>eVoxh zoY%xURm;`;x`dKOj{*edj7kA^K8`irb)3kkaYP+ao`VcM@>sQT&>J9Pnj!7ui@(Ew zJ7}*Oo1Y-va+AQGhOAjLBSB;{f^*sqXS<4mrB2>|Mo5!CUP%GPvcClIn1`*3`kK8I z-?sydfktJ!1Ue1)tt-QY0ad|dczS4uc1^(V<$xcqUX6xWdLTR$Iqzezoch%9IY7lw zB_d!lE?{f#81EM>2+^Q?u{Wx?Zj4Dx)`6Dm+6({RFmI&|g`NL}s_+`?w+b5bUML|TK^ zU*3~H_v|iOIsD$KzaZlMLtxnK^#35sJSeFCAIY*RWJSe)VagwUl%VHI&a3z+H)gq)B+gw)he2ZUZl4)` znhb=@C4!JLi9WT8(VhTAnM;=~gib>CrH>|jpBm$sseg)2yFg6=k%JU2LjON8N)4^I z*l}CNpZAcd4{{Tb3m8!E5h_?>cfPXXtl@K&j$?PdUN&FCI+=r@LPQK^e)eaU>p;$7 z!jR2;VXur$QT$YuepW`4Fw%_7>UGJ=oL@ii#@8PE_Auqsv)Gm#drt01tWWU%WW zZA$a;e0RtZ{qi<5;hYnL2+DtZGet9=BJyYD#rfc<>mgXZDgUxdBx`Z0)Wmhb!p#t6 z%2t3>Tm0_^VI+>lSu`VvUjJI?s9I+^`Q!8Q)BhlLxi*#C4(U>^5TvmJ<`DRe1y+MGjBvDJN z&SfiyBxAqY@qy%cmfIOn;S~wL>izl1^dpqXvbEcINN#T71Tn)H#=Zkb5m^ej@{ern68P5v%DJCjrEq}zvfM4uQrsnO3%lWU zBUv^t=ADPg^X)F>*pOlK}?|$PowQpbNSw$OZ zMP6sNm%}?xJ<9|xd2ys&N(IvHYZ*`^wI^qX@(+x%t{w=H+~$i>j(AZ@&UZ#SD6VCQ0us z7LdgNT`|aMIrA+e)?D`X{I_ARzp=dq3y&iXK@rq2(MWeIVZAFS3TdXuKL82Ms|mO{ zzO_s6B(?9d`bunMc=)@3YDy!0A0LR2M6l4?uxBYWcbAAZTFF_`CC0uc=j|jAbA@|) z9)xF3JAEnu%>uSAQo-UvV5X*k{>U!4bK!P}0Doy}&d_IQ#=X85y&o$0%aNDeOZh1A zDvA()nojF$)Bbw(`5(!?jH$_@2d%$*i%3EhBfZmVmCTOvq3}kZtNG75DA`{s*m*pd({*RB1b&*E~nIE5I&?Dcep-<#Iw*JqNW3#tZ^21&0Fb^^PZ0 zF7@pNr`UZ1v7WkX5+Ce>5MhlE8!SH`h{}sMuS|a_k!*TVI*}R_XR+>5R zCTGFO2WQG=-XXl7)Lt*J-CvI^Q1W?wFqlNMGadU|=LSBmxYKwmU=4TK1=KNYOS5#O)EyJ;TljCNf>3Ctda;eTQ&aQEXh_9@*0oyZ+ z!?zcI0A0*G_4NAh;^%#TE6zxVQ->NhttUz-uMaT>A#Q0Vel_<_R(Exz4a4cJ7}V0g z@;m+WMpLr2VB6b&r$2t7x2bL7$O~9|UtoIC@p~`(+Q}Si-&BfdF00O=k0aRJ9Zg=} zdkPfFzaac_KV9e-%BJ!K%shb470r9|d5s`HV(*Rs^JzyWk|=_S z3)Ho!p5RXl0ZWZTSd$7dgzU97(liGldRkRdfcaC1^cpho%ct)q@ zAC5QZ<1bp~0}eepulLz-eP$E)^b1|goOgZY;jh{A&-yS&`lsXA#jx1@_`U}BlSeMq zoUSGxfOzSB8Y>hOTs&PovJL&K`F|c##Q3O3(%%0mJ5n17{bj z>gU*_lRL$5$YVIb)k^Q}*bLoXghwt8eK!e_mlA!kRN`D$U-|hOlruzujND4kAlXAH zFF7k?Y)T7P(vXz3i_g_Ib#`~>Khbh@x8z4&Pt$b@D?=6QHk=BuJusp_!lc$@h%&;X zES6{q$mChOQz|K+W1KwN99}KOlP&W*ogWe6FJY?KH`C`@d5vSNt=$OcCH!CSW9K88 zJN&)udWW-OSc@xm%5!fn?E84U^Mg9eg2g);3J_v^II zxLt*_n`|_j{5xa~UgiVE9OUZiFU!}=DM}Z(=f(VMRjeK@YNu|X;~8ct-%%7l3a@>K zg6!i2X>~L`Tif|12PIPX7bGaIfzjY-Ov^Wx#|+lD(*@eXJJ%;tGl6VWj-Qr*kn;%# zuhHlDsqbkhpTg#y$t_nO*^Gt_uhR~@kjPWG)Q z+=0o>cAZj2)K30az?3_mJzDB_OhJIlRB^t%%?90ktH;mkZuG8A>6+VF;;l6Lg0xX? z4MUgh?TzwM4eYO`!5Kzg4naescc`DJj`BDRX7b}5)DtjF>}uYQknOe^TM$$#MUd@u zePlhTNS`_kREkvE*RJYQtAr2MU&(?JK19Bn1)D^`e0`=a+Ql1GeBn^K zK-wMEl+?J1#lPkSQ$@a3zxdH5VofQhqZTTfSU>0J>7|y|UL9gOGWVhNZ;{{G_y^SK zSS!j+H;Oj^7}QCD8ILltp~e~y7=3m<(3k4y?q`3c#RsD|G13OT(`ZVc+iH3E~P;1d}Z(7POquxFV9M?So_v{zp zWQhaMG`w*#Q&#i!V88jxDl0LoKqab|=O#?M`~a};G4iWEI`tDX_#l0pPUZXd9C5Zp znOcAU&Fu>Q0-V8sjlwZ62}yBPCYsF$7t;InfLM}1f?Zb`$Lq$z}o(V60Q^AYB) z0{IHyw*OFOG-5a}K?Obm1@7+xOb8zbv)KhM&gm2*Q)lsf!X@c@y4qW>92QpW?cMAo zGYeHno+{tG6`c8^ZO+A~y1{6&dE_wd)=2RLDT77QAol>(2GWz$$mxydY1eqd@s8u^ z%#qp)&aqVxI2E%S=Nmg)2lODxbEhqj7~X86&V;J#uNOwsTc7rIM5nmFiqD{I0yP_U zm{MzPEsL(fMOJExL|~oqSNqhO%(FKdCvXaZ^x3*#ma)&ze>IC;Y-{wGdOr9kVJ~*8 zUgb`NYIX&ddM}R7yP+#5(bc=17DAv0syeEAHgF)(f|2f;*E$O3A)Ck-ZB6`E*frrk z318$uw?M9bu_y@hsocE3PoZ}+?0+0Pa7nFtefRWG@c?A4c^A+l;)s*+qh+8Z@n)4c zuG#c_K+gD|)#OZzUjzkCGG?pBSb`8eLE+1XhnJnzPEj+*J9nBS9K+WrbO6n`vv1Xk z@&ol8-}H&ql}C(=%5su{)bGCst4hMSl5One3bkNGL5P9-=}BAJ_-!i}xx#+DGC5Gf zO`Fp4%|Obxa!s!o#FUmlsBeXVf^k8qG{Mezo2uZ(l2`mfr&m?cDX5r4P($q)<50EH z^wd3e?TG|b|@wu4KGDV~x8SNVefdnmA2XwEnmqS0%|qe8&vDK^7cde4UT- z;R28Er?sjU%A;*pP@rPDAoGv|4q-IKQCCZttKW`*Jx-P=z6L_k@*-vITlQTX-r|3> zJKaIWz&iLCd`nx0#VSn^h=&BIzNije(s$EmXq>;DE4b;HB%QTP1AC9S|NXn-!I}tA zFE02WIWMc6c~ry_-31yVJSM?^(x(@-UxFs$wI+tkfwbcS?MsR8aV76e@lG|N#F-!~ z&WNY?kZRn`&aGkz<@fl5cb5!Te7@6s<$e(^d#0~oai9rA0|y1_+?%spS3~uDP4`2O zt5Okf_{~oH@_u6ay{{OwgHPw~qVVp1sg6JPB%Ok*V4ER>i zP=TMX@7VsmaK`=NV{IDn@u#s0gCN$okL4d|dnc}p`XQg%z94OkPckVB8!=rypL&Ll zUFZRf<5#(gQeknfvxiUNvqlmd>0G(Mm;*^Sxv|(FzGww|XG+2{WM}nll5GScI&Yh`A=2qXl0V!zxDtPhFp*udu z^Mys66y!qOP}hVjG^B-nG1rp+NxXH{4#{%HRA}9bNl`}o&2=Q@&(GW4j&Jo?T3lR&3keYp zCSEeYvT?WyW%Muxd3xcimX?IPI~r zLhIgACHe(6;j}PVwkW4sbWw?uB`XxsAQI8C^?2!Ee;+BGdsD%>e#XrQ9*HA2vqw@y zwtP=;rRU{i#x&`W5ry$}iq;m9rBuvuXKAOiAtYO$CRXHvy3wQXmhUY6ar}DOoLpQf zJEeRO=2&-sr{A)baTqSpz4>IFudT{mqw#14fFGrra{?f{K4Uvyt zY5DD8bW8T~)*^^$PFHj3_RJ@W7Dm_j;D%tRdy4ZP^Fa~5nD;FGVKl8gX(AVHyXMKj zQ5}Z`nD>nAxQ45u8+DumJnX23{JG301KjNV4Zdt?BIYO~JZ;49%9`$Ogy@1#gkxPc z@oy5`WYtkuj}p0Z<;v+)V+7^bsi6Yf&aFP4eqAJU-_gMqrN}3E+t9Q@wNgOOH#PCc zjjR_hN^1$mN9XUB7S|>aEi5eqa-%VtU(g_Hn+7G!@jNlP4GZeCR zVk&>PvZn5PV|^wh_L`CoE{NDVp<-fJ#gY&3u&v+99T-4rXlQhr1{j8z5Z0QTo3%b9 z?0Kz@+>g}eTRBHZ$6{zwDj*=BbCZ|XU&*4v^9#9|53*Ls^>{`oDC?avZ;}*GXDSYd zn_eBQ*wNS5Z;|%f)s7kQbau{dG84WVCV%zj%etS~UWX!fArtMYtqw^A-VzkR2d(S~ zCcjK7Sb<&n_Tj_-Hf8@W;e+vbyuG!x^_p>&uSZ$VUWkArr|!dt^>*oqGPta4kiF^B z@0l3^UB0;1si`U7<5JS{^74I^bhp8dBuVQ>qtP4Fq-a_?xSy^bT#RL%KYEU=rPmIK_~-9JS{MC^f`yw=u#76yY+@-*7t1`qQJ z38CL3vW`mb*mhKYc=t}&mv|We@#C$IA3ws{z&BPUU2wK_YI<71wlmrIi{>qp&W?`c zo_-%Q^oI{0{O^c}Tz&fVso(KbM`2;%ySH!O{$SzU2Dnpi(C{w|rAY#ij>UCgTg!(_5X9k&(X8y=U`3w}C!7 zp`4s@a)A(@XJOgi1hu99!z%w&Y;+G$)~~X%@`h2Vi+TU@V8LnsGd~rT7I(v9NBy;x zm5b*JNOr;;5~?aHZcWjbPN}y7G{I*7cJuk5p25GdzV6-ntm4UyX+D-WbmHRT;fmNY z3E%B`wQtsd1y9b=()#t*)jhW?S0nV7u(7akM~8>s9~qw(6cjYM9@EUk$;p`;A)i)+ zY31VL@}fOMK3Ih6Kc}duXhUAxi_?o&Qc|i()x~Mtp_^u8VY%CRgsmJN&I zi_;k%-#yzxu{;r06lgIps)4GDmU z`pIMMWVo>Kxds&?J3%K~DQh2B zODsuI2S$SZB~?{bAh^yuznf!DS(usKzk`LZ%(j0vC6}|an@9f{&H(Az7O%|fPDk~~ z*2c!h*VA)X8v4=J_V&F>`c|YO_GG>bdx?sgI*1cIJ}^FhDw}Is6UYL6(@5b#x2Hs3 z2UQE?;~gg>BT+y^M1)^h*oD-ERg%5S8A$~^*Vzp9qy$yBLke?t^U*T*Ia`P^qOq=4 zXpRZ17ztZmSg<#)2|V88i_12~^`3w@Z-vrxot%ZfseQgd!J}aB_GfzmcT*#Iq#Qk7 z?S#3x9WQ8%fPw)&_hNQ!ff7A;b#+CPnZ>GD&nAeXaz9}j8yl<0gR^pSbPNLNjr{$O z%mGc?r#FrOT#~sKJF&8WB{MkPoIkzjy4H9hJ-Z?UR!Ck^vEy>l%JcjM4|oh1HI0sn z3eCu{WrTRIUvIYp0*&h(%g)VRB@YHHxQa%vg%OEFWoQtDnw|9(cXa z4=WK3V0vx>ZQ_B1=`2qoxf$+DN^aF0u2x(JuFDnd*HJ=3f@)8OhOBvYl-y+wYA7iw zsr@et%?KX7w&!nsGa@0{_rLiy_wdRgve)(3B{uuh6B; zDCO0wS6zs#yX4R>hn2#k&!xJrDoRN{?vociFI6M6pSuVrHPAP8pxCv1p%7Ax-)$tla*U}CZphlp#xA#NS z!=GbgCOAZv8z?!O@`?&-^Z@aS_2KRc+7NGZCKyyrfk94j=Xf;>OyS^XAk(A%zP>)P z?Ev|}gykD}U`&~w%Q4EhPJLIlwYBX8YY^Fr0R$irYOVl>SbenF>dq1B+P(118Z(Ut zPW|@lh7AWmMgN&Ny|I5zqh@jpOG0IC<5yRmjh{Sen^gNOW;|BxH0=CbPWW*;q6+Y8 z_fy}(;-Z5mC>cD+$3zK_#jaGDvE<}r9>@h89)^5!352zIYReKsR9k9(M2r_y>ao;E z53O%)MUVvt9Zg?q#4NF}vKj{vJMKc6IXMB#{F5W2qXA@J@c3oFR-x71y}e66DciQU zw>Kl$g-*@}g9U|e0MF3#q!kF5D%s^*w{GQkl2OTJ^o&wN?Ck8FV;IT%_sh z`2qyQV`Kqs+zny^KzIb;T@Lb0noJIyl+4OHD%Pq$1G74OpF4_u{g$G;larGH#0U$i zk$4V@HDkG`-$d1Cy+5!<7XYj*BRe}=P=s!}@YzCl5tz>|RWL~46fscg@0D2whY35N z*nRC!PmVWFnq+}F`v<}}j==ySe*`{2S#l;_?ir+WE8l z=g*(|+}vDGU;yX#{j0wg6%{3P&P6Y+v{clY%>z!PR##UOv$C>0e`RVt%tJ~w*45Re zgTJjtN?mbk1hWA-9y28+_(T^fke;4i{LmmHKR=%aGB7m6!Lj7QA++qt{Cs>8c(5y@ zqoXea0s?H;4~}X#H#gCL*P9F8LKO_sXy@=m063q`Ms`zw2cXFT{{G*9?)H<(-H2If z@9gZHUtV@(443Z$j-H?b${DQxNR+d^7kCM23ZKfF!_l>q0uYRBEEd}e1jYpP8^YXO zUC)C=cF0h~-dB;rfP zeEA1jTO+)V_BT?1Gy1ITcoR4wdA_(efOSLXF3A{4#Cquio*pzcHK_o#Pmn#?pEe8# zF_*9q6%{@Hy|C~J9;adqASL^rG+mY`8&rMtGxbrif8_@)?WHkMWNbt?SDHNbwlp>{eADQY#rRU%>(~x zMQqpdSk+-mj7gZfsw!=GWMtA0aDoT+uZKsD#>NJ_AD5)4sE&k98^>OS*V>}YpLs0F#!2I|n3J}Jg#``7E%7Y# z75ydl+7{ZcFF&PA4e0lLV}F5iaM--dsb(!N|6L^1oEvmCVlDFa_ox|o62Y0Lvt zykWBP-+DUP1L_pCGC%**rEKIn<`Cs8`w^&0WO%s#(D3l{L~j;hbSf^Wbj zkd)-*;UI`OXFI!66Mg-xMO2E&ojdMt6|r@_y*khK*C$CbFID;CTF53qWl(l{Ycu36 zX8m--0 zkxxe$pMgwG$8V)-?z{N*0h=%@OgBB!)umMfc%(`ZNc4=-QNq`CAb2|P_Smig>5l<^ zhbtwgCP?IdXhA_i|H<*8t$;z{JUIju^9R|N^721<&DT0bbVEdA^;;e#iAp1Z4><;h zm6qV(;L`c|d3{I_Zc;fg+|%Pu4o!n4o~k`>5T&CL0?tomV(znTF)=sP3`BxX zj`o0x&uxpT`pmS%=|K}iMW_SNKDz@TV`}H%@F!*lZ!Z{63zExPlly9kevQ$== z-Q9kFe}4<;OJ-)6Xgo(--eMRfoiiq1)K-l_5t!2J(EP$eSB^>5AG|23m>ut*^V8}} zL2ODN-aZCUzJ{5NtvE9~d(mG`u9n1GVol)#wKn7{{q4TNLZ-sN)+p)f_N|S3Pt&L8 z>@~M+LY#e1^$>`BK@gi%aI)B0Uq@Om9bdW3U^duXA&nytG}vj*FkifQ(TD0~>LDTM zcq!0ujrs9ie8y|wB9bJMayQ#P-BD7j`IOHJAb=NOFq@pAYLWSWbu3vFw62YuQfRT= WnX4_z?gD*U=&^#jeC|WD7yki@aQF%U literal 0 HcmV?d00001 diff --git a/app/src/androidTest/assets/Views/RingView/render.png b/app/src/androidTest/assets/views/RingView/render.png similarity index 100% rename from app/src/androidTest/assets/Views/RingView/render.png rename to app/src/androidTest/assets/views/RingView/render.png diff --git a/app/src/androidTest/assets/Views/RingView/renderDifferentParams.png b/app/src/androidTest/assets/views/RingView/renderDifferentParams.png similarity index 100% rename from app/src/androidTest/assets/Views/RingView/renderDifferentParams.png rename to app/src/androidTest/assets/views/RingView/renderDifferentParams.png diff --git a/app/src/androidTest/assets/Views/RingView/renderLongLabel.png b/app/src/androidTest/assets/views/RingView/renderLongLabel.png similarity index 100% rename from app/src/androidTest/assets/Views/RingView/renderLongLabel.png rename to app/src/androidTest/assets/views/RingView/renderLongLabel.png 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 e86049d13..1ac8894c8 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 @@ -53,7 +53,7 @@ public class CheckmarkViewTest extends ViewTest @Test public void render_checked() throws IOException { - assertRenders(view, "Views/CheckmarkView/checked.png"); + assertRenders(view, "CheckmarkView/checked.png"); } @Test @@ -62,7 +62,7 @@ public class CheckmarkViewTest extends ViewTest habit.repetitions.toggle(DateHelper.getStartOfToday()); view.refreshData(); - assertRenders(view, "Views/CheckmarkView/unchecked.png"); + assertRenders(view, "CheckmarkView/unchecked.png"); } @Test @@ -75,13 +75,13 @@ public class CheckmarkViewTest extends ViewTest habit.repetitions.toggle(today - 2 * day); view.refreshData(); - assertRenders(view, "Views/CheckmarkView/implicitly_checked.png"); + assertRenders(view, "CheckmarkView/implicitly_checked.png"); } @Test public void render_largeSize() throws IOException { measureView(dpToPixels(300), dpToPixels(300), view); - assertRenders(view, "Views/CheckmarkView/large_size.png"); + assertRenders(view, "CheckmarkView/large_size.png"); } } diff --git a/app/src/androidTest/java/org/isoron/uhabits/unit/views/RingViewTest.java b/app/src/androidTest/java/org/isoron/uhabits/unit/views/RingViewTest.java index 06f2ac901..9ac6c1b5b 100644 --- a/app/src/androidTest/java/org/isoron/uhabits/unit/views/RingViewTest.java +++ b/app/src/androidTest/java/org/isoron/uhabits/unit/views/RingViewTest.java @@ -52,7 +52,7 @@ public class RingViewTest extends ViewTest public void render_base() throws IOException { measureView(dpToPixels(100), dpToPixels(100), view); - assertRenders(view, "Views/RingView/render.png"); + assertRenders(view, "RingView/render.png"); } @Test @@ -61,7 +61,7 @@ public class RingViewTest extends ViewTest view.setLabel("The quick brown fox jumps over the lazy fox"); measureView(dpToPixels(100), dpToPixels(100), view); - assertRenders(view, "Views/RingView/renderLongLabel.png"); + assertRenders(view, "RingView/renderLongLabel.png"); } @Test @@ -73,6 +73,6 @@ public class RingViewTest extends ViewTest view.setColor(ColorHelper.palette[5]); measureView(dpToPixels(200), dpToPixels(200), view); - assertRenders(view, "Views/RingView/renderDifferentParams.png"); + assertRenders(view, "RingView/renderDifferentParams.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 45344a560..8047435c6 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 @@ -37,7 +37,8 @@ import static junit.framework.Assert.fail; public class ViewTest { - protected static final int SIMILARITY_CUTOFF = 6000; + protected static final double SIMILARITY_CUTOFF = 0.02; + public static final int HISTOGRAM_BIN_SIZE = 8; protected Context testContext; protected Context targetContext; @@ -61,37 +62,39 @@ public class ViewTest protected void assertRenders(View view, String expectedImagePath) throws IOException { StringBuilder errorMessage = new StringBuilder(); + expectedImagePath = getVersionedViewAssetPath(expectedImagePath); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); + Bitmap actual = view.getDrawingCache(); + Bitmap expected = getBitmapFromAssets(expectedImagePath); - Bitmap actualBitmap = view.getDrawingCache(); - Bitmap expectedBitmap = getBitmapFromAssets(expectedImagePath); - Bitmap scaledExpectedBitmap = Bitmap.createScaledBitmap(expectedBitmap, - actualBitmap.getWidth(), actualBitmap.getHeight(), false); + int width = actual.getWidth(); + int height = actual.getHeight(); + Bitmap scaledExpected = Bitmap.createScaledBitmap(expected, width, height, true); + double distance; boolean similarEnough = true; - long distance; - if ((distance = compareHistograms(getHistogram(actualBitmap), getHistogram( - scaledExpectedBitmap))) > SIMILARITY_CUTOFF) + if ((distance = compareHistograms(getHistogram(actual), getHistogram(scaledExpected))) > SIMILARITY_CUTOFF) { similarEnough = false; errorMessage.append(String.format( - "Rendered image has wrong histogram (distance=%d). ", + "Rendered image has wrong histogram (distance=%f). ", distance)); } if(!similarEnough) { - String path = saveBitmap(expectedImagePath, actualBitmap); + saveBitmap(expectedImagePath, ".scaledExpected", scaledExpected); + String path = saveBitmap(expectedImagePath, ".actual", actual); errorMessage.append(String.format("Actual rendered image " + "saved to %s", path)); fail(errorMessage.toString()); } - actualBitmap.recycle(); - expectedBitmap.recycle(); - scaledExpectedBitmap.recycle(); + actual.recycle(); + expected.recycle(); + scaledExpected.recycle(); } private Bitmap getBitmapFromAssets(String path) throws IOException @@ -100,11 +103,35 @@ public class ViewTest return BitmapFactory.decodeStream(stream); } - private String saveBitmap(String filename, Bitmap bitmap) + private String getVersionedViewAssetPath(String path) + { + String result = null; + + if (android.os.Build.VERSION.SDK_INT >= 21) + { + try + { + String vpath = "views-v21/" + path; + testContext.getAssets().open(vpath); + result = vpath; + } + catch (IOException e) + { + // ignored + } + } + + if(result == null) + result = "views/" + path; + + return result; + } + + private String saveBitmap(String filename, String suffix, Bitmap bitmap) throws IOException { String absolutePath = String.format("%s/Failed/%s", targetContext.getExternalCacheDir(), - filename.replaceAll("\\.png$", ".actual.png")); + filename.replaceAll("\\.png$", suffix + ".png")); new File(absolutePath).getParentFile().mkdirs(); FileOutputStream out = new FileOutputStream(absolutePath); bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); @@ -114,7 +141,7 @@ public class ViewTest private int[][] getHistogram(Bitmap bitmap) { - int histogram[][] = new int[4][256]; + int histogram[][] = new int[4][256 / HISTOGRAM_BIN_SIZE]; for(int x = 0; x < bitmap.getWidth(); x++) { @@ -128,29 +155,35 @@ public class ViewTest (color ) & 0xff //blue }; - histogram[0][argb[0]]++; - histogram[1][argb[1]]++; - histogram[2][argb[2]]++; - histogram[3][argb[3]]++; + histogram[0][argb[0] / HISTOGRAM_BIN_SIZE]++; + histogram[1][argb[1] / HISTOGRAM_BIN_SIZE]++; + histogram[2][argb[2] / HISTOGRAM_BIN_SIZE]++; + histogram[3][argb[3] / HISTOGRAM_BIN_SIZE]++; } } return histogram; } - private long compareHistograms(int[][] actualHistogram, int[][] expectedHistogram) + private double compareHistograms(int[][] actualHistogram, int[][] expectedHistogram) { - long distance = 0; + long diff = 0; + long total = 0; - for(int i = 0; i < 255; i ++) + for(int i = 0; i < 256 / HISTOGRAM_BIN_SIZE; i ++) { - distance += Math.abs(actualHistogram[0][i] - expectedHistogram[0][i]); - distance += Math.abs(actualHistogram[1][i] - expectedHistogram[1][i]); - distance += Math.abs(actualHistogram[2][i] - expectedHistogram[2][i]); - distance += Math.abs(actualHistogram[3][i] - expectedHistogram[3][i]); + diff += Math.abs(actualHistogram[0][i] - expectedHistogram[0][i]); + diff += Math.abs(actualHistogram[1][i] - expectedHistogram[1][i]); + diff += Math.abs(actualHistogram[2][i] - expectedHistogram[2][i]); + diff += Math.abs(actualHistogram[3][i] - expectedHistogram[3][i]); + + total += actualHistogram[0][i]; + total += actualHistogram[1][i]; + total += actualHistogram[2][i]; + total += actualHistogram[3][i]; } - return distance; + return (double) diff / total / 2; } protected int dpToPixels(int dp) From 6838a0f2d3a743842af7a1ade057f2308b562c04 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Sun, 27 Mar 2016 06:40:56 -0400 Subject: [PATCH 7/9] Restore missing asset --- app/src/androidTest/assets/icon.png | Bin 0 -> 49120 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 app/src/androidTest/assets/icon.png diff --git a/app/src/androidTest/assets/icon.png b/app/src/androidTest/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7907954db759e36b4bacfb99e9c15b9266083b0a GIT binary patch literal 49120 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 Date: Sun, 27 Mar 2016 08:29:36 -0400 Subject: [PATCH 8/9] Copy failed generated images to CircleCI artifacts folder --- circle.yml | 6 ++---- run_tests | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 4 deletions(-) create mode 100755 run_tests diff --git a/circle.yml b/circle.yml index 84be75a54..62ea01de5 100644 --- a/circle.yml +++ b/circle.yml @@ -11,8 +11,6 @@ test: parallel: true - circle-android wait-for-boot - adb shell input keyevent 82 - - ./gradlew -PdisablePreDex connectedAndroidTest + - ./run_tests - cp -r app/build/outputs $CIRCLE_ARTIFACTS || echo ok - - cp -r app/build/reports/androidTests/connected/* $CIRCLE_TEST_REPORTS || echo ok - - adb logcat -d > $CIRCLE_TEST_REPORTS/logcat.txt - - bash <(curl -s https://codecov.io/bash) + - bash <(curl -s https://codecov.io/bash) \ No newline at end of file diff --git a/run_tests b/run_tests new file mode 100755 index 000000000..2058d04ee --- /dev/null +++ b/run_tests @@ -0,0 +1,53 @@ +#!/bin/bash +PACKAGE_NAME=org.isoron.uhabits +OUTPUT_DIR=app/build/outputs +LOG=${OUTPUT_DIR}/test.log + +info() { + local COLOR='\033[1;32m' + local NC='\033[0m' + echo -e " $COLOR*$NC $1" +} + +info "Cleaning output directory..." +rm -rf ${OUTPUT_DIR} +mkdir -p ${OUTPUT_DIR} + +info "Building and installing APK..." +./gradlew assembleDebug assembleAndroidTest >> $LOG 2>> $LOG || exit 1 +adb install -r ${OUTPUT_DIR}/apk/app-debug.apk >> $LOG 2>> $LOG || exit 1 +adb install -r ${OUTPUT_DIR}/apk/app-debug-androidTest-unaligned.apk \ + >> $LOG 2>> $LOG || exit 1 + +info "Granting permission to disable animations..." +adb shell pm grant org.isoron.uhabits android.permission.SET_ANIMATION_SCALE \ + >> $LOG 2>> $LOG || exit 1 + +info "Running tests..." +adb shell am instrument \ + -e coverage true $* \ + -w ${PACKAGE_NAME}.test/android.support.test.runner.AndroidJUnitRunner \ + | tee ${OUTPUT_DIR}/runner.txt \ + | tee -a $LOG +grep -q "FAILURES\!\!\!" ${OUTPUT_DIR}/runner.txt && failed=1 + +info "Fetching failed generated files..." +mkdir -p ${OUTPUT_DIR}/failed +adb pull /sdcard/Android/data/${PACKAGE_NAME}/cache/Failed \ + ${OUTPUT_DIR}/failed >> $LOG 2>> $LOG +adb shell rm -r /sdcard/Android/data/${PACKAGE_NAME}/cache/ >> $LOG 2>> $LOG + +info "Fetching logcat..." +adb logcat -d > ${OUTPUT_DIR}/logcat.txt + +info "Building coverage report..." +mkdir -p ${OUTPUT_DIR}/code-coverage/connected/ +adb pull /data/data/${PACKAGE_NAME}/files/coverage.ec \ + ${OUTPUT_DIR}/code-coverage/connected/ >> $LOG 2>> $LOG +./gradlew app:createDebugCoverageReport \ + -x app:connectedDebugAndroidTest >> $LOG 2>> $LOG + +info "Uninstalling test APK..." +adb uninstall ${PACKAGE_NAME}.test >> $LOG 2>> $LOG + +exit $failed From c0911161057203c8ddf4c4bfb8786e0fe566bc71 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Mon, 28 Mar 2016 20:06:32 -0400 Subject: [PATCH 9/9] Compute padding/margins more precisely on CheckmarkView --- .../org/isoron/uhabits/views/CheckmarkView.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) 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 ebdb2df27..5455e974d 100644 --- a/app/src/main/java/org/isoron/uhabits/views/CheckmarkView.java +++ b/app/src/main/java/org/isoron/uhabits/views/CheckmarkView.java @@ -30,6 +30,7 @@ import android.text.Layout; import android.text.StaticLayout; import android.text.TextPaint; import android.util.AttributeSet; +import android.util.Log; import android.view.View; import org.isoron.uhabits.R; @@ -48,9 +49,9 @@ public class CheckmarkView extends View private int width; private int height; - private int leftMargin; - private int topMargin; - private int padding; + private float leftMargin; + private float topMargin; + private float padding; private String label; private String fa_check; @@ -150,8 +151,6 @@ public class CheckmarkView extends View pIcon.setTextSize(width * 0.5f); pIcon.getTextBounds(text, 0, 1, rect); -// canvas.drawLine(0, 0.67f * height, width, 0.67f * height, pIcon); - int y = (int) ((0.67f * height - rect.bottom - rect.top) / 2); canvas.drawText(text, width / 2, y, pIcon); } @@ -186,8 +185,8 @@ public class CheckmarkView extends View this.width = getMeasuredWidth(); this.height = getMeasuredHeight(); - leftMargin = (int) (width * 0.015); - topMargin = (int) (height * 0.015); + leftMargin = (width * 0.015f); + topMargin = (height * 0.015f); padding = 8 * leftMargin; textPaint.setTextSize(0.15f * width); @@ -203,7 +202,8 @@ public class CheckmarkView extends View this.label = habit.name; textPaint.setColor(Color.WHITE); - labelLayout = new StaticLayout(label, textPaint, width - 2 * leftMargin - 2 * padding, + labelLayout = new StaticLayout(label, textPaint, + (int) (width - 2 * leftMargin - 2 * padding), Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false); }