/* ************************* Logarithmic Scale Tests ************************* */ describe("Slider with logarithmic scale tests", function() { var testSlider; describe("Should properly position the slider", function() { function testSliderPosition(min, max, value){ testSlider = $("#testSlider1").slider({ min: min, max: max, scale: 'logarithmic', value: value // This should be at 50% }); var expectedPostition = 210 / 2 + 'px'; var handle = $("#testSlider1").prev('div.slider').find('.min-slider-handle'); expect(handle.css('left')).toBe(expectedPostition); } it("with positive values", function() { testSliderPosition(1, 10000, 100); }); it("with zero", function() { testSliderPosition(0, 63, 7); }); it("with a negative value", function() { testSliderPosition(-7, 56, 0); }); }); it("Should properly position the tick marks", function() { testSlider = $("#testSlider1").slider({ min: 1, max: 100, scale: 'logarithmic', ticks: [1,10,20,50,100] }); // Position expected for the '10' tick var expectedTickOnePosition = 210 / 2 + 'px'; //should be at 50% var handle = $("#testSlider1").prev('div.slider').find(".slider-tick").eq(1); expect(handle.css('left')).toBe(expectedTickOnePosition); }); it("Should use step size when navigating the keyboard", function() { testSlider = $("#testSlider1").slider({ min: 1, max: 10000, scale: 'logarithmic', value: 100, step: 5 }); // Focus on handle1 var handle1 = $("#testSlider1").prev('div.slider').find('.slider-handle'); handle1.focus(); // Create keyboard event var keyboardEvent = document.createEvent("Events"); keyboardEvent.initEvent("keydown", true, true); var keyPresses = 0; handle1.on("keydown", function() { keyPresses++; var value = $("#testSlider1").slider('getValue'); expect(value).toBe(100 + keyPresses*5); }); keyboardEvent.keyCode = keyboardEvent.which = 39; // RIGHT for (var i = 0; i < 5; i++) { handle1[0].dispatchEvent(keyboardEvent); } }); afterEach(function() { if(testSlider) { testSlider.slider('destroy'); testSlider = null; } }); });