Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 7063

Show
Ignore:
Timestamp:
06/19/07 16:35:03 (1 year ago)
Author:
mislav
Message:

Prototype: more Event unit tests and cleanup

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • spinoffs/prototype/branches/event/src/event.js

    r7062 r7063  
    9696            } 
    9797          } else { 
    98             if (this.element == document && (B.Opera || B.Safari)) this._element = window; 
     98            if (B.Opera || B.Safari) { 
     99              if (this.element == document) this._element = window; 
     100            } 
     101            else if (this.element == window) this._element = document; 
    99102            // Opera handler is similar to IE's 
    100103            this._callback = B.Opera ? function(event) { 
  • spinoffs/prototype/branches/event/test/functional/dom_ready.html

    r6596 r7063  
    33<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    44<head> 
    5   <title>Prototype onReady test</title> 
     5  <title>Prototype Event.onReady() test file</title> 
    66  <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
    7  
    8   <!-- I hate doing "rake dist" while testing --> 
    9   <script type="text/javascript"> 
    10     var Prototype = { 
    11     Version: 'inline', 
    12      
    13     Browser: { 
    14       IE:     !!(window.attachEvent && !window.opera), 
    15       Opera:  !!window.opera, 
    16       WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, 
    17       Gecko:  navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1 
    18     }, 
    19     BrowserFeatures: { 
    20       XPath: !!document.evaluate, 
    21       ElementExtensions: !!window.HTMLElement, 
    22       SpecificElementExtensions:  
    23         (document.createElement('div').__proto__ !==  
    24          document.createElement('form').__proto__) 
    25     }, 
    26      
    27     ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)', 
    28     emptyFunction: function() {}, 
    29     K: function(x) { return x } 
    30   } 
    31   </script> 
    32   <script src="../../src/base.js"       type="text/javascript"></script> 
    33   <script src="../../src/string.js"     type="text/javascript"></script> 
    34   <script src="../../src/enumerable.js" type="text/javascript"></script> 
    35   <script src="../../src/array.js"      type="text/javascript"></script> 
    36   <script src="../../src/hash.js"       type="text/javascript"></script> 
    37   <script src="../../src/range.js"      type="text/javascript"></script> 
    38   <script src="../../src/ajax.js"       type="text/javascript"></script> 
    39   <script src="../../src/dom.js"        type="text/javascript"></script> 
    40   <script src="../../src/selector.js"   type="text/javascript"></script> 
    41   <script src="../../src/form.js"       type="text/javascript"></script> 
    42   <script src="../../src/event.js"      type="text/javascript"></script> 
    43   <script src="../../src/position.js"   type="text/javascript"></script> 
    44   <script type="text/javascript"> Element.addMethods(); </script> 
    45    
     7  <script src="../../dist/prototype.js" type="text/javascript"></script> 
    468  <style type="text/css" media="screen"> 
    479  /* <![CDATA[ */ 
     
    5618  /* ]]> */ 
    5719  </style> 
    58    
     20 
    5921  <script type="text/javascript"> 
    6022    Event.observe(document, 'DOMContentLoaded', function(e) { 
     
    6325    }); 
    6426  </script> 
     27 
    6528</head> 
    6629<body> 
  • spinoffs/prototype/branches/event/test/unit/event.html

    r7062 r7063  
    3030  var target = $(document.body).down('h1'); 
    3131  var para = $(document.body).down('p'); 
    32   var handler = function(e) { console.log("%s: %s", e.type, this) }; 
     32  var handler = function(e) { 
     33    if (window.console) 
     34      console.log("%s: %s", e.type, this); 
     35    else 
     36      alert(e.type + ' ' + Object.inspect(this)); 
     37  }; 
     38 
     39  var B = Prototype.Browser; 
    3340 
    3441  function ob(element) { 
     
    6370      assert(ob(para)['click'][ID]); 
    6471 
    65       assertUndefined(Event.stopObserving([target, para])) 
     72      assertUndefined(Event.stopObserving([target, para])); 
    6673      assertEqual(0, Object.keys(ob(target)['click']).length); 
    6774      assertEqual(0, Object.keys(ob(para)['click']).length); 
    6875    }}, 
     76 
     77    testObserveMultipleEvents: function() { with(this) { 
     78      assertEqual(handler, Event.observe(target, $w('click mouseup'), handler)); 
     79      var ID = guid(handler); 
     80      assert(ob(target)['click'][ID]); 
     81      assert(ob(target)['mouseup'][ID]); 
     82 
     83      assertUndefined(Event.stopObserving(target)); 
     84      assertEqual(0, Object.keys(ob(target)['click']).length); 
     85      assertEqual(0, Object.keys(ob(target)['mouseup']).length); 
     86    }}, 
     87 
     88    testMouseWheel: function() { with(this) { 
     89      // window, 'mousewheel' 
     90      assertEqual(handler, Event.observe(window, 'mousewheel', handler)); 
     91      var ID = guid(handler); 
     92      assertEqual((B.Opera || B.Safari ? window : document), ob(window)['mousewheel'][ID]._element); 
     93      assertEqual((B.Opera || B.IE ? 'mousewheel' : 'DOMMouseScroll'), ob(window)['mousewheel'][ID]._type); 
     94      assertUndefined(Event.stopObserving(window, 'mousewheel')); 
     95      assertEqual(0, Object.keys(ob(window)['mousewheel']).length); 
     96 
     97      // document, 'DOMMouseScroll' 
     98      assertEqual(handler, Event.observe(document, 'DOMMouseScroll', handler)); 
     99      assertEqual((B.Opera || B.Safari ? window : document), ob(document)['DOMMouseScroll'][ID]._element); 
     100      assertEqual((B.Opera || B.IE ? 'mousewheel' : 'DOMMouseScroll'), ob(document)['DOMMouseScroll'][ID]._type); 
     101      assertUndefined(Event.stopObserving(document, 'DOMMouseScroll')); 
     102      assertEqual(0, Object.keys(ob(document)['DOMMouseScroll']).length); 
     103    }}, 
     104 
     105    testOnReady: function() { with(this) { 
     106      if (!B.IE) { 
     107        var stat; 
     108        Event.observe(document, 'DOMContentLoaded', function() { stat = 'hello!' }); 
     109        assertUndefined(stat); 
     110        assertUndefined(ob(document)['DOMContentLoaded']); 
     111        wait(100, function() { 
     112          assertUndefined(stat); 
     113        }); 
     114      } else { 
     115        assert(false, 'IE onReady hack and this test suite won\'t play together :('); 
     116      } 
     117    }} 
    69118 
    70119  }, 'testlog');