diff --git a/build.gradle b/build.gradle index 05e609d..313d4f2 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ ext.deps = [rxjava : 'io.reactivex:rxjava:1.3.0', butterknifecompiler : 'com.jakewharton:butterknife-compiler:8.6.0', junit : 'junit:junit:4.12', truth : 'com.google.truth:truth:0.33', - robolectric : 'org.robolectric:robolectric:3.1.2', + robolectric : 'org.robolectric:robolectric:3.3.2', mockitocore : 'org.mockito:mockito-core:2.8.47'] buildscript { diff --git a/library/src/main/java/com/github/pwittchen/prefser/library/Accessor.java b/library/src/main/java/com/github/pwittchen/prefser/library/Accessor.java index 30efa7e..5c4788a 100644 --- a/library/src/main/java/com/github/pwittchen/prefser/library/Accessor.java +++ b/library/src/main/java/com/github/pwittchen/prefser/library/Accessor.java @@ -16,7 +16,7 @@ package com.github.pwittchen.prefser.library; interface Accessor { - T get(String key, T defaultValue); + T get(String key); void put(String key, T value); } diff --git a/library/src/main/java/com/github/pwittchen/prefser/library/PreferencesAccessorsProvider.java b/library/src/main/java/com/github/pwittchen/prefser/library/PreferencesAccessorsProvider.java index 54adf12..1ba3693 100644 --- a/library/src/main/java/com/github/pwittchen/prefser/library/PreferencesAccessorsProvider.java +++ b/library/src/main/java/com/github/pwittchen/prefser/library/PreferencesAccessorsProvider.java @@ -47,8 +47,8 @@ private void createAccessors() { private void createBooleanAccessor() { accessors.put(Boolean.class, new Accessor() { - @Override public Boolean get(String key, Boolean defaultValue) { - return preferences.getBoolean(key, defaultValue); + @Override public Boolean get(String key) { + return preferences.getBoolean(key, false); } @Override public void put(String key, Boolean value) { @@ -59,8 +59,8 @@ private void createBooleanAccessor() { private void createFloatAccessor() { accessors.put(Float.class, new Accessor() { - @Override public Float get(String key, Float defaultValue) { - return preferences.getFloat(key, defaultValue); + @Override public Float get(String key) { + return preferences.getFloat(key, 0f); } @Override public void put(String key, Float value) { @@ -71,8 +71,8 @@ private void createFloatAccessor() { private void createIntegerAccessor() { accessors.put(Integer.class, new Accessor() { - @Override public Integer get(String key, Integer defaultValue) { - return preferences.getInt(key, defaultValue); + @Override public Integer get(String key) { + return preferences.getInt(key, 0); } @Override public void put(String key, Integer value) { @@ -83,8 +83,8 @@ private void createIntegerAccessor() { private void createLongAccessor() { accessors.put(Long.class, new Accessor() { - @Override public Long get(String key, Long defaultValue) { - return preferences.getLong(key, defaultValue); + @Override public Long get(String key) { + return preferences.getLong(key, 0L); } @Override public void put(String key, Long value) { @@ -95,8 +95,8 @@ private void createLongAccessor() { private void createDoubleAccessor() { accessors.put(Double.class, new Accessor() { - @Override public Double get(String key, Double defaultValue) { - return Double.valueOf(preferences.getString(key, String.valueOf(defaultValue))); + @Override public Double get(String key) { + return Double.valueOf(preferences.getString(key, "")); } @Override public void put(String key, Double value) { @@ -107,8 +107,8 @@ private void createDoubleAccessor() { private void createStringAccessor() { accessors.put(String.class, new Accessor() { - @Override public String get(String key, String defaultValue) { - return preferences.getString(key, String.valueOf(defaultValue)); + @Override public String get(String key) { + return preferences.getString(key, ""); } @Override public void put(String key, String value) { diff --git a/library/src/main/java/com/github/pwittchen/prefser/library/Prefser.java b/library/src/main/java/com/github/pwittchen/prefser/library/Prefser.java index 3586a60..c4fad34 100644 --- a/library/src/main/java/com/github/pwittchen/prefser/library/Prefser.java +++ b/library/src/main/java/com/github/pwittchen/prefser/library/Prefser.java @@ -229,13 +229,7 @@ public Observable observe(@NonNull final String key, * @return value from SharedPreferences associated with given key or default value */ public T get(@NonNull String key, @NonNull Class classOfT, T defaultValue) { - Preconditions.checkNotNull(key, KEY_IS_NULL); Preconditions.checkNotNull(classOfT, CLASS_OF_T_IS_NULL); - - if (!contains(key) && defaultValue == null) { - return null; - } - return get(key, TypeToken.fromClass(classOfT), defaultValue); } @@ -253,20 +247,20 @@ public T get(@NonNull String key, @NonNull TypeToken typeTokenOfT, T defa Preconditions.checkNotNull(key, KEY_IS_NULL); Preconditions.checkNotNull(typeTokenOfT, TYPE_TOKEN_OF_T_IS_NULL); + if (!contains(key)) { + return defaultValue; + } + Type typeOfT = typeTokenOfT.getType(); for (Map.Entry, Accessor> entry : accessorProvider.getAccessors().entrySet()) { if (typeOfT.equals(entry.getKey())) { @SuppressWarnings("unchecked") Accessor accessor = (Accessor) entry.getValue(); - return accessor.get(key, defaultValue); + return accessor.get(key); } } - if (contains(key)) { - return jsonConverter.fromJson(preferences.getString(key, null), typeOfT); - } else { - return defaultValue; - } + return jsonConverter.fromJson(preferences.getString(key, null), typeOfT); } /** diff --git a/library/src/test/java/com/github/pwittchen/prefser/library/PrefserTest.java b/library/src/test/java/com/github/pwittchen/prefser/library/PrefserTest.java index 3832bee..871c931 100644 --- a/library/src/test/java/com/github/pwittchen/prefser/library/PrefserTest.java +++ b/library/src/test/java/com/github/pwittchen/prefser/library/PrefserTest.java @@ -1169,4 +1169,179 @@ public void testPutShouldThrowAnExceptionWhenKeyIsNullForRemove() { // then assertThat(value).isNull(); } + + @Test public void testShouldReturnStringValueWithDefaultNull() { + // given + prefser.clear(); + String key = GIVEN_KEY; + String givenValue = "someText"; + + // when + prefser.put(key, givenValue); + String readValue = prefser.get(key, String.class, null); + + // then + assertThat(givenValue).isEqualTo(readValue); + } + + // alteracoes comeca aqui + + @Test public void testGetShouldReturnNullForCustomObject() { + // given + prefser.clear(); + String keyWhichDoesNotExist = KEY_WHICH_DOES_NOT_EXIST; + + // when + CustomClass value = prefser.get(keyWhichDoesNotExist, CustomClass.class, null); + + // then + assertThat(value).isNull(); +// CustomClass givenObject = new CustomClass(23, "someText"); +// CustomClass defaultObject = new CustomClass(67, "defaultText"); + } + + @Test public void testGetShouldReturnCustomObjectWithDefaultNull() { + // given + prefser.clear(); + String key = GIVEN_KEY; + CustomClass givenObject = new CustomClass(12, "someText"); + + // when + prefser.put(key, givenObject); + CustomClass readObject = prefser.get(key, CustomClass.class, null); + + // then + assertThat(givenObject).isEqualTo(readObject); + } + + @Test public void testShouldReturnNullForDoubleType() { + // given + prefser.clear(); + String keyWhichDoesNotExist = KEY_WHICH_DOES_NOT_EXIST; + + // when + Double value = prefser.get(keyWhichDoesNotExist, Double.class, null); + + // then + assertThat(value).isNull(); + } + + @Test public void testShouldReturnDoubleValueWithDefaultNull() { + // given + prefser.clear(); + String key = GIVEN_KEY; + Double givenValue = 7.77; + + // when + prefser.put(key, givenValue); + Double readValue = prefser.get(key, Double.class, null); + + // then + assertThat(givenValue).isEqualTo(readValue); + } + + @Test public void testShouldReturnNullForBooleanType() { + // given + prefser.clear(); + String keyWhichDoesNotExist = KEY_WHICH_DOES_NOT_EXIST; + + // when + Boolean value = prefser.get(keyWhichDoesNotExist, Boolean.class, null); + + // then + assertThat(value).isNull(); + } + + @Test public void testShouldReturnBooleanValueWithDefaultNull() { + // given + prefser.clear(); + String key = GIVEN_KEY; + Boolean givenValue = true; + + // when + prefser.put(key, givenValue); + Boolean readValue = prefser.get(key, Boolean.class, null); + + // then + assertThat(givenValue).isEqualTo(readValue); + } + + @Test public void testShouldReturnNullForIntegerType() { + // given + prefser.clear(); + String keyWhichDoesNotExist = KEY_WHICH_DOES_NOT_EXIST; + + // when + Integer value = prefser.get(keyWhichDoesNotExist, Integer.class, null); + + // then + assertThat(value).isNull(); + } + + @Test public void testShouldReturnIntegerValueWithDefaultNull() { + // given + prefser.clear(); + String key = GIVEN_KEY; + Integer givenValue = 7; + + // when + prefser.put(key, givenValue); + Integer readValue = prefser.get(key, Integer.class, null); + + // then + assertThat(givenValue).isEqualTo(readValue); + } + + @Test public void testShouldReturnNullForFloatType() { + // given + prefser.clear(); + String keyWhichDoesNotExist = KEY_WHICH_DOES_NOT_EXIST; + + // when + Float value = prefser.get(keyWhichDoesNotExist, Float.class, null); + + // then + assertThat(value).isNull(); + } + + @Test public void testShouldReturnFloatValueWithDefaultNull() { + // given + prefser.clear(); + String key = GIVEN_KEY; + Float givenValue = 7.45f; + + // when + prefser.put(key, givenValue); + Float readValue = prefser.get(key, Float.class, null); + + // then + assertThat(givenValue).isEqualTo(readValue); + } + + @Test public void testShouldReturnNullForLongType() { + // given + prefser.clear(); + String keyWhichDoesNotExist = KEY_WHICH_DOES_NOT_EXIST; + + // when + Long value = prefser.get(keyWhichDoesNotExist, Long.class, null); + + // then + assertThat(value).isNull(); + } + + @Test public void testShouldReturnLongValueWithDefaultNull() { + // given + prefser.clear(); + String key = GIVEN_KEY; + Long givenValue = 7L; + + // when + prefser.put(key, givenValue); + Long readValue = prefser.get(key, Long.class, null); + + // then + assertThat(givenValue).isEqualTo(readValue); + } + } \ No newline at end of file