| // Copyright 2013 The Closure Library Authors. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS-IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| goog.provide('goog.tweak.RegistryTest'); |
| goog.setTestOnly('goog.tweak.RegistryTest'); |
| |
| goog.require('goog.asserts.AssertionError'); |
| goog.require('goog.testing.jsunit'); |
| goog.require('goog.tweak'); |
| /** @suppress {extraRequire} needed for createRegistryEntries. */ |
| goog.require('goog.tweak.testhelpers'); |
| |
| var registry; |
| |
| function setUp() { |
| createRegistryEntries(''); |
| registry = goog.tweak.getRegistry(); |
| } |
| |
| function tearDown() { |
| goog.tweak.registry_ = null; |
| } |
| |
| function testGetBaseEntry() { |
| // Initial values |
| assertEquals('wrong bool1 object', boolEntry, |
| registry.getBooleanSetting('Bool')); |
| assertEquals('wrong string object', strEntry, |
| registry.getStringSetting('Str')); |
| assertEquals('wrong numeric object', numEntry, |
| registry.getNumericSetting('Num')); |
| assertEquals('wrong button object', buttonEntry, |
| registry.getEntry('Button')); |
| assertEquals('wrong button object', boolGroup, |
| registry.getEntry('BoolGroup')); |
| } |
| |
| function testInitializeFromQueryParams() { |
| var testCase = 0; |
| function assertQuery(queryStr, boolValue, enumValue, strValue, subBoolValue, |
| subBoolValue2) { |
| createRegistryEntries(queryStr); |
| assertEquals('Wrong bool value for query: ' + queryStr, boolValue, |
| boolEntry.getValue()); |
| assertEquals('Wrong enum value for query: ' + queryStr, enumValue, |
| strEnumEntry.getValue()); |
| assertEquals('Wrong str value for query: ' + queryStr, strValue, |
| strEntry.getValue()); |
| assertEquals('Wrong BoolOne value for query: ' + queryStr, subBoolValue, |
| boolOneEntry.getValue()); |
| assertEquals('Wrong BoolTwo value for query: ' + queryStr, subBoolValue2, |
| boolTwoEntry.getValue()); |
| } |
| assertQuery('?dummy=1&bool=&enum=&s=', false, '', '', false, true); |
| assertQuery('?bool=0&enum=A&s=a', false, 'A', 'a', false, true); |
| assertQuery('?bool=1&enum=A', true, 'A', '', false, true); |
| assertQuery('?bool=true&enum=B&s=as+df', true, 'B', 'as df', false, true); |
| assertQuery('?enum=C', false, 'C', '', false, true); |
| assertQuery('?enum=C&boolgroup=-booltwo', false, 'C', '', false, false); |
| assertQuery('?enum=C&boolgroup=b1,-booltwo', false, 'C', '', true, false); |
| assertQuery('?enum=C&boolgroup=b1', false, 'C', '', true, true); |
| assertQuery('?s=a+b%20c%26', false, 'A', 'a b c&', false, true); |
| } |
| |
| function testMakeUrlQuery() { |
| assertEquals('All values are default.', |
| '', registry.makeUrlQuery('')); |
| assertEquals('All values are default - with existing params.', |
| '?super=pudu', registry.makeUrlQuery('?super=pudu')); |
| |
| boolEntry.setValue(true); |
| numEnumEntry.setValue(2); |
| strEntry.setValue('f o&o'); |
| assertEquals('Wrong query string 1.', |
| '?bool=1&enum2=2&s=f+o%26o', |
| registry.makeUrlQuery('?bool=1')); |
| assertEquals('Wrong query string 1 - with existing params.', |
| '?super=pudu&bool=1&enum2=2&s=f+o%26o', |
| registry.makeUrlQuery('?bool=0&s=g&super=pudu')); |
| |
| boolOneEntry.setValue(true); |
| assertEquals('Wrong query string 2.', |
| '?bool=1&boolgroup=B1&enum2=2&s=f+o%26o', |
| registry.makeUrlQuery('')); |
| |
| boolTwoEntry.setValue(false); |
| assertEquals('Wrong query string 3.', |
| '?bool=1&boolgroup=B1,-booltwo&enum2=2&s=f+o%26o', |
| registry.makeUrlQuery('')); |
| } |
| |
| function testOverrideDefaultValue_calledBefore() { |
| registry.overrideDefaultValue('b', false); |
| registry.overrideDefaultValue('b', true); |
| goog.tweak.registerBoolean('b', 'b desc'); |
| var bEntry = registry.getEntry('b'); |
| assertTrue('Default value should be true.', bEntry.getDefaultValue()); |
| assertTrue('Value should be true.', bEntry.getValue()); |
| } |
| |
| function testOverrideDefaultValue_calledAfter() { |
| var exception = assertThrows('Should assert.', function() { |
| registry.overrideDefaultValue('Bool2', false); |
| }); |
| assertTrue('Wrong exception', |
| exception instanceof goog.asserts.AssertionError); |
| } |
| |
| function testCompilerOverrideDefaultValue() { |
| createRegistryEntries('', { 'b': true }); |
| registry = goog.tweak.getRegistry(); |
| goog.tweak.registerBoolean('b', 'b desc'); |
| var bEntry = registry.getEntry('b'); |
| assertTrue('Default value should be true.', bEntry.getDefaultValue()); |
| assertTrue('Value should be true.', bEntry.getValue()); |
| } |
| |
| function testCompilerAndJsOverrideDefaultValue() { |
| createRegistryEntries('', { 'b': false }); |
| registry = goog.tweak.getRegistry(); |
| registry.overrideDefaultValue('b', true); |
| goog.tweak.registerBoolean('b', 'b desc', true); |
| var bEntry = registry.getEntry('b'); |
| assertFalse('Default value should be false.', bEntry.getDefaultValue()); |
| assertFalse('Value should be false.', bEntry.getValue()); |
| } |