+{
+ /* Since TwoStatePreference is ICS+ this class allows CheckBoxPreference asserts on pre-ICS. */
+ public CheckBoxPreferenceAssert(CheckBoxPreference actual) {
+ super(actual, CheckBoxPreferenceAssert.class);
+ }
+}
diff --git a/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/DialogPreferenceAssert.java b/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/DialogPreferenceAssert.java
new file mode 100644
index 0000000..d4155a4
--- /dev/null
+++ b/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/DialogPreferenceAssert.java
@@ -0,0 +1,16 @@
+// Copyright 2016 Square, Inc.
+package org.assertj.android.preference.v7.api.preference;
+
+import android.support.v7.preference.DialogPreference;
+
+/**
+ * Assertions for {@link DialogPreference} instances.
+ *
+ * This class is final. To extend use {@link AbstractDialogPreferenceAssert}.
+ */
+public final class DialogPreferenceAssert
+ extends AbstractDialogPreferenceAssert {
+ public DialogPreferenceAssert(DialogPreference actual) {
+ super(actual, DialogPreferenceAssert.class);
+ }
+}
diff --git a/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/EditTextPreferenceAssert.java b/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/EditTextPreferenceAssert.java
new file mode 100644
index 0000000..43310b4
--- /dev/null
+++ b/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/EditTextPreferenceAssert.java
@@ -0,0 +1,22 @@
+// Copyright 2016 Square, Inc.
+package org.assertj.android.preference.v7.api.preference;
+
+import android.support.v7.preference.EditTextPreference;
+import static org.assertj.core.api.Assertions.assertThat;
+
+/** Assertions for {@link EditTextPreference} instances. */
+public class EditTextPreferenceAssert
+ extends AbstractDialogPreferenceAssert {
+ public EditTextPreferenceAssert(EditTextPreference actual) {
+ super(actual, EditTextPreferenceAssert.class);
+ }
+
+ public EditTextPreferenceAssert hasText(String text) {
+ isNotNull();
+ String actualText = actual.getText();
+ assertThat(actualText) //
+ .overridingErrorMessage("Expected text <%s> but was <%s>.", text, actualText) //
+ .isEqualTo(text);
+ return this;
+ }
+}
diff --git a/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/ListPreferenceAssert.java b/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/ListPreferenceAssert.java
new file mode 100644
index 0000000..dd7d7e7
--- /dev/null
+++ b/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/ListPreferenceAssert.java
@@ -0,0 +1,54 @@
+// Copyright 2016 Square, Inc.
+package org.assertj.android.preference.v7.api.preference;
+
+import android.support.v7.preference.ListPreference;
+import static org.assertj.core.api.Assertions.assertThat;
+
+/** Assertions for {@link ListPreference} instances. */
+public class ListPreferenceAssert
+ extends AbstractDialogPreferenceAssert {
+ public ListPreferenceAssert(ListPreference actual) {
+ super(actual, ListPreferenceAssert.class);
+ }
+
+ public ListPreferenceAssert hasEntries(CharSequence... entries) {
+ isNotNull();
+ CharSequence[] actualEntries = actual.getEntries();
+ assertThat(actualEntries) //
+ .overridingErrorMessage("Expected entries <%s> but was <%s>.", entries, actualEntries) //
+ .isEqualTo(entries);
+ return this;
+ }
+
+ public ListPreferenceAssert hasEntry(CharSequence entry) {
+ isNotNull();
+ CharSequence actualEntry = actual.getEntry();
+ assertThat(actualEntry) //
+ .overridingErrorMessage("Expected entry <%s> but was <%s>.", entry, actualEntry) //
+ .isEqualTo(entry);
+ return this;
+ }
+
+ public ListPreferenceAssert hasEntry(int resId) {
+ isNotNull();
+ return hasEntry(actual.getContext().getString(resId));
+ }
+
+ public ListPreferenceAssert hasEntryValues(CharSequence... values) {
+ isNotNull();
+ CharSequence[] actualValues = actual.getEntryValues();
+ assertThat(actualValues) //
+ .overridingErrorMessage("Expected entry values <%s> but was <%s>.", values, actualValues) //
+ .isEqualTo(values);
+ return this;
+ }
+
+ public ListPreferenceAssert hasValue(String value) {
+ isNotNull();
+ String actualValue = actual.getValue();
+ assertThat(actualValue) //
+ .overridingErrorMessage("Expected value <%s> but was <%s>.", value, actualValue) //
+ .isEqualTo(value);
+ return this;
+ }
+}
diff --git a/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/PreferenceAssert.java b/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/PreferenceAssert.java
new file mode 100644
index 0000000..bff5cf7
--- /dev/null
+++ b/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/PreferenceAssert.java
@@ -0,0 +1,15 @@
+// Copyright 2016 Square, Inc.
+package org.assertj.android.preference.v7.api.preference;
+
+import android.support.v7.preference.Preference;
+
+/**
+ * Assertions for {@link Preference} instances.
+ *
+ * This class is final. To extend use {@link AbstractPreferenceAssert}.
+ */
+public final class PreferenceAssert extends AbstractPreferenceAssert {
+ public PreferenceAssert(Preference actual) {
+ super(actual, PreferenceAssert.class);
+ }
+}
diff --git a/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/PreferenceGroupAssert.java b/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/PreferenceGroupAssert.java
new file mode 100644
index 0000000..90bcc5c
--- /dev/null
+++ b/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/PreferenceGroupAssert.java
@@ -0,0 +1,16 @@
+// Copyright 2016 Square, Inc.
+package org.assertj.android.preference.v7.api.preference;
+
+import android.support.v7.preference.PreferenceGroup;
+
+/**
+ * Assertions for {@link PreferenceGroup} instances.
+ *
+ * This class is final. To extend use {@link AbstractPreferenceGroupAssert}.
+ */
+public final class PreferenceGroupAssert
+ extends AbstractPreferenceGroupAssert {
+ public PreferenceGroupAssert(PreferenceGroup actual) {
+ super(actual, PreferenceGroupAssert.class);
+ }
+}
diff --git a/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/SwitchPreferenceCompatAssert.java b/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/SwitchPreferenceCompatAssert.java
new file mode 100644
index 0000000..e8d968d
--- /dev/null
+++ b/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/SwitchPreferenceCompatAssert.java
@@ -0,0 +1,44 @@
+// Copyright 2016 Square, Inc.
+package org.assertj.android.preference.v7.api.preference;
+
+import android.annotation.TargetApi;
+import android.support.v7.preference.SwitchPreferenceCompat;
+import static android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH;
+import static org.assertj.core.api.Assertions.assertThat;
+
+/** Assertions for {@link SwitchPreferenceCompat} instances. */
+@TargetApi(ICE_CREAM_SANDWICH)
+public class SwitchPreferenceCompatAssert
+ extends AbstractTwoStatePreference {
+ public SwitchPreferenceCompatAssert(SwitchPreferenceCompat actual) {
+ super(actual, SwitchPreferenceCompatAssert.class);
+ }
+
+ public SwitchPreferenceCompatAssert hasSwitchTextOff(CharSequence text) {
+ isNotNull();
+ CharSequence actualText = actual.getSwitchTextOff();
+ assertThat(actualText) //
+ .overridingErrorMessage("Expected switch off text <%s> but was <%s>.", text, actualText) //
+ .isEqualTo(text);
+ return this;
+ }
+
+ public SwitchPreferenceCompatAssert hasSwitchTextOff(int resId) {
+ isNotNull();
+ return hasSwitchTextOff(actual.getContext().getString(resId));
+ }
+
+ public SwitchPreferenceCompatAssert hasSwitchTextOn(CharSequence text) {
+ isNotNull();
+ CharSequence actualText = actual.getSwitchTextOn();
+ assertThat(actualText) //
+ .overridingErrorMessage("Expected switch on text <%s> but was <%s>.", text, actualText) //
+ .isEqualTo(text);
+ return this;
+ }
+
+ public SwitchPreferenceCompatAssert hasSwitchTextOn(int resId) {
+ isNotNull();
+ return hasSwitchTextOn(actual.getContext().getString(resId));
+ }
+}
diff --git a/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/TwoStatePreferenceAssert.java b/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/TwoStatePreferenceAssert.java
new file mode 100644
index 0000000..1bba50e
--- /dev/null
+++ b/assertj-android-preference-v7/src/main/java/org/assertj/android/preference/v7/api/preference/TwoStatePreferenceAssert.java
@@ -0,0 +1,17 @@
+// Copyright 2016 Square, Inc.
+package org.assertj.android.preference.v7.api.preference;
+
+import android.support.v7.preference.TwoStatePreference;
+
+/**
+ * Assertions for {@link TwoStatePreference} instances.
+ *
+ * This class is final. To extend use {@link AbstractTwoStatePreference}.
+ */
+public final class TwoStatePreferenceAssert
+ extends AbstractTwoStatePreference
+{
+ public TwoStatePreferenceAssert(TwoStatePreference actual) {
+ super(actual, TwoStatePreferenceAssert.class);
+ }
+}
diff --git a/assertj-android/src/main/java/org/assertj/android/api/preference/AbstractDialogPreferenceAssert.java b/assertj-android/src/main/java/org/assertj/android/api/preference/AbstractDialogPreferenceAssert.java
index ca0df39..4f93e00 100644
--- a/assertj-android/src/main/java/org/assertj/android/api/preference/AbstractDialogPreferenceAssert.java
+++ b/assertj-android/src/main/java/org/assertj/android/api/preference/AbstractDialogPreferenceAssert.java
@@ -5,7 +5,6 @@
import android.app.Dialog;
import android.graphics.drawable.Drawable;
import android.preference.DialogPreference;
-
import static android.os.Build.VERSION_CODES.HONEYCOMB;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/build.gradle b/build.gradle
index 312be1f..66d6a71 100644
--- a/build.gradle
+++ b/build.gradle
@@ -31,6 +31,7 @@ ext {
supportMediaRouter = 'com.android.support:mediarouter-v7:25.0.1'
supportPalette = 'com.android.support:palette-v7:25.0.1'
supportRecyclerView = 'com.android.support:recyclerview-v7:25.0.1'
+ supportPreference = 'com.android.support:preference-v7:25.0.1'
playServices = 'com.google.android.gms:play-services:7.5.0'
diff --git a/settings.gradle b/settings.gradle
index 286de0f..febd69c 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -10,3 +10,4 @@ include ':assertj-android-palette-v7'
include ':assertj-android-play-services'
include ':assertj-android-recyclerview-v7'
include ':assertj-android-support-v4'
+include ':assertj-android-preference-v7'