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"