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 000000000..9644db325 Binary files /dev/null and b/butterknife/src/androidTest/res/drawable/pixel.png differ 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"