Changeset 15408

Show
Ignore:
Timestamp:
10/05/08 08:27:53 (3 months ago)
Author:
doughays
Message:

References #7681. Proxy commit for haysmark. Commit Slider robot test. Fix test failure where clicking the end of the slider bar was being allowed even for disabled sliders.

Location:
dijit/trunk
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • dijit/trunk/form/Slider.js

    r15407 r15408  
    171171        }, 
    172172 
     173        _onClkBumper: function(val){ 
     174                if(this.disabled || this.readOnly || !this.clickSelect){ return; } 
     175                this._setValueAttr(val, true); 
     176        }, 
     177 
    173178        _onClkIncBumper: function(){ 
    174                 this._setValueAttr(this._descending === false ? this.minimum : this.maximum, true); 
     179                this._onClkBumper(this._descending === false ? this.minimum : this.maximum); 
    175180        }, 
    176181 
    177182        _onClkDecBumper: function(){ 
    178                 this._setValueAttr(this._descending === false ? this.maximum : this.minimum, true); 
     183                this._onClkBumper(this._descending === false ? this.maximum : this.minimum); 
    179184        }, 
    180185 
  • dijit/trunk/tests/form/robot/test_Slider.html

    r14955 r15408  
    1717                dojo.require("dijit.robotx"); 
    1818 
     19                var arrowSliders=['slider1','slider2','programaticSlider']; 
     20                var arrowSliderInit_min=[0.2,10,1200]; 
     21                var arrowSliderInit_max=[99.8,90,2800]; 
     22                var accessibleSliders=['slider1','slider2','slider3','programaticSlider'] 
     23                var accessibleSliderInit_min=[0.2,10,2,1200]; 
     24                var accessibleSliderInit_max=[99.8,90,2,2800]; 
     25 
     26                onChange={slider1:'slider1input', slider2:'slider2input', programaticSlider:'sliderProgInput'}; 
     27 
     28                var boundaryTest=function(slider, initValue, finalValue){ 
     29                        var d = new doh.Deferred(); 
     30                        slider.attr('value', initValue); 
     31                        var button = slider._descending?(initValue<finalValue?slider.decrementButton:slider.incrementButton):(initValue<finalValue?slider.incrementButton:slider.decrementButton); 
     32                        doh.robot.sequence(function(){ 
     33                                dijit.scrollIntoView(slider.domNode); 
     34                        },500); 
     35                        doh.robot.mouseMoveAt(button, 500); 
     36                        doh.robot.mouseClick({left:true}, 500); 
     37                        doh.robot.sequence(function(){ 
     38                                try{ 
     39                                        doh.is(finalValue, new Number(slider.attr('value')).toFixed(1)); 
     40                                        if(onChange[slider.id]){ 
     41                                                doh.is(finalValue, parseFloat(dojo.byId(onChange[slider.id]).value)); 
     42                                        } 
     43                                        doh.robot.mouseMoveAt(button, 500); 
     44                                        doh.robot.mouseClick({left:true}, 500); 
     45                                        doh.robot.sequence(function(){ 
     46                                                try{ 
     47                                                        doh.is(finalValue, new Number(slider.attr('value')).toFixed(1)); 
     48                                                        if(onChange[slider.id]){ 
     49                                                                doh.is(finalValue, parseFloat(dojo.byId(onChange[slider.id]).value)); 
     50                                                        } 
     51                                                        d.callback(true); 
     52                                                }catch(e){ 
     53                                                        d.errback(e); 
     54                                                } 
     55                                        }, 500); 
     56                                }catch(e){ 
     57                                        d.errback(e); 
     58                                } 
     59                        }, 500); 
     60                        return d; 
     61                }; 
     62 
     63                var a11yBoundaryTest=function(slider, initValue, finalValue){ 
     64                        var d = new doh.Deferred(); 
     65                        var key = initValue<finalValue?dojo.keys.RIGHT_ARROW:dojo.keys.LEFT_ARROW; 
     66                        slider.attr('value',initValue); 
     67                        doh.robot.sequence(function(){ 
     68                                dijit.scrollIntoView(slider.domNode); 
     69                        },500); 
     70                        doh.robot.mouseMoveAt(slider.focusNode, 500); 
     71                        doh.robot.mouseClick({left:true}, 500); 
     72                        doh.robot.keyPress(key, 500); 
     73                        doh.robot.sequence(function(){ 
     74                                try{ 
     75                                        doh.is(finalValue, new Number(slider.attr('value')).toFixed(1)); 
     76                                        if(onChange[slider.id]){ 
     77                                                doh.is(finalValue,parseFloat(dojo.byId(onChange[slider.id]).value)); 
     78                                        } 
     79                                        doh.robot.keyPress(key, 500); 
     80                                        doh.robot.sequence(function(){ 
     81                                                try{ 
     82                                                        doh.is(finalValue, new Number(slider.attr('value')).toFixed(1)); 
     83                                                        if(onChange[slider.id]){ 
     84                                                                doh.is(finalValue, parseFloat(dojo.byId(onChange[slider.id]).value)); 
     85                                                        } 
     86                                                        d.callback(true); 
     87                                                }catch(e){ 
     88                                                        d.errback(e); 
     89                                                } 
     90                                        }, 500); 
     91                                }catch(e){ 
     92                                        d.errback(e); 
     93                                } 
     94                        }, 500); 
     95                        return d; 
     96                }; 
     97 
     98                var buttonHeldTest=function(slider, initValue, finalValue){ 
     99                        var d = new doh.Deferred(); 
     100                        slider.attr('value', initValue); 
     101                        var button = slider._descending?(initValue<finalValue?slider.decrementButton:slider.incrementButton):(initValue<finalValue?slider.incrementButton:slider.decrementButton); 
     102                        doh.robot.sequence(function(){ 
     103                                dijit.scrollIntoView(slider.domNode); 
     104                        },500); 
     105                        doh.robot.mouseMoveAt(button, 500); 
     106                        doh.robot.mousePress({left:true}, 500); 
     107                        doh.robot.mouseRelease({left:true}, 5000); 
     108                        doh.robot.sequence(function(){ 
     109                                try{ 
     110                                        doh.is(finalValue, new Number(slider.attr('value')).toFixed(1)); 
     111                                        if(onChange[slider.id]){ 
     112                                                doh.is(finalValue, parseFloat(dojo.byId(onChange[slider.id]).value)); 
     113                                        } 
     114                                        d.callback(true); 
     115                                }catch(e){ 
     116                                        d.errback(e); 
     117                                } 
     118                        }, 500); 
     119                        return d; 
     120                }; 
     121 
     122                var mouseWheelTest=function(slider, initValue, finalValue){ 
     123                        if(slider.discreteValues != Infinity){ 
     124                                var d = new doh.Deferred(); 
     125                                slider.attr('value', initValue); 
     126                                var direction=(finalValue-initValue)/Math.abs(finalValue-initValue); 
     127                                var delta = Math.ceil((slider.discreteValues-1)*Math.abs(doh.robot.mouseWheelSize)/doh.robot.mouseWheelSize); 
     128                                doh.robot.sequence(function(){ 
     129                                        dijit.scrollIntoView(slider.domNode); 
     130                                },500); 
     131                                doh.robot.mouseMoveAt(slider.focusNode, 500); 
     132                                doh.robot.mouseClick({left:true}, 500); 
     133                                doh.robot.mouseWheel(delta*direction, 500, Math.abs(delta)*100); 
     134                                doh.robot.sequence(function(){ 
     135                                        try{ 
     136                                                doh.is(finalValue, new Number(slider.attr('value')).toFixed(1)); 
     137                                                if(onChange[slider.id]){ 
     138                                                        doh.is(finalValue, parseFloat(dojo.byId(onChange[slider.id]).value)); 
     139                                                } 
     140                                                d.callback(true); 
     141                                        }catch(e){ 
     142                                                d.errback(e); 
     143                                        } 
     144                                }, 500); 
     145                                return d; 
     146                        } 
     147                }; 
     148 
    19149                dojo.addOnLoad(function(){ 
    20150                        doh.robot.initRobot('../test_Slider.html'); 
     151 
     152                        doh.register("setUp",{ 
     153                                name:"setUp", 
     154                                runTest:function(){ 
     155                                        var s='horizontal1: 10\n' 
     156                                        +': 10.0%\n' 
     157                                        +'vertical1: 10\n' 
     158                                        +': 10\n' 
     159                                        +'horizontal2: 2\n' 
     160                                        +'horizontalH2: 10\n' 
     161                                        +'programaticSlider: 1400\n' 
     162                                        +': 1400\n'; 
     163                                        doh.is(s, dojo.doc.displayData().replace(/[a-zA-Z0-9_]*_displayed_/g, "")); 
     164                                } 
     165                        }); 
     166 
     167                        doh.register("setvaluetest",{ 
     168                                name:"valid", 
     169                                slider:arrowSliders[0], 
     170                                runTest:function(){ 
     171                                        this.slider=dijit.byId(this.slider); 
     172                                        this.slider.attr('value', 50); 
     173                                        doh.is(50, parseFloat(dojo.byId(onChange[this.slider.id]).value)); 
     174                                } 
     175                        }); 
     176 
     177                        doh.register("setvaluetest",{ 
     178                                name:"null", 
     179                                slider:arrowSliders[0], 
     180                                runTest:function(){ 
     181                                        this.slider=dijit.byId(this.slider); 
     182                                        this.slider.attr('value', null); 
     183                                        doh.is(0, parseFloat(dojo.byId(onChange[this.slider.id]).value)); 
     184                                } 
     185                        }); 
     186 
     187                        doh.register("disabledTest",{ 
     188                                name:arrowSliders[0]+'_setUp', 
     189                                slider:arrowSliders[0], 
     190                                timeout:30000, 
     191                                runTest:function(){ 
     192                                        var d = new doh.Deferred(); 
     193                                        doh.robot.mouseMoveAt('disableButton',500); 
     194                                        doh.robot.mouseClick({left:true}, 500); 
     195                                        doh.robot.sequence(function(){ d.callback(true); },500); 
     196                                        return d; 
     197                                } 
     198                        }); 
     199 
     200                        doh.register("disabledTest",{ 
     201                                name:arrowSliders[0]+'_min', 
     202                                slider:arrowSliders[0], 
     203                                value:arrowSliderInit_min[0], 
     204                                timeout:30000, 
     205                                runTest:function(){ 
     206                                        this.slider=dijit.byId(this.slider); 
     207                                        return boundaryTest(this.slider, this.value, this.value); 
     208                                } 
     209                        }); 
     210 
     211                        doh.register("disabledTest",{ 
     212                                name:arrowSliders[0]+'_a11y_min', 
     213                                slider:arrowSliders[0], 
     214                                value:arrowSliderInit_min[0], 
     215                                timeout:30000, 
     216                                runTest:function(){ 
     217                                        this.slider=dijit.byId(this.slider); 
     218                                        return a11yBoundaryTest(this.slider, this.value, this.value); 
     219                                } 
     220                        }); 
     221 
     222                        doh.register("disabledTest",{ 
     223                                name:arrowSliders[0]+'_tearDown', 
     224                                slider:arrowSliders[0], 
     225                                timeout:30000, 
     226                                runTest:function(){ 
     227                                        var d = new doh.Deferred(); 
     228                                        doh.robot.mouseMoveAt('enableButton',500); 
     229                                        doh.robot.mouseClick({left:true}, 500); 
     230                                        doh.robot.sequence(function(){ d.callback(true); },500); 
     231                                        return d; 
     232                                } 
     233                        }); 
     234 
     235                        for(var i=0; i<arrowSliders.length; i++){ 
     236                                doh.register("buttonBoundaryTest",{ 
     237                                        name:arrowSliders[i]+'_min', 
     238                                        slider:arrowSliders[i], 
     239                                        value:arrowSliderInit_min[i], 
     240                                        timeout:30000, 
     241                                        runTest:function(){ 
     242                                                this.slider=dijit.byId(this.slider); 
     243                                                return boundaryTest(this.slider, this.value, this.slider.minimum); 
     244                                        } 
     245                                }); 
     246                                doh.register("buttonBoundaryTest",{ 
     247                                        name:arrowSliders[i]+'_max', 
     248                                        slider:arrowSliders[i], 
     249                                        value:arrowSliderInit_max[i], 
     250                                        timeout:30000, 
     251                                        runTest:function(){ 
     252                                                this.slider=dijit.byId(this.slider); 
     253                                                return boundaryTest(this.slider, this.value, this.slider.maximum); 
     254                                        } 
     255                                }); 
     256                        } 
     257 
     258                        for(var i=1; i<arrowSliders.length; i++){ 
     259                                doh.register("buttonHeldTest",{ 
     260                                        name:arrowSliders[i]+'_minToMax', 
     261                                        slider:arrowSliders[i], 
     262                                        timeout:30000, 
     263                                        runTest:function(){ 
     264                                                this.slider=dijit.byId(this.slider); 
     265                                                return buttonHeldTest(this.slider, this.slider.minimum, this.slider.maximum); 
     266                                        } 
     267                                }); 
     268                                doh.register("buttonHeldTest",{ 
     269                                        name:arrowSliders[i]+'_maxToMin', 
     270                                        slider:arrowSliders[i], 
     271                                        timeout:30000, 
     272                                        runTest:function(){ 
     273                                                this.slider=dijit.byId(this.slider); 
     274                                                return buttonHeldTest(this.slider, this.slider.maximum, this.slider.minimum); 
     275                                        } 
     276                                }); 
     277                        } 
     278 
     279                        for(var i=0; i<accessibleSliders.length; i++){ 
     280                                doh.register("a11yBoundaryTest",{ 
     281                                        name:accessibleSliders[i]+'_a11y_min', 
     282                                        slider:accessibleSliders[i], 
     283                                        value:accessibleSliderInit_min[i], 
     284                                        timeout:30000, 
     285                                        runTest:function(){ 
     286                                                this.slider=dijit.byId(this.slider); 
     287                                                return a11yBoundaryTest(this.slider, this.value, this.slider.minimum); 
     288                                        } 
     289                                }); 
     290                                doh.register("a11yBoundaryTest",{ 
     291                                        name:accessibleSliders[i]+'_a11y_max', 
     292                                        slider:accessibleSliders[i], 
     293                                        value:accessibleSliderInit_max[i], 
     294                                        timeout:30000, 
     295                                        runTest:function(){ 
     296                                                this.slider=dijit.byId(this.slider); 
     297                                                return a11yBoundaryTest(this.slider, this.value, this.slider.maximum); 
     298                                        } 
     299                                }); 
     300                        } 
     301 
     302                        for(var i=1; i<accessibleSliders.length; i++){ 
     303                                doh.register("mouseWheelTest",{ 
     304                                        name:accessibleSliders[i]+'_minToMax', 
     305                                        slider:accessibleSliders[i], 
     306                                        timeout:30000, 
     307                                        runTest:function(){ 
     308                                                this.slider=dijit.byId(this.slider); 
     309                                                return mouseWheelTest(this.slider, this.slider.minimum, this.slider.maximum); 
     310                                        } 
     311                                }); 
     312                                doh.register("mouseWheelTest",{ 
     313                                        name:accessibleSliders[i]+'_maxToMin', 
     314                                        slider:accessibleSliders[i], 
     315                                        timeout:30000, 
     316                                        runTest:function(){ 
     317                                                this.slider=dijit.byId(this.slider); 
     318                                                return mouseWheelTest(this.slider, this.slider.maximum, this.slider.minimum); 
     319                                        } 
     320                                }); 
     321                        } 
     322 
    21323                        doh.register("dijit.form.Slider", 
    22324                                { 
    23325                                        name:"slider1", 
     326                                        setUp:function(){ 
     327                                                dijit.byId("slider1").attr('value',10); 
     328                                        }, 
    24329                                        timeout:4000, // this is the animated slider so there is a 500ms delay 
    25330                                        runTest:function(){ 
     
    41346                                                }, 1400); 
    42347                                                return d; 
     348                                        }, 
     349                                        tearDown:function(){ 
     350                                                dijit.byId("slider1").attr('value',20); 
    43351                                        } 
    44352                                } 
     
    49357                                        name:"slider2", 
    50358                                        timeout:3500, 
     359                                        setUp:function(){ 
     360                                                dijit.byId("slider2").attr('value',10); 
     361                                        }, 
    51362                                        runTest:function(){ 
    52363                                                var d = new doh.Deferred(); 
     
    76387                                        name:"slider3", 
    77388                                        timeout:3500, 
     389                                        setUp:function(){ 
     390                                                dijit.byId("programaticSlider").attr('value',1000); 
     391                                        }, 
    78392                                        runTest:function(){ 
    79393                                                var d = new doh.Deferred(); 
     
    97411                                } 
    98412                        ); 
     413 
     414                        doh.register("tearDown",{ 
     415                                name:"tearDown", 
     416                                runTest:function(){ 
     417                                        var s='horizontal1: 20\n' 
     418                                        +': 20.0%\n' 
     419                                        +'vertical1: 20\n' 
     420                                        +': 20\n' 
     421                                        +'horizontal2: 1\n' 
     422                                        +'horizontalH2: 10\n' 
     423                                        +'programaticSlider: 3000\n' 
     424                                        +': 3000\n'; 
     425                                        doh.is(s, dojo.doc.displayData().replace(/[a-zA-Z0-9_]*_displayed_/g, "")); 
     426                                } 
     427                        }); 
     428 
    99429                        doh.run(); 
    100430                }); 
  • dijit/trunk/tests/form/test_Slider.html

    r14955 r15408  
    197197 
    198198                        <script> 
    199                                 function displayData() { 
    200                                         var f = document.getElementById("form1"); 
    201                                         var s = ""; 
    202                                         for (var i = 0; i < f.elements.length; i++) { 
    203                                                 var elem = f.elements[i]; 
    204                                                 if (elem.name == "button")  { continue; } 
    205                                                 s += elem.name + ": " + elem.value + "\n"; 
    206                                         } 
    207                                         alert(s); 
    208                                 } 
     199                                // so robot can get to it easily 
     200                                document.displayData=function() { 
     201                                        var f = document.getElementById("form1"); 
     202                                        var s = ""; 
     203                                        for (var i = 0; i < f.elements.length; i++) { 
     204                                                var elem = f.elements[i]; 
     205                                                if (elem.nodeName.toLowerCase() == "button" || elem.type=="submit" || elem.type=="button")  { continue; } 
     206                                                s += elem.name + ": " + elem.value + "\n"; 
     207                                        } 
     208                                        return s; 
     209                                } 
    209210                        </script> 
    210211 
    211212                        <div> 
    212                                 <button name="button" onclick="displayData(); return false;">view data</button> 
     213                                <button name="button" onclick="alert(displayData()); return false;">view data</button> 
    213214                                <input type="submit" name="submit" /> 
    214215                        </div>