1 /*
2  * Copyright (C) 2011 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.email;
18 
19 import com.google.common.collect.Maps;
20 
21 import android.content.SharedPreferences;
22 
23 import java.util.HashMap;
24 import java.util.Map;
25 import java.util.Set;
26 
27 
28 /**
29  * A programmable mock content provider.
30  */
31 public class MockSharedPreferences implements SharedPreferences, SharedPreferences.Editor {
32 
33     private HashMap<String, Object> mValues = Maps.newHashMap();
34     private HashMap<String, Object> mTempValues = Maps.newHashMap();
35 
36     @SuppressWarnings("unchecked")
edit()37     public Editor edit() {
38         mTempValues = (HashMap<String, Object>) mValues.clone();
39         return this;
40     }
41 
contains(String key)42     public boolean contains(String key) {
43         return mValues.containsKey(key);
44     }
45 
getAll()46     public Map<String, ?> getAll() {
47         return new HashMap<String, Object>(mValues);
48     }
49 
getBoolean(String key, boolean defValue)50     public boolean getBoolean(String key, boolean defValue) {
51         if (mValues.containsKey(key)) {
52             return ((Boolean)mValues.get(key)).booleanValue();
53         }
54         return defValue;
55     }
56 
getFloat(String key, float defValue)57     public float getFloat(String key, float defValue) {
58         if (mValues.containsKey(key)) {
59             return ((Float)mValues.get(key)).floatValue();
60         }
61         return defValue;
62     }
63 
getInt(String key, int defValue)64     public int getInt(String key, int defValue) {
65         if (mValues.containsKey(key)) {
66             return ((Integer)mValues.get(key)).intValue();
67         }
68         return defValue;
69     }
70 
getLong(String key, long defValue)71     public long getLong(String key, long defValue) {
72         if (mValues.containsKey(key)) {
73             return ((Long)mValues.get(key)).longValue();
74         }
75         return defValue;
76     }
77 
getString(String key, String defValue)78     public String getString(String key, String defValue) {
79         if (mValues.containsKey(key))
80             return (String)mValues.get(key);
81         return defValue;
82     }
83 
84     @SuppressWarnings("unchecked")
getStringSet(String key, Set<String> defValues)85     public Set<String> getStringSet(String key, Set<String> defValues) {
86         if (mValues.containsKey(key)) {
87             return (Set<String>) mValues.get(key);
88         }
89         return defValues;
90     }
91 
registerOnSharedPreferenceChangeListener( OnSharedPreferenceChangeListener listener)92     public void registerOnSharedPreferenceChangeListener(
93             OnSharedPreferenceChangeListener listener) {
94         throw new UnsupportedOperationException();
95     }
96 
unregisterOnSharedPreferenceChangeListener( OnSharedPreferenceChangeListener listener)97     public void unregisterOnSharedPreferenceChangeListener(
98             OnSharedPreferenceChangeListener listener) {
99         throw new UnsupportedOperationException();
100     }
101 
putBoolean(String key, boolean value)102     public Editor putBoolean(String key, boolean value) {
103         mTempValues.put(key, Boolean.valueOf(value));
104         return this;
105     }
106 
putFloat(String key, float value)107     public Editor putFloat(String key, float value) {
108         mTempValues.put(key, value);
109         return this;
110     }
111 
putInt(String key, int value)112     public Editor putInt(String key, int value) {
113         mTempValues.put(key, value);
114         return this;
115     }
116 
putLong(String key, long value)117     public Editor putLong(String key, long value) {
118         mTempValues.put(key, value);
119         return this;
120     }
121 
putString(String key, String value)122     public Editor putString(String key, String value) {
123         mTempValues.put(key, value);
124         return this;
125     }
126 
putStringSet(String key, Set<String> values)127     public Editor putStringSet(String key, Set<String> values) {
128         mTempValues.put(key, values);
129         return this;
130     }
131 
remove(String key)132     public Editor remove(String key) {
133         mTempValues.remove(key);
134         return this;
135     }
136 
clear()137     public Editor clear() {
138         mTempValues.clear();
139         return this;
140     }
141 
142     @SuppressWarnings("unchecked")
commit()143     public boolean commit() {
144         mValues = (HashMap<String, Object>) mTempValues.clone();
145         return true;
146     }
147 
apply()148     public void apply() {
149         commit();
150     }
151 }
152