dom/tests/mochitest/ajax/scriptaculous/test/unit/slider_test.html

Thu, 15 Jan 2015 15:55:04 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 15 Jan 2015 15:55:04 +0100
branch
TOR_BUG_9701
changeset 9
a63d609f5ebe
permissions
-rw-r--r--

Back out 97036ab72558 which inappropriately compared turds to third parties.

michael@0 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
michael@0 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
michael@0 3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
michael@0 4 <head>
michael@0 5 <title>script.aculo.us Unit test file</title>
michael@0 6 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
michael@0 7 <script src="../../lib/prototype.js" type="text/javascript"></script>
michael@0 8 <script src="../../src/scriptaculous.js" type="text/javascript"></script>
michael@0 9 <script src="../../src/unittest.js" type="text/javascript"></script>
michael@0 10 <link rel="stylesheet" href="../test.css" type="text/css" />
michael@0 11 </head>
michael@0 12 <body>
michael@0 13 <h1>script.aculo.us Unit test file</h1>
michael@0 14 <p>
michael@0 15 Tests for slider.js
michael@0 16 </p>
michael@0 17
michael@0 18 <div id="track1" style="width:200px;background-color:#aaa;height:5px;">
michael@0 19 <div id="handle1" style="width:15px;height:25px;background-color:#f00;"> </div>
michael@0 20 </div>
michael@0 21
michael@0 22 <div id="track2-vertical" style="height:100px;background-color:#aaa;width:5px;">
michael@0 23 <div id="handle2-vertical" style="width:25px;height:10px;background-color:#f00;"> </div>
michael@0 24 </div>
michael@0 25
michael@0 26 <div id="track2-horizontal" style="height:5px;background-color:#aaa;width:100px;">
michael@0 27 <div id="handle2-horizontal" style="width:10px;height:25px;background-color:#f00;"> </div>
michael@0 28 </div>
michael@0 29
michael@0 30 <div id="track3" style="width:300px;background-color:#cfb;height:30px;">
michael@0 31 <span id="handle3-1">1</span>
michael@0 32 <span id="handle3-2">2</span>
michael@0 33 <span id="handle3-3">3</span>
michael@0 34 </div>
michael@0 35
michael@0 36 <div id="track4" style="width:300px;position:relative;background-color:#cbf;height:30px;">
michael@0 37 <span id="handle4-1" style="top:0;left:0;position:absolute;background-color:#f00;">1</span>
michael@0 38 <span id="handle4-2" style="top:0;left:0;position:absolute;background-color:#0f0;">2</span>
michael@0 39 <span id="handle4-3" style="top:0;left:0;position:absolute;background-color:#00f;">3</span>
michael@0 40 </div>
michael@0 41
michael@0 42 <div id="track5" style="width:300px;background-color:#cbf;height:30px;position:relative;z-index:0;">
michael@0 43 <div id="handle5-1" style="top:0;left:0;position:absolute;background-color:#f00;z-index:2">1</div>
michael@0 44 <div id="handle5-2" style="top:0;left:0;position:absolute;background-color:#0f0;z-index:2">2</div>
michael@0 45 <div id="handle5-3" style="top:0;left:0;position:absolute;background-color:#00f;z-index:2">3</div>
michael@0 46
michael@0 47 <div id="span5-1" style="top:0;left:0;position:absolute;background-color:#000;height:20px;z-index:1;"> </div>
michael@0 48 <div id="span5-2" style="top:0;left:0;position:absolute;background-color:#444;height:20px;z-index:1;"> </div>
michael@0 49 </div>
michael@0 50
michael@0 51 <div id="track6" style="width:20px;background-color:#cbf;height:100px;position:relative;z-index:0;">
michael@0 52 <div id="handle6-1" style="top:0;left:0;height:13px;position:absolute;background-color:#f00;z-index:2">1</div>
michael@0 53 <div id="handle6-2" style="top:0;left:0;height:13px;position:absolute;background-color:#0f0;z-index:2">2</div>
michael@0 54 <div id="handle6-3" style="top:0;left:0;height:13px;position:absolute;background-color:#00f;z-index:2">3</div>
michael@0 55
michael@0 56 <div id="span6-1" style="top:0;left:0;position:absolute;background-color:#000;width:20px;z-index:1;"> </div>
michael@0 57 <div id="span6-2" style="top:0;left:0;position:absolute;background-color:#444;width:20px;z-index:1;"> </div>
michael@0 58 </div>
michael@0 59
michael@0 60 <div id="track7" style="width:200px;background-color:#cbf;height:30px;position:relative;z-index:0;">
michael@0 61 <div id="handle7-1" style="top:0;left:0;position:absolute;background-color:#f88;z-index:2">1</div>
michael@0 62 <div id="handle7-2" style="top:0;left:0;position:absolute;background-color:#8f8;z-index:2">2</div>
michael@0 63 <div id="handle7-3" style="top:0;left:0;position:absolute;background-color:#88f;z-index:2">3</div>
michael@0 64
michael@0 65 <div id="span7-1" style="top:0;left:0;position:absolute;background-color:#000;height:20px;z-index:1;"> </div>
michael@0 66 <div id="span7-2" style="top:0;left:0;position:absolute;background-color:#444;height:20px;z-index:1;"> </div>
michael@0 67
michael@0 68 <div id="span7-start" style="top:0;left:0;position:absolute;background-color:#f00;height:20px;z-index:1;"> </div>
michael@0 69 <div id="span7-end" style="top:0;left:0;position:absolute;background-color:#00f;height:20px;z-index:1;"> </div>
michael@0 70 </div>
michael@0 71
michael@0 72
michael@0 73 <div id="debug"> </div>
michael@0 74
michael@0 75 <!-- Log output -->
michael@0 76 <div id="testlog"> </div>
michael@0 77
michael@0 78 <!-- Tests follow -->
michael@0 79 <script type="text/javascript" language="javascript" charset="utf-8">
michael@0 80 // <![CDATA[
michael@0 81 var globalValue;
michael@0 82
michael@0 83 new Test.Unit.Runner({
michael@0 84
michael@0 85 testSliderBasics: function() { with(this) {
michael@0 86 var slider = new Control.Slider('handle1', 'track1');
michael@0 87 assertInstanceOf(Control.Slider, slider);
michael@0 88 assertEqual(Prototype.Browser.IE ? 5 : 4, Event.observers.length);
michael@0 89
michael@0 90 assertEqual('horizontal', slider.axis);
michael@0 91 assertEqual(false, slider.disabled);
michael@0 92 assertEqual(0, slider.value);
michael@0 93
michael@0 94 slider.dispose();
michael@0 95 }},
michael@0 96
michael@0 97 testSliderValues: function() { with(this) {
michael@0 98 ['horizontal', 'vertical'].each( function(axis) {
michael@0 99 var slider = new Control.Slider('handle2-'+axis, 'track2-'+axis, {values:[0.2,0.4,0.6,0.8,1],axis:axis});
michael@0 100 assertEqual(axis, slider.axis);
michael@0 101 assertEqual(0.2, slider.value);
michael@0 102
michael@0 103 slider.setValue(0.35);
michael@0 104 assertEqual(0.4, slider.value);
michael@0 105
michael@0 106 slider.setValueBy(0.1);
michael@0 107 assertEqual(0.6, slider.value);
michael@0 108 slider.setValueBy(-0.6);
michael@0 109 assertEqual(0.2, slider.value);
michael@0 110
michael@0 111 slider.setValue(1);
michael@0 112 assertEqual(1, slider.value);
michael@0 113
michael@0 114 slider.setValue(-2);
michael@0 115 assertEqual(0.2, slider.value);
michael@0 116
michael@0 117 slider.setValue(55555);
michael@0 118 assertEqual(1, slider.value);
michael@0 119
michael@0 120 // leave active to be able to play around with the sliders
michael@0 121 // slider.dispose();
michael@0 122 });
michael@0 123 assertEqual("90px", $('handle2-horizontal').style.left);
michael@0 124 assertEqual("90px", $('handle2-vertical').style.top);
michael@0 125 }},
michael@0 126
michael@0 127 testSliderInitialValues: function() { with(this) {
michael@0 128 var slider = new Control.Slider('handle1', 'track1',{sliderValue:0.5});
michael@0 129 assertEqual(0.5, slider.value);
michael@0 130
michael@0 131 var slider = new Control.Slider(['handle4-1','handle4-2','handle4-3'], 'track4', {
michael@0 132 sliderValue:[50,145,170],
michael@0 133 values:[50,150,160,170,180],
michael@0 134 range:$R(50,180)
michael@0 135 });
michael@0 136 assertEqual(50, slider.value);
michael@0 137 assertEqual(50, slider.values[0]);
michael@0 138 assertEqual(150, slider.values[1]);
michael@0 139 assertEqual(170, slider.values[2]);
michael@0 140 slider.dispose();
michael@0 141
michael@0 142 var slider = new Control.Slider(['handle4-1','handle4-2','handle4-3'], 'track4', {
michael@0 143 sliderValue:[50,145,170],
michael@0 144 values:[50,150,160,170,180]
michael@0 145 });
michael@0 146 assertEqual(50, slider.value);
michael@0 147 assertEqual(50, slider.values[0]);
michael@0 148 assertEqual(150, slider.values[1]);
michael@0 149 assertEqual(170, slider.values[2]);
michael@0 150 slider.dispose();
michael@0 151
michael@0 152 var slider = new Control.Slider(['handle4-1','handle4-2','handle4-3'], 'track4', {
michael@0 153 restricted:true,
michael@0 154 sliderValue:[50,145,170],
michael@0 155 values:[50,150,160,170,180]
michael@0 156 });
michael@0 157 assertEqual(50, slider.value);
michael@0 158 assertEqual(50, slider.values[0]);
michael@0 159 assertEqual(150, slider.values[1]);
michael@0 160 assertEqual(170, slider.values[2]);
michael@0 161 slider.dispose();
michael@0 162 }},
michael@0 163
michael@0 164 testSliderOnChange: function() { with(this) {
michael@0 165 var slider = new Control.Slider('handle1', 'track1', { onChange:function(v){ globalValue = v; } });
michael@0 166 slider.setValue(1);
michael@0 167 assert(1, globalValue);
michael@0 168 assert(1, slider.value);
michael@0 169
michael@0 170 slider.setDisabled();
michael@0 171 slider.setValue(0.5);
michael@0 172 assert(1, globalValue);
michael@0 173 assert(1, slider.value);
michael@0 174
michael@0 175 slider.setEnabled();
michael@0 176 slider.setValue(0.2);
michael@0 177 assert(0.2, globalValue);
michael@0 178 assert(0.2, slider.value);
michael@0 179
michael@0 180 // s.event should be null if setValue is called from script
michael@0 181 var slider = new Control.Slider(['handle3-1','handle3-2','handle3-3'], 'track3', {
michael@0 182 onChange:function(v, s){ if(!s.event) globalValue = v; } });
michael@0 183
michael@0 184 slider.setValue(0.5,1);
michael@0 185 assertEqual([0,0.5,0].inspect(), globalValue.inspect());
michael@0 186 assert(!slider.event);
michael@0 187
michael@0 188 slider.dispose();
michael@0 189 }},
michael@0 190
michael@0 191 testMultipleHandles: function() { with(this) {
michael@0 192 var slider = new Control.Slider(['handle3-1','handle3-2','handle3-3'], 'track3', {range:$R(0,300)});
michael@0 193 assertInstanceOf(Control.Slider, slider);
michael@0 194
michael@0 195 slider.setValue(20, 0);
michael@0 196 slider.setValue(50, 1);
michael@0 197 slider.setValue(70, 2);
michael@0 198 assertEqual(20, slider.values[0]);
michael@0 199 assertEqual(50, slider.values[1]);
michael@0 200 assertEqual(70, slider.values[2]);
michael@0 201 assertEqual("20px", slider.handles[0].style.left);
michael@0 202 assertEqual("49px", slider.handles[1].style.left);
michael@0 203 assertEqual("68px", slider.handles[2].style.left);
michael@0 204
michael@0 205 // should change last manipulated handled by -10,
michael@0 206 // so check for handle with idx 2
michael@0 207 slider.setValueBy(-10);
michael@0 208 assertEqual(60, slider.values[2]);
michael@0 209
michael@0 210 slider.setValueBy(10, 0);
michael@0 211 assertEqual(20, slider.values[0]);
michael@0 212 slider.setValueBy(10, 1);
michael@0 213 assertEqual(60, slider.values[1]);
michael@0 214 slider.setValueBy(20, slider.activeHandleIdx);
michael@0 215 assertEqual(80, slider.values[1]);
michael@0 216 }},
michael@0 217
michael@0 218 testMultipleHandlesValues: function() { with(this) {
michael@0 219 var slider = new Control.Slider(['handle4-1','handle4-2','handle4-3'], 'track4', {values:[50,150,160,170,180],range:$R(50,180)});
michael@0 220 assertInstanceOf(Control.Slider, slider);
michael@0 221
michael@0 222 slider.setValue(20, 0);
michael@0 223 slider.setValue(150, 2);
michael@0 224 slider.setValue(179, 1);
michael@0 225
michael@0 226 assertEqual(50, slider.values[0]);
michael@0 227 assertEqual(150, slider.values[2]);
michael@0 228 assertEqual(180, slider.values[1]);
michael@0 229
michael@0 230 assertEqual("0px", slider.handles[0].style.left);
michael@0 231 assertEqual("225px", slider.handles[2].style.left);
michael@0 232 assertEqual("293px", slider.handles[1].style.left);
michael@0 233
michael@0 234 assertEqual($R(50,150).inspect(), slider.getRange().inspect());
michael@0 235 assertEqual(30, slider.getRange(1).end-slider.getRange(1).start);
michael@0 236 }},
michael@0 237
michael@0 238 testMultipleHandlesSpans: function() { with(this) {
michael@0 239 var slider = new Control.Slider(['handle5-1','handle5-2','handle5-3'], 'track5',
michael@0 240 {spans:['span5-1','span5-2'],range:$R(0,300)});
michael@0 241 assertInstanceOf(Control.Slider, slider);
michael@0 242
michael@0 243 slider.setValue(20, 0);
michael@0 244 slider.setValue(100, 1);
michael@0 245 slider.setValue(150, 2);
michael@0 246
michael@0 247 assertEqual("20px", $('span5-1').style.left);
michael@0 248 assertEqual("78px", $('span5-1').style.width);
michael@0 249 assertEqual("98px", $('span5-2').style.left);
michael@0 250 assertEqual("49px", $('span5-2').style.width);
michael@0 251
michael@0 252 slider.setValue(30, 0);
michael@0 253 slider.setValue(110, 1);
michael@0 254 slider.setValue(90, 2);
michael@0 255
michael@0 256 assertEqual("29px", $('span5-1').style.left);
michael@0 257 assertEqual("59px", $('span5-1').style.width);
michael@0 258 assertEqual("88px", $('span5-2').style.left);
michael@0 259 assertEqual("20px", $('span5-2').style.width);
michael@0 260
michael@0 261 slider.dispose();
michael@0 262 }},
michael@0 263
michael@0 264 testMultipleHandlesSpansStartEnd: function() { with(this) {
michael@0 265 var slider = new Control.Slider(['handle7-1','handle7-2','handle7-3'], 'track7',
michael@0 266 { spans:['span7-1','span7-2'],
michael@0 267 startSpan:'span7-start',
michael@0 268 endSpan:'span7-end',
michael@0 269 range:$R(0,200) });
michael@0 270 assertInstanceOf(Control.Slider, slider);
michael@0 271
michael@0 272 slider.setValue(20, 0);
michael@0 273 slider.setValue(100, 1);
michael@0 274 slider.setValue(150, 2);
michael@0 275 assertEqual("0px", $('span7-start').style.left);
michael@0 276 assertEqual("19px", $('span7-start').style.width);
michael@0 277 assertEqual("145px", $('span7-end').style.left);
michael@0 278 assertEqual("48px", $('span7-end').style.width);
michael@0 279
michael@0 280 slider.dispose();
michael@0 281 }},
michael@0 282
michael@0 283 testSingleHandleSpansStartEnd: function() { with(this) {
michael@0 284 var slider = new Control.Slider('handle7-1', 'track7',
michael@0 285 { spans:['span7-1','span7-2'],
michael@0 286 startSpan:'span7-start',
michael@0 287 endSpan:'span7-end',
michael@0 288 range:$R(0,200) });
michael@0 289 assertInstanceOf(Control.Slider, slider);
michael@0 290
michael@0 291 slider.setValue(20, 0);
michael@0 292 assertEqual("0px", $('span7-start').style.left);
michael@0 293 assertEqual("19px", $('span7-start').style.width);
michael@0 294 assertEqual("19px", $('span7-end').style.left);
michael@0 295 assertEqual("174px", $('span7-end').style.width);
michael@0 296
michael@0 297 slider.dispose();
michael@0 298 }},
michael@0 299
michael@0 300 testMultipleHandlesStyles: function() { with(this) {
michael@0 301 var slider = new Control.Slider(['handle7-1','handle7-2','handle7-3'], 'track7',
michael@0 302 { spans:['span7-1','span7-2'],
michael@0 303 startSpan:'span7-start',
michael@0 304 endSpan:'span7-end',
michael@0 305 range:$R(0,200) });
michael@0 306 assertInstanceOf(Control.Slider, slider);
michael@0 307 assert(Element.hasClassName('handle7-1','selected'));
michael@0 308 assert(!Element.hasClassName('handle7-2','selected'));
michael@0 309 assert(!Element.hasClassName('handle7-3','selected'));
michael@0 310
michael@0 311 slider.setValue(20, 0);
michael@0 312 assert(Element.hasClassName('handle7-1','selected'));
michael@0 313 assert(!Element.hasClassName('handle7-2','selected'));
michael@0 314 assert(!Element.hasClassName('handle7-3','selected'));
michael@0 315
michael@0 316 slider.setValue(100, 1);
michael@0 317 assert(!Element.hasClassName('handle7-1','selected'));
michael@0 318 assert(Element.hasClassName('handle7-2','selected'));
michael@0 319 assert(!Element.hasClassName('handle7-3','selected'));
michael@0 320
michael@0 321 slider.setValue(150, 2);
michael@0 322 assert(!Element.hasClassName('handle7-1','selected'));
michael@0 323 assert(!Element.hasClassName('handle7-2','selected'));
michael@0 324 assert(Element.hasClassName('handle7-3','selected'));
michael@0 325
michael@0 326 slider.dispose();
michael@0 327 }},
michael@0 328
michael@0 329 testMultipleHandlesSpansRestricted: function() { with(this) {
michael@0 330 var slider = new Control.Slider(['handle5-1','handle5-2','handle5-3'], 'track5',
michael@0 331 {restricted:true,spans:['span5-1','span5-2'],range:$R(0,300)});
michael@0 332 assertInstanceOf(Control.Slider, slider);
michael@0 333
michael@0 334 slider.setValue(20, 0);
michael@0 335 slider.setValue(100, 1);
michael@0 336 slider.setValue(150, 2);
michael@0 337 assertEqual(0, slider.values[0]);
michael@0 338 assertEqual(0, slider.values[1]);
michael@0 339 assertEqual(150, slider.values[2]);
michael@0 340
michael@0 341 slider.setValue(150, 2);
michael@0 342 slider.setValue(100, 1);
michael@0 343 slider.setValue(20, 0);
michael@0 344 assertEqual(20, slider.values[0]);
michael@0 345 assertEqual(100, slider.values[1]);
michael@0 346 assertEqual(150, slider.values[2]);
michael@0 347 assertEqual("20px", $('span5-1').style.left);
michael@0 348 assertEqual("78px", $('span5-1').style.width);
michael@0 349 assertEqual("98px", $('span5-2').style.left);
michael@0 350 assertEqual("49px", $('span5-2').style.width);
michael@0 351
michael@0 352 slider.setValue(30, 0);
michael@0 353 slider.setValue(110, 1);
michael@0 354 slider.setValue(90, 2);
michael@0 355 assertEqual(30, slider.values[0]);
michael@0 356 assertEqual(110, slider.values[1]);
michael@0 357 assertEqual(110, slider.values[2], '???');
michael@0 358
michael@0 359 assertEqual("29px", $('span5-1').style.left);
michael@0 360 assertEqual("78px", $('span5-1').style.width);
michael@0 361 assertEqual("107px", $('span5-2').style.left);
michael@0 362 assertEqual("0px", $('span5-2').style.width);
michael@0 363
michael@0 364 slider.dispose();
michael@0 365 }},
michael@0 366
michael@0 367 testMultipleHandlesSpansVertical: function() { with(this) {
michael@0 368 var slider = new Control.Slider(['handle6-1','handle6-2','handle6-3'], 'track6', {axis:'vertical',spans:['span6-1','span6-2'],range:$R(0,100)});
michael@0 369 assertInstanceOf(Control.Slider, slider);
michael@0 370
michael@0 371 slider.setValue(20, 0);
michael@0 372 slider.setValue(80, 1);
michael@0 373 slider.setValue(90, 2);
michael@0 374
michael@0 375 assertEqual("17px", $('span6-1').style.top);
michael@0 376 assertEqual("52px", $('span6-1').style.height);
michael@0 377 assertEqual("70px", $('span6-2').style.top);
michael@0 378 assertEqual("9px", $('span6-2').style.height);
michael@0 379
michael@0 380 slider.setValue(30, 0);
michael@0 381 slider.setValue(20, 1);
michael@0 382 slider.setValue(95, 2);
michael@0 383
michael@0 384 assertEqual("17px", $('span6-1').style.top);
michael@0 385 assertEqual("9px", $('span6-1').style.height);
michael@0 386 assertEqual("26px", $('span6-2').style.top);
michael@0 387 assertEqual("57px", $('span6-2').style.height);
michael@0 388 }},
michael@0 389
michael@0 390 testRange: function() { with(this) {
michael@0 391 var slider = new Control.Slider('handle1','track1');
michael@0 392 assertEqual(0, slider.value);
michael@0 393 slider.setValue(1);
michael@0 394 assertEqual("185px", $('handle1').style.left);
michael@0 395 slider.dispose();
michael@0 396
michael@0 397 var slider = new Control.Slider('handle1','track1',{range:$R(10,20)});
michael@0 398 assertEqual(10, slider.value);
michael@0 399 assertEqual("0px", $('handle1').style.left);
michael@0 400 slider.setValue(15);
michael@0 401 assertEqual("93px", $('handle1').style.left);
michael@0 402 slider.setValue(20);
michael@0 403 assertEqual("185px", $('handle1').style.left);
michael@0 404 slider.dispose();
michael@0 405 }},
michael@0 406
michael@0 407 // test for #3732
michael@0 408 testRangeValues: function() { with(this) {
michael@0 409 // test for non-zero starting range
michael@0 410 var slider = new Control.Slider('handle1','track1',{
michael@0 411 range:$R(1,3), values:[1,2,3]
michael@0 412 });
michael@0 413 assertEqual(1, slider.value);
michael@0 414 assertEqual("0px", $('handle1').style.left);
michael@0 415 slider.setValue(2);
michael@0 416 assertEqual("93px", $('handle1').style.left);
michael@0 417 slider.setValue(3);
michael@0 418 assertEqual("185px", $('handle1').style.left);
michael@0 419 slider.dispose();
michael@0 420
michael@0 421 // test zero-starting range
michael@0 422 var slider = new Control.Slider('handle1','track1',{
michael@0 423 range:$R(0,2), values:[0,1,2]
michael@0 424 });
michael@0 425 assertEqual(0, slider.value);
michael@0 426 assertEqual("0px", $('handle1').style.left);
michael@0 427 slider.setValue(1);
michael@0 428 assertEqual("93px", $('handle1').style.left);
michael@0 429 slider.setValue(2);
michael@0 430 assertEqual("185px", $('handle1').style.left);
michael@0 431 slider.dispose();
michael@0 432 }}
michael@0 433
michael@0 434 }, "testlog");
michael@0 435 // ]]>
michael@0 436 </script>
michael@0 437 </body>
michael@0 438 </html>

mercurial