Upgrade to ExtJS 3.2.0 - Released 03/30/2010
[extjs.git] / test / unit / widgets / Slider.js
diff --git a/test/unit/widgets/Slider.js b/test/unit/widgets/Slider.js
new file mode 100644 (file)
index 0000000..f239531
--- /dev/null
@@ -0,0 +1,204 @@
+/*!
+ * Ext JS Library 3.2.0
+ * Copyright(c) 2006-2010 Ext JS, Inc.
+ * licensing@extjs.com
+ * http://www.extjs.com/license
+ */
+/**
+ * Tests Ext.data.Store functionality
+ * @author Ed Spencer
+ */
+(function() {
+    var suite  = Ext.test.session.getSuite('Ext.Slider'),
+        assert = Y.Assert;
+        
+    suite.add(new Y.Test.Case({
+        name: 'constructor and initComponent',
+        
+        setUp: function() {
+            this.slider = new Ext.Slider();
+        },
+        
+        testDefaultValues: function() {
+            assert.areEqual(0, this.slider.minValue);
+            assert.areEqual(0, this.slider.value);
+            assert.areEqual(100, this.slider.maxValue);
+        },
+        
+        testDefaultValueSet: function() {
+            var slider = new Ext.Slider({minValue: 50});
+            
+            assert.areEqual(50, slider.value);
+        }
+    }));
+    
+    suite.add(new Y.Test.Case({
+        name: 'Changing value',
+        
+        setUp: function() {
+            this.slider = new Ext.Slider({
+                minValue: 30,
+                values  : [50, 70],
+                maxValue: 90,
+                renderTo: Ext.getBody()
+            });
+            
+            this.slider.render();
+        },
+        
+        tearDown: function() {
+            this.slider.destroy();
+        },
+        
+        testValueChanged: function() {
+            this.slider.setValue(0, 60);
+            
+            assert.areEqual(60, this.slider.getValues()[0]);
+        },
+        
+        testEventFired: function() {
+            var executed = false,
+                value, thumb;
+            
+            this.slider.on('change', function(slider, v, t) {
+                executed = true;
+                value = v;
+                thumb = t;
+            }, this);
+            
+            this.slider.setValue(0, 60);
+            
+            assert.isTrue(executed);
+            assert.areEqual(60, value);
+            assert.areEqual(this.slider.thumbs[0], thumb);
+        },
+        
+        testThumbMoved: function() {
+            var orig = this.slider.moveThumb,
+                index, animate;
+            
+            this.slider.moveThumb = function(i, v, a) {
+                index   = i;
+                animate = a;
+            };
+            
+            this.slider.setValue(0, 60, false);
+            
+            assert.areEqual(0, index);
+            assert.isFalse(animate);
+        },
+        
+        testChangeComplete: function() {
+            var executed = false,
+                value, thumb;
+            
+            this.slider.on('changecomplete', function(slider, v, t) {
+                executed = true;
+                value = v;
+                thumb = t;
+            }, this);
+            
+            this.slider.setValue(0, 60, undefined, true);
+            
+            assert.isTrue(executed);
+            assert.areEqual(60, value);
+            assert.areEqual(this.slider.thumbs[0], thumb);
+        },
+        
+        testSetMinValue: function() {
+            this.slider.setMinValue(20);
+            
+            assert.areEqual(20, this.slider.minValue);
+            assert.areEqual(50, this.slider.getValues()[0]);
+        },
+        
+        testSetMaxValue: function() {
+            this.slider.setMaxValue(110);
+            
+            assert.areEqual(110, this.slider.maxValue);
+            assert.areEqual(50, this.slider.getValues()[0]);
+        },
+        
+        testSetMinValueChangesValue: function() {
+            this.slider.setMinValue(60);
+            
+            assert.areEqual(60, this.slider.getValues()[0]);
+            assert.areEqual(70, this.slider.getValues()[1]);
+        },
+        
+        testSetMaxValueChangesValue: function() {
+            this.slider.setMaxValue(60);
+            
+            assert.areEqual(50, this.slider.getValues()[0]);
+            assert.areEqual(60, this.slider.getValues()[1]);
+        }
+    }));
+    
+    suite.add(new Y.Test.Case({
+        name: 'Utility functions',
+        
+        setUp: function() {
+            this.slider = new Ext.Slider({
+                //the slider has 14px of total padding on the sides, so add this here to make the numbers easier
+                width   : 214,
+                minValue: 100,
+                maxValue: 500,
+                renderTo: Ext.getBody()
+            });
+            
+            this.slider.render();
+        },
+        
+        tearDown: function() {
+            this.slider.destroy();
+        },
+        
+        testGetRatio: function() {
+            assert.areEqual(0.5, this.slider.getRatio());
+        },
+        
+        testTranslateValue: function() {
+            
+        },
+        
+        testReverseValue: function() {
+            
+        },
+        
+        testNormalizeValue: function() {
+            
+        }
+    }));
+    
+    suite.add(new Y.Test.Case({
+        name: 'Snapping',
+        
+        setUp: function() {
+            this.slider = new Ext.Slider({
+                increment: 10,
+                renderTo : Ext.getBody()
+            });
+            
+            this.slider.render();
+        },
+        
+        tearDown: function() {
+            this.slider.destroy();
+        },
+        
+        testSnapToFloor: function() {
+            this.slider.setValue(0, 12);
+            
+            assert.areEqual(10, this.slider.doSnap(12));
+        },
+        
+        testSnapToCeil: function() {
+            assert.areEqual(20, this.slider.doSnap(18));            
+            assert.areEqual(20, this.slider.doSnap(15));
+        }
+    }));
+    
+    suite.add(new Y.Test.Case({
+        name: 'Adding and removing thumbs'
+    }));
+})();
\ No newline at end of file