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