From d7fda0b91c3c3baabfb02a0694985386cf9e85aa Mon Sep 17 00:00:00 2001 From: Stanimir Karoserov Date: Mon, 12 May 2014 19:00:45 +0300 Subject: [PATCH] updated user preferences and tests --- BCL.csproj | 1 + Tests/testRunner.ts | 4 +- Tests/user_preferences_tests.ts | 137 ++++++++++++++++++++ UserPreferences/user_preferences.android.ts | 7 + UserPreferences/user_preferences.d.ts | 23 +--- UserPreferences/user_preferences.ios.ts | 6 + 6 files changed, 160 insertions(+), 18 deletions(-) create mode 100644 Tests/user_preferences_tests.ts diff --git a/BCL.csproj b/BCL.csproj index d5b7d17fa..db2c1d95f 100644 --- a/BCL.csproj +++ b/BCL.csproj @@ -198,6 +198,7 @@ timer.d.ts + diff --git a/Tests/testRunner.ts b/Tests/testRunner.ts index 31e64e954..0c3ab45cd 100644 --- a/Tests/testRunner.ts +++ b/Tests/testRunner.ts @@ -2,9 +2,11 @@ var fsTests = require("Tests/file_system_tests"); var httpTests = require("Tests/http_tests"); var locationTests = require("Tests/location_tests"); +var userPreferencesTests = require("Tests/user_preferences_tests"); export var runAll = function () { TKUnit.runTestModule(fsTests, "FILE SYSTEM"); TKUnit.runTestModule(httpTests, "HTTP"); TKUnit.runTestModule(locationTests, "LOCATION"); -} \ No newline at end of file + TKUnit.runTestModule(userPreferencesTests, "USER PREFERENCES"); +} diff --git a/Tests/user_preferences_tests.ts b/Tests/user_preferences_tests.ts new file mode 100644 index 000000000..32d2da750 --- /dev/null +++ b/Tests/user_preferences_tests.ts @@ -0,0 +1,137 @@ + +var TKUnit = require("TestModules/TKUnit"); +var UserPreferences = require("UserPreferences"); + +var stringKey:string = "stringKey"; +var boolKey: string = "boolKey"; +var numberKey: string = "numberKey"; +var noStringKey: string = "noStringKey"; +var noBoolKey: string = "noBoolKey"; +var noNumberKey: string = "noNumberKey"; + +export var testBoolean = function () { + UserPreferences.setBoolean(boolKey, false); + TKUnit.assert(false == UserPreferences.getBoolean(boolKey), "Cannot set boolean to false, currently it is: " + UserPreferences.getBoolean(boolKey)); + + UserPreferences.setBoolean(boolKey, true); + TKUnit.assert(true == UserPreferences.getBoolean(boolKey, false), "Cannot set boolean to true"); + + TKUnit.assert(true == UserPreferences.getBoolean(boolKey), "Cannot set boolean to true (no default)"); +}; + +export var testString = function () { + UserPreferences.setString(stringKey, "String value"); + TKUnit.assert("String value" === UserPreferences.getString(stringKey), "Cannot set string value"); +}; + +export var testNumber = function () { + UserPreferences.setNumber(numberKey, 54.321); + var value = UserPreferences.getNumber(numberKey).toFixed(3); + TKUnit.assert(54.321 == value, "Cannot set number value 54.321 != " + value); +}; + +export var testDefaults = function () { + TKUnit.assert("No string value" === UserPreferences.getString(noStringKey, "No string value"), "Bad default string value"); + TKUnit.assert(true === UserPreferences.getBoolean(noBoolKey, true), "Bad default boolean value"); + TKUnit.assert(123.45 === UserPreferences.getNumber(noNumberKey, 123.45), "Bad default number value"); +}; + +export var testHasKey = function () { + TKUnit.assert(!UserPreferences.hasKey(noBoolKey), "There is a key: " + noBoolKey); + TKUnit.assert(!UserPreferences.hasKey(noStringKey), "There is a key: " + noStringKey); + TKUnit.assert(!UserPreferences.hasKey(noNumberKey), "There is a key: " + noNumberKey); + + TKUnit.assert(UserPreferences.hasKey(boolKey), "There is no key: " + boolKey); + TKUnit.assert(UserPreferences.hasKey(stringKey), "There is no key: " + stringKey); + TKUnit.assert(UserPreferences.hasKey(numberKey), "There is no key: " + numberKey); +}; + +export var testRemove = function () { + UserPreferences.remove(boolKey); + TKUnit.assert(!UserPreferences.hasKey(boolKey), "Failed to remove key: " + boolKey); + + UserPreferences.remove(stringKey); + TKUnit.assert(!UserPreferences.hasKey(stringKey), "Failed to remove key: " + stringKey); + + UserPreferences.remove(numberKey); + TKUnit.assert(!UserPreferences.hasKey(numberKey), "Failed to remove key: " + numberKey); +}; + +export var testInvalidKey = function () { + try { + UserPreferences.hasKey(undefined); + TKUnit.assert(false, "There is a key undefined"); + } + catch (e) { + // we should receive an exception here + } + + try { + UserPreferences.hasKey(null); + TKUnit.assert(false, "There is a key null"); + } + catch (e) { + // we should receive an exception here + } + + try { + UserPreferences.hasKey(123); + TKUnit.assert(false, "There is a key number"); + } + catch (e) { + // we should receive an exception here + } + + UserPreferences.hasKey("string"); +}; + +export var testInvalidValue = function () { + try { + UserPreferences.setBoolean(boolKey, "str"); + TKUnit.assert(false, "There is a key undefined"); + } + catch (e) { + // we should receive an exception here + } + + try { + UserPreferences.setBoolean(boolKey, 123); + TKUnit.assert(false, "There is a key undefined"); + } + catch (e) { + // we should receive an exception here + } + + try { + UserPreferences.setString(boolKey, true); + TKUnit.assert(false, "There is a key undefined"); + } + catch (e) { + // we should receive an exception here + } + + try { + UserPreferences.setString(boolKey, 123); + TKUnit.assert(false, "There is a key undefined"); + } + catch (e) { + // we should receive an exception here + } + + try { + UserPreferences.setNumber(boolKey, true); + TKUnit.assert(false, "There is a key undefined"); + } + catch (e) { + // we should receive an exception here + } + + try { + UserPreferences.setNumber(boolKey, "123"); + TKUnit.assert(false, "There is a key undefined"); + } + catch (e) { + // we should receive an exception here + } + +}; diff --git a/UserPreferences/user_preferences.android.ts b/UserPreferences/user_preferences.android.ts index 9e78bc1b5..defdac4ff 100644 --- a/UserPreferences/user_preferences.android.ts +++ b/UserPreferences/user_preferences.android.ts @@ -58,6 +58,13 @@ export var setNumber = function(key: string, value: number): void { editor.commit(); } +export var remove = function (key: string): void { + Common.checkKey(key); + var editor = sharedPreferences.edit(); + editor.remove(key); + editor.commit(); +} + /* these are commented out to be used only if requested by users or otherwise needed diff --git a/UserPreferences/user_preferences.d.ts b/UserPreferences/user_preferences.d.ts index faa486d71..154e04ae9 100644 --- a/UserPreferences/user_preferences.d.ts +++ b/UserPreferences/user_preferences.d.ts @@ -1,20 +1,4 @@ -export declare class UserPreferences { - containsKey(key: string): boolean; - getBoolean(key: string, defaultValue?: boolean): boolean; - getDouble(key: string, defaultValue?: number): number; - getInt(key: string, defaultValue?: number): number; - getLong(key: string, defaultValue?: number): number; - getString(key: string, defaultValue?: string): string; - getStrings(key: string, defaultValue?: string[]): string[]; - setBoolean(key: string, value: boolean); - setDouble(key: string, value: number); - setInt(key: string, value: number); - setLong(key: string, value: number); - setString(key: string, value: string); - setStrings(key: string, value: string[]); -} - -/** +/** * report does such key exist */ export declare var hasKey: (key: string) => boolean; @@ -82,3 +66,8 @@ export declare var setInt: (key: string, value: number) => void; * sets value for a key as long integer */ export declare var setLong: (key: string, value: number) => void; + +/** +* removes a value for key +*/ +export declare var remove: (key: string) => void; diff --git a/UserPreferences/user_preferences.ios.ts b/UserPreferences/user_preferences.ios.ts index baa16aab6..369f4810b 100644 --- a/UserPreferences/user_preferences.ios.ts +++ b/UserPreferences/user_preferences.ios.ts @@ -54,6 +54,12 @@ export var setNumber = function (key: string, value: number): void { userDefaults.synchronize(); } +export var remove = function (key: string): void { + Common.checkKey(key); + userDefaults.removeObjectForKey(key); + userDefaults.synchronize(); +} + /* these are commented out to be used only if requested by users or otherwise needed