/*
	*************************

	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;
	    }
  	});
});