1072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov/* 2072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov * Copyright (C) 2010 The Android Open Source Project 3072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov * 4072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov * Licensed under the Apache License, Version 2.0 (the "License"); 5072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov * you may not use this file except in compliance with the License. 6072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov * You may obtain a copy of the License at 7072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov * 8072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov * http://www.apache.org/licenses/LICENSE-2.0 9072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov * 10072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov * Unless required by applicable law or agreed to in writing, software 11072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov * distributed under the License is distributed on an "AS IS" BASIS, 12072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov * See the License for the specific language governing permissions and 14072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov * limitations under the License. 15072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov */ 16072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 17072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikovpackage com.android.contacts.tests.mocks; 18072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 19072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikovimport android.content.SharedPreferences; 20072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 21e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Chengimport com.google.common.collect.Maps; 22e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Cheng 23072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikovimport java.util.HashMap; 24072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikovimport java.util.Map; 25072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikovimport java.util.Set; 26072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 27072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 28072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov/** 29072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov * A programmable mock content provider. 30072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov */ 31072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikovpublic class MockSharedPreferences implements SharedPreferences, SharedPreferences.Editor { 32072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 33072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov private HashMap<String, Object> mValues = Maps.newHashMap(); 34072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov private HashMap<String, Object> mTempValues = Maps.newHashMap(); 35072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 36072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public Editor edit() { 37072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return this; 38072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 39072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 40072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public boolean contains(String key) { 41072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return mValues.containsKey(key); 42072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 43072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 44072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public Map<String, ?> getAll() { 45072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return new HashMap<String, Object>(mValues); 46072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 47072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 48072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public boolean getBoolean(String key, boolean defValue) { 49072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov if (mValues.containsKey(key)) { 50072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return ((Boolean)mValues.get(key)).booleanValue(); 51072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 52072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return defValue; 53072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 54072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 55072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public float getFloat(String key, float defValue) { 56072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov if (mValues.containsKey(key)) { 57072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return ((Float)mValues.get(key)).floatValue(); 58072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 59072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return defValue; 60072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 61072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 62072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public int getInt(String key, int defValue) { 63072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov if (mValues.containsKey(key)) { 64072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return ((Integer)mValues.get(key)).intValue(); 65072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 66072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return defValue; 67072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 68072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 69072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public long getLong(String key, long defValue) { 70072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov if (mValues.containsKey(key)) { 71072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return ((Long)mValues.get(key)).longValue(); 72072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 73072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return defValue; 74072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 75072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 76072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public String getString(String key, String defValue) { 77072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov if (mValues.containsKey(key)) 78072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return (String)mValues.get(key); 79072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return defValue; 80072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 81072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 82072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov @SuppressWarnings("unchecked") 83072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public Set<String> getStringSet(String key, Set<String> defValues) { 84072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov if (mValues.containsKey(key)) { 85072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return (Set<String>) mValues.get(key); 86072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 87072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return defValues; 88072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 89072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 90072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public void registerOnSharedPreferenceChangeListener( 91072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov OnSharedPreferenceChangeListener listener) { 92072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov throw new UnsupportedOperationException(); 93072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 94072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 95072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public void unregisterOnSharedPreferenceChangeListener( 96072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov OnSharedPreferenceChangeListener listener) { 97072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov throw new UnsupportedOperationException(); 98072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 99072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 100072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public Editor putBoolean(String key, boolean value) { 101072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov mTempValues.put(key, Boolean.valueOf(value)); 102072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return this; 103072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 104072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 105072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public Editor putFloat(String key, float value) { 106072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov mTempValues.put(key, value); 107072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return this; 108072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 109072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 110072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public Editor putInt(String key, int value) { 111072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov mTempValues.put(key, value); 112072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return this; 113072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 114072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 115072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public Editor putLong(String key, long value) { 116072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov mTempValues.put(key, value); 117072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return this; 118072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 119072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 120072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public Editor putString(String key, String value) { 121072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov mTempValues.put(key, value); 122072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return this; 123072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 124072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 125072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public Editor putStringSet(String key, Set<String> values) { 126072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov mTempValues.put(key, values); 127072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return this; 128072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 129072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 130072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public Editor remove(String key) { 131072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov mTempValues.remove(key); 132072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return this; 133072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 134072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 135072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public Editor clear() { 136072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov mTempValues.clear(); 137072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return this; 138072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 139072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 140072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov @SuppressWarnings("unchecked") 141072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public boolean commit() { 142072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov mValues = (HashMap<String, Object>)mTempValues.clone(); 143072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov return true; 144072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 145072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov 146072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov public void apply() { 147072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov commit(); 148072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov } 149072d91171c749f43b64900118e6f4dcbdd7b1097Dmitri Plotnikov} 150