| <!DOCTYPE html> |
| <!-- |
| Copyright (c) 2014 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. |
| --> |
| <link rel="import" href="/base/settings.html"> |
| <script> |
| 'use strict'; |
| |
| tv.b.unittest.testSuite(function() { |
| function assertSettingIs(expectedValue, key) { |
| assert.equal(tv.b.Settings.get(key), 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 = tv.b.Settings.getAlternativeStorageInstance(); |
| storage.setItem(tv.b.Settings.namespace_('key'), 'hello world'); |
| |
| assert.equal(tv.b.Settings.get('key', 'value'), 'value'); |
| }); |
| |
| test('setGetString', function() { |
| var settings = new tv.b.Settings(); |
| settings.set('my_key', 'my_val'); |
| assert.equal(settings.get('my_key'), 'my_val'); |
| // tv.b.Settings() is a singleton |
| assert.equal(tv.b.Settings().get('my_key'), 'my_val'); |
| }); |
| |
| test('setGetNumber', function() { |
| var settings = new tv.b.Settings(); |
| settings.set('my_key', 5); |
| assertSettingIs(5, 'my_key'); |
| }); |
| |
| test('setGetBool', function() { |
| var settings = new tv.b.Settings(); |
| settings.set('my_key', false); |
| assertSettingIs(false, 'my_key'); |
| }); |
| |
| test('setGetObject', function() { |
| var settings = new tv.b.Settings(); |
| settings.set('my_key', {'hello': 5}); |
| assert.deepEqual(settings.get('my_key'), {'hello': 5}); |
| }); |
| |
| test('setInvalidObject', function() { |
| var settings = new tv.b.Settings(); |
| var obj = {'hello': undefined}; |
| obj.hello = obj; |
| assert.throws(function() { |
| settings.set('my_key', obj); |
| }); |
| }); |
| |
| test('setUndefined', function() { |
| var settings = new tv.b.Settings(); |
| assert.throws(function() { |
| settings.set('my_key', undefined); |
| }); |
| }); |
| |
| test('getUnset', function() { |
| var settings = new tv.b.Settings(); |
| // Undefined should be returned if value isn't set. |
| assertSettingIs(undefined, 'my_key'); |
| }); |
| |
| test('getDefault', function() { |
| var settings = new tv.b.Settings(); |
| // default_val should be returned if value isn't set. |
| assert.equal(settings.get('my_key', 'default_val'), 'default_val'); |
| }); |
| |
| test('setGetPrefix', function() { |
| var settings = new tv.b.Settings(); |
| settings.set('key_a', 'foo', 'my_prefix'); |
| assert.equal(settings.get('key_a', undefined, 'my_prefix'), 'foo'); |
| assert.equal(settings.get('key_a', 'bar', 'my_prefix'), 'foo'); |
| assert.isUndefined(settings.get('key_a')); |
| assert.equal(settings.get('key_a', 'bar'), 'bar'); |
| }); |
| |
| test('keys', function() { |
| var settings = new tv.b.Settings(); |
| settings.set('key_a', 'foo'); |
| settings.set('key_b', 'bar'); |
| settings.set('key_c', 'baz'); |
| assert.deepEqual(settings.keys(), ['key_a', 'key_b', 'key_c']); |
| }); |
| |
| test('keysPrefix', function() { |
| var settings = new tv.b.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'); |
| assert.deepEqual(settings.keys('prefix1'), ['key_a', 'key_b', 'key_c']); |
| assert.deepEqual(settings.keys('prefix2'), ['key_C', 'key_a', 'key_b']); |
| assert.deepEqual( |
| settings.keys(), |
| ['prefix1.key_a', 'prefix1.key_b', 'prefix1.key_c', |
| 'prefix2.key_C', 'prefix2.key_a', 'prefix2.key_b']); |
| }); |
| }); |
| </script> |