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

	Logarithmic Scale Tests

	*************************

*/
describe("Slider with logarithmic scale tests", function() {

	var testSlider;

	it("Should properly position the slider", function() {
		testSlider = $("#testSlider1").slider({
			min: 0,
			max: 10000,
			scale: 'logarithmic',
			value: 100 // This should be at 50%
		});

		var expectedPostition = 210 / 2 + 'px';

		var handle = $("#testSlider1").siblings('div.slider').find('.min-slider-handle');
		expect(handle.css('left')).toBe(expectedPostition);
	});

	it("Should properly position the tick marks", function() {
		testSlider = $("#testSlider1").slider({
			min: 0,
			max: 100,
			scale: 'logarithmic',
			ticks: [0,10,20,50,100]
		});

		// Position expected for the '10' tick
		var expectedTickOnePosition = 210 / 2 + 'px'; //should be at 50%
		
		var handle = $("#testSlider1").siblings('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: 0,
			max: 10000,
			scale: 'logarithmic',
			value: 100,
			step: 5
		});

		// Focus on handle1
		var handle1 = $("#testSlider1").siblings('div.slider:first').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);
		}
	});

	it("Step size should be honored with mouse movements", function() {
		testSlider = $("#testSlider1").slider({
			min: 50,
			max: 10000,
			scale: 'logarithmic',
			value: 100,
			step: 100
		});
		var mouse = document.createEvent('MouseEvents');
		var dataSlider = testSlider.data('slider');
		var pos = (dataSlider.sliderElem[dataSlider.sizePos] / 2 +
				   dataSlider._state.offset[dataSlider.stylePos]);
		mouse.initMouseEvent(
			'mousedown', true, true, window, 1, pos,
			dataSlider._state.offset['top'], pos, dataSlider._state.offset['top'],
			false, false, false, false, 0, null);
		dataSlider._mousedown(mouse);
		/* Precise center value would have be 707.  It should be rounded to
		 * 750. */
		expect(testSlider.slider('getValue')).toBe(750);
	});

	afterEach(function() {
	    if(testSlider) {
	      testSlider.slider('destroy');
	      testSlider = null;
	    }
  	});
});
