// Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. 'use strict'; base.require('base.settings'); base.require('base.unittest'); base.require('tracing.test_utils'); base.unittest.testSuite('base.settings', function() { function assertSettingIs(expectedValue, key) { assertEquals(expectedValue, base.Settings.get('my_key'), 'Expected Settings.' + key + ' to be ' + expectedValue); } // Old settings versions used to stringify objects instead of putting them // into JSON. This test makes sure that these old settings yield the default // value instead of strings. test('oldStyleSettingYieldsDefaultValue', function() { var storage = base.Settings.getAlternativeStorageInstance(); storage.setItem(base.Settings.namespace_('key'), 'hello world'); assertEquals('value', base.Settings.get('key', 'value')); }); test('setGetString', function() { var settings = new base.Settings(); settings.set('my_key', 'my_val'); assertEquals('my_val', settings.get('my_key')); // base.Settings() is a singleton assertEquals('my_val', base.Settings().get('my_key')); }); test('setGetNumber', function() { var settings = new base.Settings(); settings.set('my_key', 5); assertSettingIs(5, 'my_key'); }); test('setGetBool', function() { var settings = new base.Settings(); settings.set('my_key', false); assertSettingIs(false, 'my_key'); }); test('setGetObject', function() { var settings = new base.Settings(); settings.set('my_key', {'hello': 5}); assertObjectEquals({'hello': 5}, settings.get('my_key')); }); test('setInvalidObject', function() { var settings = new base.Settings(); var obj = {'hello': undefined}; obj.hello = obj; assertThrows(function() { settings.set('my_key', obj); }); }); test('setUndefined', function() { var settings = new base.Settings(); assertThrows(function() { settings.set('my_key', undefined); }); }); test('getUnset', function() { var settings = new base.Settings(); // Undefined should be returned if value isn't set. assertSettingIs(undefined, 'my_key'); }); test('getDefault', function() { var settings = new base.Settings(); // default_val should be returned if value isn't set. assertEquals('default_val', settings.get('my_key', 'default_val')); }); test('setGetPrefix', function() { var settings = new base.Settings(); settings.set('key_a', 'foo', 'my_prefix'); assertEquals('foo', settings.get('key_a', undefined, 'my_prefix')); assertEquals('foo', settings.get('key_a', 'bar', 'my_prefix')); assertEquals(undefined, settings.get('key_a')); assertEquals('bar', settings.get('key_a', 'bar')); }); test('keys', function() { var settings = new base.Settings(); settings.set('key_a', 'foo'); settings.set('key_b', 'bar'); settings.set('key_c', 'baz'); assertArrayEquals(['key_a', 'key_b', 'key_c'], settings.keys()); }); test('keysPrefix', function() { var settings = new base.Settings(); settings.set('key_a', 'foo', 'prefix1'); settings.set('key_b', 'bar', 'prefix1'); settings.set('key_c', 'baz', 'prefix1'); settings.set('key_a', 'foo', 'prefix2'); settings.set('key_b', 'bar', 'prefix2'); settings.set('key_C', 'baz', 'prefix2'); assertArrayEquals(['key_a', 'key_b', 'key_c'], settings.keys('prefix1')); assertArrayEquals(['key_C', 'key_a', 'key_b'], settings.keys('prefix2')); assertArrayEquals( ['prefix1.key_a', 'prefix1.key_b', 'prefix1.key_c', 'prefix2.key_C', 'prefix2.key_a', 'prefix2.key_b'], settings.keys()); }); });