123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265 |
- // Copyright 2006 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.ui.RangeModelTest');
- goog.setTestOnly('goog.ui.RangeModelTest');
- goog.require('goog.testing.jsunit');
- goog.require('goog.ui.RangeModel');
- function reset(rm, step) {
- rm.setStep(step || 1);
- rm.setExtent(0);
- rm.setMinimum(0);
- rm.setMaximum(100);
- rm.setValue(0);
- }
- function getDescriptiveString(rm) {
- return rm.getMinimum() + ' < ' + rm.getValue() + '[' + rm.getExtent() +
- '] < ' + rm.getMaximum();
- }
- function testValue() {
- var rm = new goog.ui.RangeModel;
- assertEquals(0, rm.getValue());
- rm.setValue(50);
- assertEquals(50, rm.getValue());
- // setting smaller than min should keep min
- rm.setValue(-1);
- assertEquals(0, rm.getValue());
- // setting larger than max should keep max - extent
- rm.setValue(101);
- assertEquals(100, rm.getValue());
- rm.setValue(0);
- rm.setExtent(10);
- rm.setValue(100);
- assertEquals(90, rm.getValue());
- ////////////////
- // Change step
- reset(rm, 3);
- assertEquals(0, rm.getValue());
- rm.setValue(50);
- assertEquals(51, rm.getValue());
- // setting smaller than min should keep min
- rm.setValue(-1);
- assertEquals(0, rm.getValue());
- // setting larger than max should keep max - extent
- rm.setValue(101);
- assertEquals(99, rm.getValue());
- rm.setValue(0);
- rm.setExtent(10);
- rm.setValue(100);
- assertEquals(90, rm.getValue());
- }
- function testMinium() {
- var rm = new goog.ui.RangeModel;
- rm.setValue(50);
- rm.setMinimum(10);
- assertEquals(10, rm.getMinimum());
- reset(rm);
- // setting larger than value should change value
- rm.setMinimum(10);
- assertEquals(10, rm.getMinimum());
- assertEquals(10, rm.getValue());
- // setting larger than max should set max = min
- rm.setMinimum(200);
- assertEquals(200, rm.getMinimum());
- assertEquals(200, rm.getValue());
- assertEquals(200, rm.getMaximum());
- assertEquals(0, rm.getExtent());
- reset(rm);
- // should change extent
- rm.setExtent(10);
- rm.setMinimum(95);
- assertEquals(95, rm.getMinimum());
- assertEquals(95, rm.getValue());
- assertEquals(100, rm.getMaximum());
- assertEquals(5, rm.getExtent());
- ////////////////
- // Change step
- reset(rm, 3);
- rm.setValue(50);
- rm.setMinimum(10);
- assertEquals(10, rm.getMinimum());
- reset(rm, 3);
- // setting larger than value should change value
- rm.setMinimum(10);
- assertEquals(10, rm.getMinimum());
- assertEquals(10, rm.getValue());
- // setting larger than max should set max = min
- rm.setMinimum(200);
- assertEquals(200, rm.getMinimum());
- assertEquals(200, rm.getValue());
- assertEquals(200, rm.getMaximum());
- assertEquals(0, rm.getExtent());
- reset(rm, 3);
- // should change extent
- rm.setExtent(10); // 0 < 0[9] < 99
- rm.setMinimum(95); // 95 < 95[3] < 98
- assertEquals(95, rm.getMinimum());
- assertEquals(95, rm.getValue());
- assertEquals(98, rm.getMaximum());
- assertEquals(3, rm.getExtent());
- }
- function testMaximum() {
- var rm = new goog.ui.RangeModel;
- rm.setMaximum(50);
- assertEquals(50, rm.getMaximum());
- reset(rm);
- // setting to smaller than minimum should change minimum, value and extent
- rm.setValue(5);
- rm.setExtent(10);
- rm.setMinimum(50);
- rm.setMaximum(40);
- assertEquals(40, rm.getMaximum());
- assertEquals(0, rm.getExtent());
- assertEquals(40, rm.getValue());
- assertEquals(40, rm.getMinimum());
- reset(rm);
- // setting smaller than value should change value to max - extent
- rm.setExtent(10);
- rm.setValue(50);
- rm.setMaximum(40);
- assertEquals(40, rm.getMaximum());
- assertEquals(30, rm.getValue());
- reset(rm);
- // should change value, and keep extent constant,
- // unless extent is > max - min.
- rm.setExtent(10);
- rm.setValue(90);
- rm.setMaximum(95);
- assertEquals(95, rm.getMaximum());
- assertEquals(10, rm.getExtent());
- assertEquals(85, rm.getValue());
- ////////////////
- // Change step
- reset(rm, 3);
- rm.setMaximum(50); // 0 < 0[0] < 51
- assertEquals(51, rm.getMaximum());
- reset(rm, 3);
- // setting to smaller than minimum should change minimum, value and extent
- rm.setValue(5); // 0 < 6[0] < 99
- rm.setExtent(10); // 0 < 6[9] < 99
- rm.setMinimum(50); // 50 < 50[9] < 98
- rm.setMaximum(40); // 41 < 41[0] < 41
- assertEquals(41, rm.getMaximum());
- assertEquals(0, rm.getExtent());
- assertEquals(41, rm.getValue());
- assertEquals(41, rm.getMinimum());
- reset(rm, 3);
- // setting smaller than value should change value to max - extent
- rm.setExtent(10); // 0 < 0[9] < 99
- rm.setValue(50); // 0 < 51[9] < 99
- rm.setMaximum(40); // 0 < 30[9] < 39
- assertEquals(39, rm.getMaximum());
- assertEquals(30, rm.getValue());
- reset(rm, 3);
- // should change value, and keep extent constant,
- // unless extent is > max - min.
- rm.setExtent(10); // 0 < 0[9] < 99
- rm.setValue(90); // 0 < 90[9] < 99
- rm.setMaximum(95); // 0 < 90[6] < 96
- assertEquals(96, rm.getMaximum());
- assertEquals(87, rm.getValue());
- assertEquals(9, rm.getExtent());
- }
- function testExtent() {
- var rm = new goog.ui.RangeModel;
- rm.setExtent(10);
- assertEquals(10, rm.getExtent());
- rm.setExtent(-10);
- assertEquals(0, rm.getExtent());
- rm.setValue(50);
- rm.setExtent(100);
- assertEquals(50, rm.getExtent());
- assertEquals(50, rm.getValue());
- ////////////////
- // Change step
- reset(rm, 3);
- rm.setExtent(10); // 0 < 0[9] < 99
- assertEquals(9, rm.getExtent());
- rm.setExtent(-10);
- assertEquals(0, rm.getExtent());
- rm.setValue(50); // 0 < 51[9] < 99
- rm.setExtent(100); // 0 < 51[48] < 99
- assertEquals(48, rm.getExtent());
- assertEquals(51, rm.getValue());
- }
- function testRoundToStep() {
- var rm = new goog.ui.RangeModel;
- rm.setStep(0.5);
- assertEquals(1, rm.roundToStep(1));
- assertEquals(0.5, rm.roundToStep(0.5));
- assertEquals(1, rm.roundToStep(0.75));
- assertEquals(0.5, rm.roundToStep(0.74));
- }
- function testRoundToStepWithMin() {
- var rm = new goog.ui.RangeModel;
- rm.setStep(0.5);
- rm.setMinimum(0.25);
- assertEquals(1.25, rm.roundToStepWithMin(1));
- assertEquals(0.75, rm.roundToStepWithMin(0.5));
- assertEquals(0.75, rm.roundToStepWithMin(0.75));
- assertEquals(0.75, rm.roundToStepWithMin(0.74));
- }
|