• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
11goog.require('goog.testing.jsunit');
12
13</script>
14</head>
15<body>
16<script>
17
18const EventTarget = cr.EventTarget;
19const Event = cr.Event;
20
21function 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
50function 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
83function 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
110function 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