summaryrefslogtreecommitdiff
path: root/chromium/third_party/trace-viewer/src/base/settings_test.js
blob: 639cb8f690df378b0fb11756eab69844d4daa8f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
// 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());
  });
});