1package com.android.phone.vvm.omtp;
2
3import android.content.ComponentName;
4import android.telecom.PhoneAccountHandle;
5import android.test.AndroidTestCase;
6import android.util.ArraySet;
7
8import java.util.Arrays;
9
10public class VisualVoicemailPreferencesTest extends AndroidTestCase {
11
12    public void testWriteRead() {
13        VisualVoicemailPreferences preferences = new VisualVoicemailPreferences(getContext(),
14                createFakeHandle("testWriteRead"));
15        preferences.edit()
16                .putBoolean("boolean", true)
17                .putFloat("float", 0.5f)
18                .putInt("int", 123)
19                .putLong("long", 456)
20                .putString("string", "foo")
21                .putStringSet("stringset", new ArraySet<>(Arrays.asList("bar", "baz")))
22                .apply();
23
24        assertTrue(preferences.contains("boolean"));
25        assertTrue(preferences.contains("float"));
26        assertTrue(preferences.contains("int"));
27        assertTrue(preferences.contains("long"));
28        assertTrue(preferences.contains("string"));
29        assertTrue(preferences.contains("stringset"));
30
31        assertEquals(true, preferences.getBoolean("boolean", false));
32        assertEquals(0.5f, preferences.getFloat("float", 0));
33        assertEquals(123, preferences.getInt("int", 0));
34        assertEquals(456, preferences.getLong("long", 0));
35        assertEquals("foo", preferences.getString("string", null));
36        assertEquals(new ArraySet<>(Arrays.asList("bar", "baz")),
37                preferences.getStringSet("stringset", null));
38    }
39
40    public void testReadDefault() {
41        VisualVoicemailPreferences preferences = new VisualVoicemailPreferences(getContext(),
42                createFakeHandle("testReadDefault"));
43
44        assertFalse(preferences.contains("boolean"));
45        assertFalse(preferences.contains("float"));
46        assertFalse(preferences.contains("int"));
47        assertFalse(preferences.contains("long"));
48        assertFalse(preferences.contains("string"));
49        assertFalse(preferences.contains("stringset"));
50
51        assertEquals(true, preferences.getBoolean("boolean", true));
52        assertEquals(2.5f, preferences.getFloat("float", 2.5f));
53        assertEquals(321, preferences.getInt("int", 321));
54        assertEquals(654, preferences.getLong("long", 654));
55        assertEquals("foo2", preferences.getString("string", "foo2"));
56        assertEquals(new ArraySet<>(Arrays.asList("bar2", "baz2")),
57                preferences.getStringSet(
58                        "stringset", new ArraySet<>(Arrays.asList("bar2", "baz2"))));
59    }
60
61    public void testReadDefaultNull() {
62        VisualVoicemailPreferences preferences = new VisualVoicemailPreferences(getContext(),
63                createFakeHandle("testReadDefaultNull"));
64        assertNull(preferences.getString("string", null));
65        assertNull(preferences.getStringSet("stringset", null));
66    }
67
68    public void testDifferentHandle() {
69        VisualVoicemailPreferences preferences1 = new VisualVoicemailPreferences(getContext(),
70                createFakeHandle("testDifferentHandle1"));
71        VisualVoicemailPreferences preferences2 = new VisualVoicemailPreferences(getContext(),
72                createFakeHandle("testDifferentHandle1"));
73
74        preferences1.edit().putString("string", "foo");
75        assertFalse(preferences2.contains("string"));
76    }
77
78    private PhoneAccountHandle createFakeHandle(String id) {
79        return new PhoneAccountHandle(new ComponentName(getContext(), this.getClass()), id);
80    }
81}
82