267 lines
6.6 KiB
JavaScript
267 lines
6.6 KiB
JavaScript
// 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));
|
|
}
|