From acf89adc1ef92cc06dfedc02eb46797a01d1376e Mon Sep 17 00:00:00 2001 From: Jake Wharton Date: Fri, 13 Oct 2017 00:50:29 -0400 Subject: [PATCH] Port more resource binding to functional tests. --- .../functional/BindBitmapTest.java | 33 +++++++++++ .../butterknife/functional/BindColorTest.java | 22 ++++++- .../functional/BindDrawableTest.java | 34 +++++++++++ .../src/androidTest/res/color/colors.xml | 11 ++++ .../src/androidTest/res/drawable/circle.xml | 13 ++++ .../src/androidTest/res/drawable/pixel.png | Bin 0 -> 925 bytes .../test/java/butterknife/BindBitmapTest.java | 56 +----------------- .../test/java/butterknife/BindColorTest.java | 52 ---------------- .../java/butterknife/BindDrawableTest.java | 54 +---------------- 9 files changed, 112 insertions(+), 163 deletions(-) create mode 100644 butterknife/src/androidTest/java/butterknife/functional/BindBitmapTest.java create mode 100644 butterknife/src/androidTest/java/butterknife/functional/BindDrawableTest.java create mode 100644 butterknife/src/androidTest/res/color/colors.xml create mode 100644 butterknife/src/androidTest/res/drawable/circle.xml create mode 100644 butterknife/src/androidTest/res/drawable/pixel.png diff --git a/butterknife/src/androidTest/java/butterknife/functional/BindBitmapTest.java b/butterknife/src/androidTest/java/butterknife/functional/BindBitmapTest.java new file mode 100644 index 000000000..b3517fc87 --- /dev/null +++ b/butterknife/src/androidTest/java/butterknife/functional/BindBitmapTest.java @@ -0,0 +1,33 @@ +package butterknife.functional; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.support.test.InstrumentationRegistry; +import butterknife.BindBitmap; +import butterknife.BindBool; +import butterknife.Unbinder; +import butterknife.test.R; +import org.junit.Test; + +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertTrue; + +public final class BindBitmapTest { + private final Context context = InstrumentationRegistry.getContext(); + + static class Target { + @BindBitmap(R.drawable.pixel) Bitmap actual; + } + + @Test public void asBitmap() { + Target target = new Target(); + Bitmap expected = BitmapFactory.decodeResource(context.getResources(), R.drawable.pixel); + + Unbinder unbinder = new BindBitmapTest$Target_ViewBinding(target, context); + assertTrue(target.actual.sameAs(expected)); + + unbinder.unbind(); + assertTrue(target.actual.sameAs(expected)); + } +} diff --git a/butterknife/src/androidTest/java/butterknife/functional/BindColorTest.java b/butterknife/src/androidTest/java/butterknife/functional/BindColorTest.java index 786e08e82..12c8d020e 100644 --- a/butterknife/src/androidTest/java/butterknife/functional/BindColorTest.java +++ b/butterknife/src/androidTest/java/butterknife/functional/BindColorTest.java @@ -1,6 +1,7 @@ package butterknife.functional; import android.content.Context; +import android.content.res.ColorStateList; import android.support.test.InstrumentationRegistry; import butterknife.BindColor; import butterknife.Unbinder; @@ -12,18 +13,33 @@ public final class BindColorTest { private final Context context = InstrumentationRegistry.getContext(); - static class Target { + static class IntTarget { @BindColor(R.color.red) int actual; } @Test public void asInt() { - Target target = new Target(); + IntTarget target = new IntTarget(); int expected = context.getResources().getColor(R.color.red); - Unbinder unbinder = new BindColorTest$Target_ViewBinding(target, context); + Unbinder unbinder = new BindColorTest$IntTarget_ViewBinding(target, context); assertThat(target.actual).isEqualTo(expected); unbinder.unbind(); assertThat(target.actual).isEqualTo(expected); } + + static class ColorStateListTarget { + @BindColor(R.color.colors) ColorStateList actual; + } + + @Test public void asColorStateList() { + ColorStateListTarget target = new ColorStateListTarget(); + ColorStateList expected = context.getResources().getColorStateList(R.color.colors); + + Unbinder unbinder = new BindColorTest$ColorStateListTarget_ViewBinding(target, context); + assertThat(target.actual.toString()).isEqualTo(expected.toString()); + + unbinder.unbind(); + assertThat(target.actual.toString()).isEqualTo(expected.toString()); + } } diff --git a/butterknife/src/androidTest/java/butterknife/functional/BindDrawableTest.java b/butterknife/src/androidTest/java/butterknife/functional/BindDrawableTest.java new file mode 100644 index 000000000..88d236875 --- /dev/null +++ b/butterknife/src/androidTest/java/butterknife/functional/BindDrawableTest.java @@ -0,0 +1,34 @@ +package butterknife.functional; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.drawable.Drawable; +import android.support.test.InstrumentationRegistry; +import butterknife.BindBitmap; +import butterknife.BindDrawable; +import butterknife.Unbinder; +import butterknife.test.R; +import org.junit.Test; + +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assert.assertTrue; + +public final class BindDrawableTest { + private final Context context = InstrumentationRegistry.getContext(); + + static class Target { + @BindDrawable(R.drawable.circle) Drawable actual; + } + + @Test public void asDrawable() { + Target target = new Target(); + Drawable expected = context.getResources().getDrawable(R.drawable.circle); + + Unbinder unbinder = new BindDrawableTest$Target_ViewBinding(target, context); + assertThat(target.actual.getConstantState()).isEqualTo(expected.getConstantState()); + + unbinder.unbind(); + assertThat(target.actual.getConstantState()).isEqualTo(expected.getConstantState()); + } +} diff --git a/butterknife/src/androidTest/res/color/colors.xml b/butterknife/src/androidTest/res/color/colors.xml new file mode 100644 index 000000000..2af4b135a --- /dev/null +++ b/butterknife/src/androidTest/res/color/colors.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/butterknife/src/androidTest/res/drawable/circle.xml b/butterknife/src/androidTest/res/drawable/circle.xml new file mode 100644 index 000000000..54496c5b3 --- /dev/null +++ b/butterknife/src/androidTest/res/drawable/circle.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/butterknife/src/androidTest/res/drawable/pixel.png b/butterknife/src/androidTest/res/drawable/pixel.png new file mode 100644 index 0000000000000000000000000000000000000000..9644db325e03fc80af3d4be43159bc42349e54e8 GIT binary patch literal 925 zcmaJ=&yJHo9A?)T%_bYqdYZ6%&_tlq7Fs67TA{ck(ll)odvprZmULkdrb2r%-uC8m zc<=>0c=qB0c-TkKtEXLuZs~fk5@2S2`M&S>cP{$9m&Zqsjs!tCcFwE;Uk{4!{vrQ= z%!ZeIdC0nBHl$OQ;e-espH2vHLOde_g8kLoZ=@v%cTR)Rn2p_6$fKc*3yhqHF=q=x ztDVQ#TMz~&WEMn*`0LA85d^*=zE<6e8=GVvoUIcwT=z!adg1B5*nS3DIpP8#VHo7$ zd6c5u5I4Gr?+ddcf(?W%4DlwYvD*hGO$bosn&ed=1ezwpx~ggLDX3OpRjKe-lVBaG z8mczH_7SbhQNRI3t4Na-qKIG3XIq*Sm- z>Lo$U0vdrr5l`rn86uDLCWSEG$wuk6OuS%9j$;MNl_I4Q=(_)hhT#sKvH`h`_n*S) zXcZG>KvKF)Jl?qJN#QC+Wlvwp@RIEX}=Kg$JV)t^KRjrHRi^vE2fwYxnr2c;Hx_QT}7{`}(^5{QZG&_v-LU`hM}VxG+w)XMKM0=EEPyOdaz8 literal 0 HcmV?d00001 diff --git a/butterknife/src/test/java/butterknife/BindBitmapTest.java b/butterknife/src/test/java/butterknife/BindBitmapTest.java index 84d371f0b..4a1e42a61 100644 --- a/butterknife/src/test/java/butterknife/BindBitmapTest.java +++ b/butterknife/src/test/java/butterknife/BindBitmapTest.java @@ -8,61 +8,7 @@ import static com.google.common.truth.Truth.assertAbout; import static com.google.testing.compile.JavaSourceSubjectFactory.javaSource; -public class BindBitmapTest { - @Test public void simple() { - JavaFileObject source = JavaFileObjects.forSourceString("test.Test", "" - + "package test;\n" - + "import android.graphics.Bitmap;\n" - + "import butterknife.BindBitmap;\n" - + "public class Test {\n" - + " @BindBitmap(1) Bitmap one;\n" - + "}" - ); - - JavaFileObject bindingSource = JavaFileObjects.forSourceString("test/Test_ViewBinding", "" - + "// Generated code from Butter Knife. Do not modify!\n" - + "package test;\n" - + "import android.content.Context;\n" - + "import android.content.res.Resources;\n" - + "import android.graphics.BitmapFactory;\n" - + "import android.support.annotation.CallSuper;\n" - + "import android.support.annotation.UiThread;\n" - + "import android.view.View;\n" - + "import butterknife.Unbinder;\n" - + "import java.lang.Deprecated;\n" - + "import java.lang.Override;\n" - + "import java.lang.SuppressWarnings;\n" - + "public class Test_ViewBinding implements Unbinder {\n" - + " /**\n" - + " * @deprecated Use {@link #Test_ViewBinding(Test, Context)} for direct creation.\n" - + " * Only present for runtime invocation through {@code ButterKnife.bind()}.\n" - + " */\n" - + " @Deprecated\n" - + " @UiThread\n" - + " public Test_ViewBinding(Test target, View source) {\n" - + " this(target, source.getContext());\n" - + " }\n" - + " @UiThread\n" - + " @SuppressWarnings(\"ResourceType\")\n" - + " public Test_ViewBinding(Test target, Context context) {\n" - + " Resources res = context.getResources();\n" - + " target.one = BitmapFactory.decodeResource(res, 1);\n" - + " }\n" - + " @Override\n" - + " @CallSuper\n" - + " public void unbind() {\n" - + " }\n" - + "}" - ); - - assertAbout(javaSource()).that(source) - .withCompilerOptions("-Xlint:-processing") - .processedWith(new ButterKnifeProcessor()) - .compilesWithoutWarnings() - .and() - .generatesSources(bindingSource); - } - +public final class BindBitmapTest { @Test public void typeMustBeBitmap() { JavaFileObject source = JavaFileObjects.forSourceString("test.Test", "" + "package test;\n" diff --git a/butterknife/src/test/java/butterknife/BindColorTest.java b/butterknife/src/test/java/butterknife/BindColorTest.java index 07d69b118..558e06ec6 100644 --- a/butterknife/src/test/java/butterknife/BindColorTest.java +++ b/butterknife/src/test/java/butterknife/BindColorTest.java @@ -59,58 +59,6 @@ public final class BindColorTest { .generatesSources(bindingSource); } - @Test public void simpleColorStateList() { - JavaFileObject source = JavaFileObjects.forSourceString("test.Test", "" - + "package test;\n" - + "import android.content.res.ColorStateList;\n" - + "import butterknife.BindColor;\n" - + "public class Test {\n" - + " @BindColor(1) ColorStateList one;\n" - +"}" - ); - - JavaFileObject bindingSource = JavaFileObjects.forSourceString("test/Test_ViewBinding", "" - + "// Generated code from Butter Knife. Do not modify!\n" - + "package test;\n" - + "import android.content.Context;\n" - + "import android.support.annotation.CallSuper;\n" - + "import android.support.annotation.UiThread;\n" - + "import android.support.v4.content.ContextCompat;\n" - + "import android.view.View;\n" - + "import butterknife.Unbinder;\n" - + "import java.lang.Deprecated;\n" - + "import java.lang.Override;\n" - + "import java.lang.SuppressWarnings;\n" - + "public class Test_ViewBinding implements Unbinder {\n" - + " /**\n" - + " * @deprecated Use {@link #Test_ViewBinding(Test, Context)} for direct creation.\n" - + " * Only present for runtime invocation through {@code ButterKnife.bind()}.\n" - + " */\n" - + " @Deprecated\n" - + " @UiThread\n" - + " public Test_ViewBinding(Test target, View source) {\n" - + " this(target, source.getContext());\n" - + " }\n" - + " @UiThread\n" - + " @SuppressWarnings(\"ResourceType\")\n" - + " public Test_ViewBinding(Test target, Context context) {\n" - + " target.one = ContextCompat.getColorStateList(context, 1);\n" - + " }\n" - + " @Override\n" - + " @CallSuper\n" - + " public void unbind() {\n" - + " }\n" - + "}" - ); - - assertAbout(javaSource()).that(source) - .withCompilerOptions("-Xlint:-processing") - .processedWith(new ButterKnifeProcessor()) - .compilesWithoutWarnings() - .and() - .generatesSources(bindingSource); - } - @Test public void simpleColorStateListSdk23() { JavaFileObject source = JavaFileObjects.forSourceString("test.Test", "" + "package test;\n" diff --git a/butterknife/src/test/java/butterknife/BindDrawableTest.java b/butterknife/src/test/java/butterknife/BindDrawableTest.java index 14044bf41..742fa1c54 100644 --- a/butterknife/src/test/java/butterknife/BindDrawableTest.java +++ b/butterknife/src/test/java/butterknife/BindDrawableTest.java @@ -8,59 +8,7 @@ import static com.google.common.truth.Truth.assertAbout; import static com.google.testing.compile.JavaSourceSubjectFactory.javaSource; -public class BindDrawableTest { - @Test public void simple() { - JavaFileObject source = JavaFileObjects.forSourceString("test.Test", "" - + "package test;\n" - + "import android.graphics.drawable.Drawable;\n" - + "import butterknife.BindDrawable;\n" - + "public class Test {\n" - + " @BindDrawable(1) Drawable one;\n" - + "}" - ); - - JavaFileObject bindingSource = JavaFileObjects.forSourceString("test/Test_ViewBinding", "" - + "// Generated code from Butter Knife. Do not modify!\n" - + "package test;\n" - + "import android.content.Context;\n" - + "import android.support.annotation.CallSuper;\n" - + "import android.support.annotation.UiThread;\n" - + "import android.support.v4.content.ContextCompat;\n" - + "import android.view.View;\n" - + "import butterknife.Unbinder;\n" - + "import java.lang.Deprecated;\n" - + "import java.lang.Override;\n" - + "import java.lang.SuppressWarnings;\n" - + "public class Test_ViewBinding implements Unbinder {\n" - + " /**\n" - + " * @deprecated Use {@link #Test_ViewBinding(Test, Context)} for direct creation.\n" - + " * Only present for runtime invocation through {@code ButterKnife.bind()}.\n" - + " */\n" - + " @Deprecated\n" - + " @UiThread\n" - + " public Test_ViewBinding(Test target, View source) {\n" - + " this(target, source.getContext());\n" - + " }\n" - + " @UiThread\n" - + " @SuppressWarnings(\"ResourceType\")\n" - + " public Test_ViewBinding(Test target, Context context) {\n" - + " target.one = ContextCompat.getDrawable(context, 1);\n" - + " }\n" - + " @Override\n" - + " @CallSuper\n" - + " public void unbind() {\n" - + " }\n" - + "}" - ); - - assertAbout(javaSource()).that(source) - .withCompilerOptions("-Xlint:-processing") - .processedWith(new ButterKnifeProcessor()) - .compilesWithoutWarnings() - .and() - .generatesSources(bindingSource); - } - +public final class BindDrawableTest { @Test public void simpleSdk21() { JavaFileObject source = JavaFileObjects.forSourceString("test.Test", "" + "package test;\n"