r1955 - trunk/tests/unit/slider

r1955 - trunk/tests/unit/slider


Author: rdworth
Date: Sun Feb 1 21:58:49 2009
New Revision: 1955
Added:
trunk/tests/unit/slider/slider_core.js (contents, props changed)
trunk/tests/unit/slider/slider_defaults.js (contents, props changed)
trunk/tests/unit/slider/slider_events.js (contents, props changed)
trunk/tests/unit/slider/slider_methods.js (contents, props changed)
trunk/tests/unit/slider/slider_options.js (contents, props changed)
trunk/tests/unit/slider/slider_tickets.js (contents, props changed)
Removed:
trunk/tests/unit/slider/slider.js
Modified:
trunk/tests/unit/slider/slider.html
Log:
slider unit tests: created separate file for each module: core, common
widget, events, methods, options, tickets
Modified: trunk/tests/unit/slider/slider.html
==============================================================================
--- trunk/tests/unit/slider/slider.html    (original)
+++ trunk/tests/unit/slider/slider.html    Sun Feb 1 21:58:49 2009
@@ -12,7 +12,12 @@
    <script type="text/javascript"
src="../../../external/qunit/testrunner.js"></script>
    <script type="text/javascript"
src="../../../external/simulate/jquery.simulate.js"></script>
-    <script type="text/javascript" src="slider.js"></script>
+    <script type="text/javascript" src="slider_core.js"></script>
+    <script type="text/javascript" src="slider_defaults.js"></script>
+    <script type="text/javascript" src="slider_events.js"></script>
+    <script type="text/javascript" src="slider_methods.js"></script>
+    <script type="text/javascript" src="slider_options.js"></script>
+    <script type="text/javascript" src="slider_tickets.js"></script>
</head>
<body>
Added: trunk/tests/unit/slider/slider_core.js
==============================================================================
--- (empty file)
+++ trunk/tests/unit/slider/slider_core.js    Sun Feb 1 21:58:49 2009
@@ -0,0 +1,302 @@
+/*
+ * slider unit tests
+ */
+(function($) {
+//
+// Slider Test Helper Functions
+//
+
+var el, options;
+
+function handle() {
+    return el.find(".ui-slider-handle");
+}
+
+// Slider Tests
+module("slider: core");
+
+test("init", function() {
+    expect(6);
+
+    $("<div></div>").appendTo('body').slider().remove();
+    ok(true, '.slider() called on element');
+
+    $([]).slider().remove();
+    ok(true, '.slider() called on empty collection');
+
+    $('<div></div>').slider().remove();
+    ok(true, '.slider() called on disconnected DOMElement');
+
+    $('<div></div>').slider().slider("foo").remove();
+    ok(true, 'arbitrary method called after init');
+
+    el = $('<div></div>').slider();
+    var foo = el.data("foo.slider");
+    el.remove();
+    ok(true, 'arbitrary option getter after init');
+
+    $('<div></div>').slider().data("foo.slider", "bar").remove();
+    ok(true, 'arbitrary option setter after init');
+});
+
+test("destroy", function() {
+    expect(8);
+
+    $("<div></div>").appendTo('body').slider().slider("destroy").remove();
+    ok(true, '.slider("destroy") called on element');
+
+    $([]).slider().slider("destroy").remove();
+    ok(true, '.slider("destroy") called on empty collection');
+
+    
$('<div></div>').appendTo('body').remove().slider().slider("destroy").remove();
+    ok(true, '.slider("destroy") called on disconnected DOMElement');
+
+    $('<div></div>').slider().slider("destroy").slider("foo").remove();
+    ok(true, 'arbitrary method called after destroy');
+
+    el = $('<div></div>').slider();
+    var foo = el.slider("destroy").data("foo.slider");
+    el.remove();
+    ok(true, 'arbitrary option getter (.data) after destroy');
+
+    el = $('<div></div>').slider();
+    var foo = el.slider("destroy").slider("option", "foo");
+    el.remove();
+    ok(true, 'arbitrary option getter (.slider option method) after destroy');
+
+    
$('<div></div>').slider().slider("destroy").data("foo.slider", "bar").remove();
+    ok(true, 'arbitrary option setter (.data) after destroy');
+
+    
$('<div></div>').slider().slider("destroy").slider("options", "foo", "bar").remove();
+    ok(true, 'arbitrary option setter (.slider option method) after destroy');
+});
+
+test("keydown HOME on handle sets value to min", function() {
+    el = $('<div></div>');
+    options = {
+        max: 5,
+        min: -5,
+        orientation: 'horizontal',
+        step: 1
+    };
+    el.slider(options);
+
+    el.slider("value", 0);
+
+    handle().simulate("keydown", { keyCode: $.ui.keyCode.HOME });
+    equals(el.slider("value"), options.min);
+
+    el.slider('destroy');    
+
+    el = $('<div></div>');
+    options = {
+        max: 5,
+        min: -5,
+        orientation: 'vertical',
+        step: 1
+    };
+    el.slider(options);
+
+    el.slider("value", 0);
+
+    handle().simulate("keydown", { keyCode: $.ui.keyCode.HOME });
+    equals(el.slider("value"), options.min);
+
+    el.slider('destroy');
+});
+
+test("keydown END on handle sets value to max", function() {
+    el = $('<div></div>');
+    options = {
+        max: 5,
+        min: -5,
+        orientation: 'horizontal',
+        step: 1
+    };
+    el.slider(options);
+
+    el.slider("value", 0);
+
+    handle().simulate("keydown", { keyCode: $.ui.keyCode.END });
+    equals(el.slider("value"), options.max);
+
+    el.slider('destroy');    
+
+    el = $('<div></div>');
+    options = {
+        max: 5,
+        min: -5,
+        orientation: 'vertical',
+        step: 1
+    };
+    el.slider(options);
+
+    el.slider("value", 0);
+
+    handle().simulate("keydown", { keyCode: $.ui.keyCode.END });
+    equals(el.slider("value"), options.max);
+
+    el.slider('destroy');
+});
+
+test("keydown UP on handle increases value by step, not greater than max",
function() {
+    el = $('<div></div>');
+    options = {
+        max: 5,
+        min: -5,
+        orientation: 'horizontal',
+        step: 1
+    };
+    el.slider(options);
+
+    el.slider("value", options.max - options.step);
+
+    handle().simulate("keydown", { keyCode: $.ui.keyCode.UP });
+    equals(el.slider("value"), options.max);
+
+    handle().simulate("keydown", { keyCode: $.ui.keyCode.UP });
+    equals(el.slider("value"), options.max);
+
+    el.slider("destroy");    
+
+    el = $('<div></div>');
+    options = {
+        max: 5,
+        min: -5,
+        orientation: 'vertical',
+        step: 1
+    };
+    el.slider(options);
+
+    el.slider("value", options.max - options.step);
+
+    handle().simulate("keydown", { keyCode: $.ui.keyCode.UP });
+    equals(el.slider("value"), options.max);
+
+    handle().simulate("keydown", { keyCode: $.ui.keyCode.UP });
+    equals(el.slider("value"), options.max);
+
+    el.slider("destroy");    
+});
+
+test("keydown RIGHT on handle increases value by step, not greater than
max", function() {
+    el = $('<div></div>');
+    options = {
+        max: 5,
+        min: -5,
+        orientation: 'horizontal',
+        step: 1
+    };
+    el.slider(options);
+
+    el.slider("value", options.max - options.step);
+
+    handle().simulate("keydown", { keyCode: $.ui.keyCode.RIGHT });
+    equals(el.slider("value"), options.max);
+
+    handle().simulate("keydown", { keyCode: $.ui.keyCode.RIGHT });
+    equals(el.slider("value"), options.max);
+
+    el.slider("destroy");    
+
+    el = $('<div></div>');
+    options = {
+        max: 5,
+        min: -5,
+        orientation: 'vertical',
+        step: 1
+    };
+    el.slider(options);
+
+    el.slider("value", options.max - options.step);
+
+    handle().simulate("keydown", { keyCode: $.ui.keyCode.RIGHT });
+    equals(el.slider("value"), options.max);
+
+    handle().simulate("keydown", { keyCode: $.ui.keyCode.RIGHT });
+    equals(el.slider("value"), options.max);
+
+    el.slider("destroy");    
+});
+
+test("keydown DOWN on handle decreases value by step, not less than min",
function() {
+    el = $('<div></div>');
+    options = {
+        max: 5,
+        min: -5,
+        orientation: 'horizontal',
+        step: 1
+    };
+    el.slider(options);
+
+    el.slider("value", options.min + options.step);
+
+    handle().simulate("keydown", { keyCode: $.ui.keyCode.DOWN });
+    equals(el.slider("value"), options.min);
+
+    handle().simulate("keydown", { keyCode: $.ui.keyCode.DOWN });
+    equals(el.slider("value"), options.min);
+
+    el.slider("destroy");    
+
+    el = $('<div></div>');
+    options = {
+        max: 5,
+        min: -5,
+        orientation: 'vertical',
+        step: 1
+    };
+    el.slider(options);
+
+    el.slider("value", options.min + options.step);
+
+    handle().simulate("keydown", { keyCode: $.ui.keyCode.DOWN });
+    equals(el.slider("value"), options.min);
+
+    handle().simulate("keydown", { keyCode: $.ui.keyCode.DOWN });
+    equals(el.slider("value"), options.min);
+
+    el.slider("destroy");    
+});
+
+test("keydown LEFT on handle decreases value by step, not less than min",
function() {
+    el = $('<div></div>');
+    options = {
+        max: 5,
+        min: -5,
+        orientation: 'horizontal',
+        step: 1
+    };
+    el.slider(options);
+
+    el.slider("value", options.min + options.step);
+
+    handle().simulate("keydown", { keyCode: $.ui.keyCode.LEFT });
+    equals(el.slider("value"), options.min);
+
+    handle().simulate("keydown", { keyCode: $.ui.keyCode.LEFT });
+    equals(el.slider("value"), options.min);
+
+    el.slider("destroy");    
+
+    el = $('<div></div>');
+    options = {
+        max: 5,
+        min: -5,
+        orientation: 'vertical',
+        step: 1
+    };
+    el.slider(options);
+
+    el.slider("value", options.min + options.step);
+
+    handle().simulate("keydown", { keyCode: $.ui.keyCode.LEFT });
+    equals(el.slider("value"), options.min);
+
+    handle().simulate("keydown", { keyCode: $.ui.keyCode.LEFT });
+    equals(el.slider("value"), options.min);
+
+    el.slider("destroy");    
+});
+
+})(jQuery);
Added: trunk/tests/unit/slider/slider_defaults.js
==============================================================================
--- (empty file)
+++ trunk/tests/unit/slider/slider_defaults.js    Sun Feb 1 21:58:49 2009
@@ -0,0 +1,19 @@
+/*
+ * slider_defaults.js
+ */
+
+var slider_defaults = {
+    animate: false,
+    delay: 0,
+    disabled: false,
+    distance: 0,
+    max: 100,
+    min: 0,
+    orientation: 'auto',
+    range: false,
+    step: 1,
+    value: 0,
+    values: null
+};
+
+commonWidgetTests('slider', { defaults: slider_defaults });
Added: trunk/tests/unit/slider/slider_events.js
==============================================================================
--- (empty file)
+++ trunk/tests/unit/slider/slider_events.js    Sun Feb 1 21:58:49 2009
@@ -0,0 +1,24 @@
+/*
+ * slider_events.js
+ */
+(function($) {
+
+module("slider: events");
+
+test("start", function() {
+    ok(false, "missing test - untested code is broken code.");
+});
+
+test("slide", function() {
+    ok(false, "missing test - untested code is broken code.");
+});
+
+test("change", function() {
+    ok(false, "missing test - untested code is broken code.");
+});
+
+test("stop", function() {
+    ok(false, "missing test - untested code is broken code.");
+});
+
+})(jQuery);
Added: trunk/tests/unit/slider/slider_methods.js
==============================================================================
--- (empty file)
+++ trunk/tests/unit/slider/slider_methods.js    Sun Feb 1 21:58:49 2009
@@ -0,0 +1,24 @@
+/*
+ * slider_methods.js
+ */
+(function($) {
+
+module("slider: methods");
+
+test("value", function() {
+    ok(false, "missing test - untested code is broken code.");
+});
+
+test("values", function() {
+    ok(false, "missing test - untested code is broken code.");
+});
+
+test("enable", function() {
+    ok(false, "missing test - untested code is broken code.");
+});
+
+test("disable", function() {
+    ok(false, "missing test - untested code is broken code.");
+});
+
+})(jQuery);
Added: trunk/tests/unit/slider/slider_options.js
==============================================================================
--- (empty file)
+++ trunk/tests/unit/slider/slider_options.js    Sun Feb 1 21:58:49 2009
@@ -0,0 +1,105 @@
+/*
+ * slider_options.js
+ */
+(function($) {
+
+function handle() {
+    return el.find(".ui-slider-handle");
+}
+
+module("slider: options");
+
+test("animate", function() {
+    ok(false, "missing test - untested code is broken code.");
+});
+
+test("max", function() {
+    el = $('<div></div>');
+    
+    options = {
+        max: 37,
+        min: 6,
+        orientation: 'horizontal',
+        step: 1,
+        value: 50
+    };
+
+    el.slider(options);
+    ok(el.slider("option", "value") == options.value, "value option is not
contained by max");
+    ok(el.slider("value") == options.max, "value method is contained by max");
+    el.slider('destroy');
+
+});
+
+test("min", function() {
+    el = $('<div></div>');
+    
+    options = {
+        max: 37,
+        min: 6,
+        orientation: 'vertical',
+        step: 1,
+        value: 2
+    };
+
+    el.slider(options);
+    ok(el.slider("option", "value") == options.value, "value option is not
contained by min");
+    ok(el.slider("value") == options.min, "value method is contained by min");
+    el.slider('destroy');
+
+});
+
+test("orientation", function() {
+    el = $('<div></div>');
+
+    options = {
+        max: 2,
+        min: -2,
+        orientation: 'vertical',
+        value: 1
+    };
+
+    var percentVal = (options.value - options.min) / (options.max -
options.min) * 100;
+
+    el.slider(options).slider("option", "orientation", "horizontal");
+    ok(el.is('.ui-slider-horizontal'), "horizontal slider has
class .ui-slider-horizontal");
+    ok(!el.is('.ui-slider-vertical'), "horizontal slider does not have
class .ui-slider-vertical");
+    equals(handle().css('left'), percentVal + '%', "horizontal slider handle
is positioned with left: %");
+
+    el.slider('destroy');
+
+    options = {
+        max: 2,
+        min: -2,
+        orientation: 'horizontal',
+        value: -1
+    };
+
+    var percentVal = (options.value - options.min) / (options.max -
options.min) * 100;
+
+    el.slider(options).slider("option", "orientation", "vertical");
+    ok(el.is('.ui-slider-vertical'), "vertical slider has
class .ui-slider-vertical");
+    ok(!el.is('.ui-slider-horizontal'), "vertical slider does not have
class .ui-slider-horizontal");
+    equals(handle().css('bottom'), percentVal + '%', "vertical slider handle
is positioned with bottom: %");
+
+    el.slider('destroy');
+
+});
+
+test("range", function() {
+    ok(false, "missing test - untested code is broken code.");
+});
+
+test("step", function() {
+    ok(false, "missing test - untested code is broken code.");
+});
+
+test("value", function() {
+    ok(false, "missing test - untested code is broken code.");
+});
+
+test("values", function() {
+    ok(false, "missing test - untested code is broken code.");
+});
+
+})(jQuery);
Added: trunk/tests/unit/slider/slider_tickets.js
==============================================================================
--- (empty file)
+++ trunk/tests/unit/slider/slider_tickets.js    Sun Feb 1 21:58:49 2009
@@ -0,0 +1,8 @@
+/*
+ * slider_tickets.js
+ */
+(function($) {
+
+module("slider: tickets");
+
+})(jQuery);