var appSettings = require('@nativescript/core/application-settings'); import * as TKUnit from '../tk-unit'; 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 () { appSettings.setBoolean(boolKey, false); var boolValueBefore = appSettings.getBoolean(boolKey); TKUnit.assert(false === boolValueBefore, 'Cannot set boolean to false, currently it is: ' + appSettings.getBoolean(boolKey)); appSettings.setBoolean('boolKey', true); var boolValue = appSettings.getBoolean('boolKey', false); TKUnit.assert(true === boolValue, 'Cannot set boolean to true'); TKUnit.assert(true === appSettings.getBoolean(boolKey), 'Cannot set boolean to true (no default)'); }; export var testString = function () { appSettings.setString('stringKey', 'String value'); var stringValue = appSettings.getString('stringKey'); TKUnit.assert('String value' === stringValue, 'Cannot set string value'); }; export var testNumber = function () { appSettings.setNumber('numberKey', 54.321); var value = parseFloat(appSettings.getNumber('numberKey').toFixed(3)); TKUnit.assert(54.321 === value, 'Cannot set number value 54.321 != ' + value); }; export var testDefaults = function () { var defaultValue = appSettings.getString('noStringKey', 'No string value'); // will return "No string value" if there is no value for "noStringKey" TKUnit.assert('No string value' === defaultValue, 'Bad default string value'); TKUnit.assert(true === appSettings.getBoolean(noBoolKey, true), 'Bad default boolean value'); TKUnit.assert(123.45 === appSettings.getNumber(noNumberKey, 123.45), 'Bad default number value'); }; export var testDefaultsWithNoDefaultValueProvided = function () { var defaultValue = appSettings.getString('noStringKey'); // will return undefined if there is no value for "noStringKey" TKUnit.assertEqual(defaultValue, undefined, 'Default string value is not undefined'); TKUnit.assertEqual(appSettings.getBoolean(noBoolKey), undefined, 'Default boolean value is not undefined'); TKUnit.assertEqual(appSettings.getNumber(noNumberKey), undefined, 'Default number value is not undefined'); }; export var testHasKey = function () { var hasKey = appSettings.hasKey('noBoolKey'); // will return false if there is no value for "noBoolKey" TKUnit.assert(!hasKey, 'There is a key: ' + noBoolKey); TKUnit.assert(!appSettings.hasKey(noStringKey), 'There is a key: ' + noStringKey); TKUnit.assert(!appSettings.hasKey(noNumberKey), 'There is a key: ' + noNumberKey); TKUnit.assert(appSettings.hasKey(boolKey), 'There is no key: ' + boolKey); TKUnit.assert(appSettings.hasKey(stringKey), 'There is no key: ' + stringKey); TKUnit.assert(appSettings.hasKey(numberKey), 'There is no key: ' + numberKey); }; export var testRemove = function () { appSettings.remove('boolKey'); TKUnit.assert(!appSettings.hasKey(boolKey), 'Failed to remove key: ' + boolKey); appSettings.remove(stringKey); TKUnit.assert(!appSettings.hasKey(stringKey), 'Failed to remove key: ' + stringKey); appSettings.remove(numberKey); TKUnit.assert(!appSettings.hasKey(numberKey), 'Failed to remove key: ' + numberKey); }; export var testClear = function () { appSettings.clear(); TKUnit.assert(!appSettings.hasKey(boolKey), 'Failed to remove key: ' + boolKey); TKUnit.assert(!appSettings.hasKey(stringKey), 'Failed to remove key: ' + stringKey); TKUnit.assert(!appSettings.hasKey(numberKey), 'Failed to remove key: ' + numberKey); }; export var testFlush = function () { appSettings.setString(stringKey, 'String value'); var flushed = appSettings.flush(); // will return boolean indicating whether flush to disk was successful TKUnit.assert(flushed, 'Flush failed: ' + flushed); TKUnit.assert(appSettings.hasKey(stringKey), 'There is no key: ' + stringKey); }; export var testAllKeys = function () { appSettings.setString(stringKey, 'String value'); appSettings.setBoolean(boolKey, true); appSettings.setNumber(numberKey, 22); var allKeys = appSettings.getAllKeys(); TKUnit.assert(allKeys.indexOf(stringKey) !== -1, `${stringKey} is missing from .allKeys()`); TKUnit.assert(allKeys.indexOf(boolKey) !== -1, `${boolKey} is missing from .allKeys()`); TKUnit.assert(allKeys.indexOf(numberKey) !== -1, `${numberKey} is missing from .allKeys()`); }; export var testInvalidKey = function () { try { appSettings.hasKey(undefined); TKUnit.assert(false, 'There is a key undefined'); } catch (e) { // we should receive an exception here } try { appSettings.hasKey(null); TKUnit.assert(false, 'There is a key null'); } catch (e) { // we should receive an exception here } try { appSettings.hasKey(123); TKUnit.assert(false, 'There is a key number'); } catch (e) { // we should receive an exception here } appSettings.hasKey('string'); }; export var testInvalidValue = function () { try { appSettings.setBoolean(boolKey, 'str'); TKUnit.assert(false, 'There is a key undefined'); } catch (e) { // we should receive an exception here } try { appSettings.setBoolean(boolKey, 123); TKUnit.assert(false, 'There is a key undefined'); } catch (e) { // we should receive an exception here } try { appSettings.setString(boolKey, true); TKUnit.assert(false, 'There is a key undefined'); } catch (e) { // we should receive an exception here } try { appSettings.setString(boolKey, 123); TKUnit.assert(false, 'There is a key undefined'); } catch (e) { // we should receive an exception here } try { appSettings.setNumber(boolKey, true); TKUnit.assert(false, 'There is a key undefined'); } catch (e) { // we should receive an exception here } try { appSettings.setNumber(boolKey, '123'); TKUnit.assert(false, 'There is a key undefined'); } catch (e) { // we should receive an exception here } };