UNPKG

sku-pg

Version:

Skulpt is a Javascript implementation of Python 2.x. Python that runs in your browser!

271 lines (215 loc) 6.82 kB
<!DOCTYPE html> <html> <!-- Copyright 2006 The Closure Library Authors. All Rights Reserved. Use of this source code is governed by the Apache License, Version 2.0. See the COPYING file for details. --> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Closure Unit Tests - goog.ui.RangeModel</title> <script src="../base.js"></script> <script> goog.require('goog.testing.jsunit'); goog.require('goog.ui.RangeModel'); </script> </head> <body> <script> 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)); } </script> </body> </html>