Home | History | Annotate | Download | only in cr
      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4 <!-- TODO(arv): Check in Closue unit tests and make this run as part of the
      5      tests -->
      6 <script src="http://closure-library.googlecode.com/svn/trunk/closure/goog/base.js"></script>
      7 <script src="../cr.js"></script>
      8 <script src="event_target.js"></script>
      9 <script>
     10 
     11 goog.require('goog.testing.jsunit');
     12 
     13 </script>
     14 </head>
     15 <body>
     16 <script>
     17 
     18 const EventTarget = cr.EventTarget;
     19 const Event = cr.Event;
     20 
     21 function testFunctionListener() {
     22   var fi = 0;
     23   function f(e) {
     24     fi++;
     25   }
     26 
     27   var gi = 0;
     28   function g(e) {
     29     gi++;
     30   }
     31 
     32   var et = new EventTarget;
     33   et.addEventListener('f', f);
     34   et.addEventListener('g', g);
     35 
     36   // Adding again should not cause it to be called twice
     37   et.addEventListener('f', f);
     38   et.dispatchEvent(new Event('f'));
     39   assertEquals('Should have been called once', 1, fi);
     40   assertEquals(0, gi);
     41 
     42   et.removeEventListener('f', f);
     43   et.dispatchEvent(new Event('f'));
     44   assertEquals('Should not have been called again', 1, fi);
     45 
     46   et.dispatchEvent(new Event('g'));
     47   assertEquals('Should have been called once', 1, gi);
     48 }
     49 
     50 function testHandleEvent() {
     51   var fi = 0;
     52   var f = {
     53     handleEvent: function(e) {
     54       fi++;
     55     }
     56   };
     57 
     58   var gi = 0;
     59   var g = {
     60     handleEvent: function(e) {
     61       gi++;
     62     }
     63   };
     64 
     65   var et = new EventTarget;
     66   et.addEventListener('f', f);
     67   et.addEventListener('g', g);
     68 
     69   // Adding again should not cause it to be called twice
     70   et.addEventListener('f', f);
     71   et.dispatchEvent(new Event('f'));
     72   assertEquals('Should have been called once', 1, fi);
     73   assertEquals(0, gi);
     74 
     75   et.removeEventListener('f', f);
     76   et.dispatchEvent(new Event('f'));
     77   assertEquals('Should not have been called again', 1, fi);
     78 
     79   et.dispatchEvent(new Event('g'));
     80   assertEquals('Should have been called once', 1, gi);
     81 }
     82 
     83 function testPreventDefault() {
     84   var i = 0;
     85   function prevent(e) {
     86     i++;
     87     e.preventDefault();
     88   }
     89 
     90   var j = 0;
     91   function pass(e) {
     92     j++;
     93   }
     94 
     95   var et = new EventTarget;
     96   et.addEventListener('test', pass);
     97 
     98   assertTrue(et.dispatchEvent(new Event('test')));
     99   assertEquals(1, j);
    100 
    101   et.addEventListener('test', prevent);
    102 
    103   console.log('NOW');
    104   assertFalse(et.dispatchEvent(new Event('test')));
    105   assertEquals(2, j);
    106   assertEquals(1, i);
    107 }
    108 
    109 
    110 function testReturnFalse() {
    111   var i = 0;
    112   function prevent(e) {
    113     i++;
    114     return false;
    115   }
    116 
    117   var j = 0;
    118   function pass(e) {
    119     j++;
    120   }
    121 
    122   var et = new EventTarget;
    123   et.addEventListener('test', pass);
    124 
    125   assertTrue(et.dispatchEvent(new Event('test')));
    126   assertEquals(1, j);
    127 
    128   et.addEventListener('test', prevent);
    129 
    130   assertFalse(et.dispatchEvent(new Event('test')));
    131   assertEquals(2, j);
    132   assertEquals(1, i);
    133 }
    134 
    135 </script>
    136 </body>
    137 </html>
    138