// 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()); }