OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <title></title> | 4 <title></title> |
5 <style> | 5 <style> |
6 | 6 |
7 </style> | 7 </style> |
8 <script src="http://closure-library.googlecode.com/svn/trunk/closure/goog/base.j
s"></script> | 8 <script src="http://closure-library.googlecode.com/svn/trunk/closure/goog/base.j
s"></script> |
9 <script src="cr.js"></script> | 9 <script src="cr.js"></script> |
10 <script src="cr/event_target.js"></script> | 10 <script src="cr/event_target.js"></script> |
(...skipping 21 matching lines...) Expand all Loading... |
32 | 32 |
33 function testDefinePropertyOnClass() { | 33 function testDefinePropertyOnClass() { |
34 function C() {} | 34 function C() {} |
35 C.prototype = { | 35 C.prototype = { |
36 __proto__: EventTarget.prototype | 36 __proto__: EventTarget.prototype |
37 }; | 37 }; |
38 | 38 |
39 cr.defineProperty(C, 'test'); | 39 cr.defineProperty(C, 'test'); |
40 | 40 |
41 var obj = new C; | 41 var obj = new C; |
| 42 assertUndefined(obj.test); |
| 43 |
42 obj.test = 1; | 44 obj.test = 1; |
43 assertEquals(1, obj.test); | 45 assertEquals(1, obj.test); |
44 assertEquals(1, obj.test_); | 46 assertEquals(1, obj.test_); |
45 } | 47 } |
46 | 48 |
47 function testDefinePropertyWithDefault() { | 49 function testDefinePropertyWithSetter() { |
48 var obj = new EventTarget; | 50 var obj = new EventTarget; |
49 | 51 |
50 cr.defineProperty(obj, 'test', null, 1); | 52 var hit = false; |
51 | 53 function onTestSet(value, oldValue) { |
52 assertEquals(1, obj.test); | 54 assertEquals(obj, this); |
53 assertEquals(1, obj.test_); | 55 assertEquals(2, this.test); |
54 | 56 assertUndefined(oldValue); |
| 57 assertEquals(2, value); |
| 58 hit = true; |
| 59 } |
| 60 cr.defineProperty(obj, 'test', cr.PropertyKind.JS, onTestSet); |
55 obj.test = 2; | 61 obj.test = 2; |
56 assertEquals(2, obj.test); | 62 assertTrue(hit); |
57 assertEquals(2, obj.test_); | |
58 } | 63 } |
59 | 64 |
60 function testDefinePropertyEvent() { | 65 function testDefinePropertyEvent() { |
61 var obj = new EventTarget; | 66 var obj = new EventTarget; |
62 cr.defineProperty(obj, 'test'); | 67 cr.defineProperty(obj, 'test'); |
63 obj.test = 1; | 68 obj.test = 1; |
64 | 69 |
65 var count = 0; | 70 var count = 0; |
66 function f(e) { | 71 function f(e) { |
67 assertEquals('testChange', e.type); | 72 assertEquals('testChange', e.type); |
68 assertEquals('test', e.propertyName); | 73 assertEquals('test', e.propertyName); |
69 assertEquals(1, e.oldValue); | 74 assertEquals(1, e.oldValue); |
70 assertEquals(2, e.newValue); | 75 assertEquals(2, e.newValue); |
71 count++; | 76 count++; |
72 } | 77 } |
73 | 78 |
74 obj.addEventListener('testChange', f); | 79 obj.addEventListener('testChange', f); |
75 obj.test = 2; | 80 obj.test = 2; |
76 assertEquals(2, obj.test); | 81 assertEquals(2, obj.test); |
77 assertEquals('Should have called the property change listener', 1, count); | 82 assertEquals('Should have called the property change listener', 1, count); |
78 | 83 |
79 obj.test = 2; | 84 obj.test = 2; |
80 assertEquals(1, count); | 85 assertEquals(1, count); |
81 } | 86 } |
82 | 87 |
83 function testDefinePropertyEventWithDefault() { | 88 function testDefinePropertyEventWithDefault() { |
84 var obj = new EventTarget; | 89 var obj = new EventTarget; |
85 cr.defineProperty(obj, 'test', cr.PropertyKind.JS, 1); | 90 cr.defineProperty(obj, 'test', cr.PropertyKind.JS); |
86 | 91 |
87 var count = 0; | 92 var count = 0; |
88 function f(e) { | 93 function f(e) { |
89 assertEquals('testChange', e.type); | 94 assertEquals('testChange', e.type); |
90 assertEquals('test', e.propertyName); | 95 assertEquals('test', e.propertyName); |
91 assertEquals(1, e.oldValue); | 96 assertUndefined(e.oldValue); |
92 assertEquals(2, e.newValue); | 97 assertEquals(2, e.newValue); |
93 count++; | 98 count++; |
94 } | 99 } |
95 | 100 |
96 obj.addEventListener('testChange', f); | 101 obj.addEventListener('testChange', f); |
97 | 102 |
98 obj.test = 1; | 103 obj.test = undefined; |
99 assertEquals('Should not have called the property change listener', 0, count); | 104 assertEquals('Should not have called the property change listener', 0, count); |
100 | 105 |
101 obj.test = 2; | 106 obj.test = 2; |
102 assertEquals(2, obj.test); | 107 assertEquals(2, obj.test); |
103 assertEquals('Should have called the property change listener', 1, count); | 108 assertEquals('Should have called the property change listener', 1, count); |
104 | 109 |
105 obj.test = 2; | 110 obj.test = 2; |
106 assertEquals(1, count); | 111 assertEquals(1, count); |
107 } | 112 } |
108 | 113 |
109 function testDefinePropertyAttr() { | 114 function testDefinePropertyAttr() { |
110 var obj = document.createElement('div'); | 115 var obj = document.createElement('div'); |
111 cr.defineProperty(obj, 'test', cr.PropertyKind.ATTR); | 116 cr.defineProperty(obj, 'test', cr.PropertyKind.ATTR); |
112 | 117 |
113 obj.test = 'a'; | 118 obj.test = 'a'; |
114 assertEquals('a', obj.test); | 119 assertEquals('a', obj.test); |
115 assertEquals('a', obj.getAttribute('test')); | 120 assertEquals('a', obj.getAttribute('test')); |
116 } | 121 } |
117 | 122 |
118 function testDefinePropertyAttrOnClass() { | 123 function testDefinePropertyAttrOnClass() { |
119 var obj = document.createElement('button'); | 124 var obj = document.createElement('button'); |
120 cr.defineProperty(HTMLButtonElement, 'test', cr.PropertyKind.ATTR); | 125 cr.defineProperty(HTMLButtonElement, 'test', cr.PropertyKind.ATTR); |
121 | 126 |
| 127 assertEquals(null, obj.test); |
| 128 |
122 obj.test = 'a'; | 129 obj.test = 'a'; |
123 assertEquals('a', obj.test); | 130 assertEquals('a', obj.test); |
124 assertEquals('a', obj.getAttribute('test')); | 131 assertEquals('a', obj.getAttribute('test')); |
125 } | 132 } |
126 | 133 |
127 function testDefinePropertyAttrWithDefault() { | 134 function testDefinePropertyAttrWithSetter() { |
128 var obj = document.createElement('div'); | 135 var obj = document.createElement('div'); |
129 cr.defineProperty(obj, 'test', cr.PropertyKind.ATTR, 'a'); | |
130 | 136 |
131 assertEquals('a', obj.test); | 137 var hit = false; |
132 assertFalse(obj.hasAttribute('test')); | 138 function onTestSet(value, oldValue) { |
133 | 139 assertEquals(obj, this); |
| 140 assertEquals(null, oldValue); |
| 141 assertEquals('b', value); |
| 142 assertEquals('b', this.test); |
| 143 hit = true; |
| 144 } |
| 145 cr.defineProperty(obj, 'test', cr.PropertyKind.ATTR, onTestSet); |
134 obj.test = 'b'; | 146 obj.test = 'b'; |
135 assertEquals('b', obj.test); | 147 assertTrue(hit); |
136 assertEquals('b', obj.getAttribute('test')); | |
137 } | 148 } |
138 | 149 |
139 function testDefinePropertyAttrEvent() { | 150 function testDefinePropertyAttrEvent() { |
140 var obj = document.createElement('div'); | 151 var obj = document.createElement('div'); |
141 cr.defineProperty(obj, 'test', cr.PropertyKind.ATTR); | 152 cr.defineProperty(obj, 'test', cr.PropertyKind.ATTR); |
142 obj.test = 'a'; | |
143 | 153 |
144 var count = 0; | 154 var count = 0; |
145 function f(e) { | 155 function f(e) { |
146 assertEquals('testChange', e.type); | 156 assertEquals('testChange', e.type); |
147 assertEquals('test', e.propertyName); | 157 assertEquals('test', e.propertyName); |
148 assertEquals('a', e.oldValue); | 158 assertEquals(null, e.oldValue); |
149 assertEquals('b', e.newValue); | |
150 count++; | |
151 } | |
152 | |
153 obj.addEventListener('testChange', f); | |
154 obj.test = 'b'; | |
155 assertEquals('b', obj.test); | |
156 assertEquals('Should have called the property change listener', 1, count); | |
157 | |
158 obj.test = 'b'; | |
159 assertEquals(1, count); | |
160 } | |
161 | |
162 function testDefinePropertyAttrEventWithDefault() { | |
163 var obj = document.createElement('div'); | |
164 cr.defineProperty(obj, 'test', cr.PropertyKind.ATTR, 'a'); | |
165 | |
166 var count = 0; | |
167 function f(e) { | |
168 assertEquals('testChange', e.type); | |
169 assertEquals('test', e.propertyName); | |
170 assertEquals('a', e.oldValue); | |
171 assertEquals('b', e.newValue); | 159 assertEquals('b', e.newValue); |
172 count++; | 160 count++; |
173 } | 161 } |
174 | 162 |
175 obj.addEventListener('testChange', f); | 163 obj.addEventListener('testChange', f); |
176 | 164 |
177 obj.test = 'a'; | 165 obj.test = null; |
178 assertEquals('Should not have called the property change listener', 0, count); | 166 assertEquals('Should not have called the property change listener', 0, count); |
179 | 167 |
180 obj.test = 'b'; | 168 obj.test = 'b'; |
181 assertEquals('b', obj.test); | 169 assertEquals('b', obj.test); |
182 assertEquals('Should have called the property change listener', 1, count); | 170 assertEquals('Should have called the property change listener', 1, count); |
183 | 171 |
184 obj.test = 'b'; | 172 obj.test = 'b'; |
185 assertEquals(1, count); | 173 assertEquals(1, count); |
186 } | 174 } |
187 | 175 |
(...skipping 28 matching lines...) Expand all Loading... |
216 | 204 |
217 obj.addEventListener('testChange', f); | 205 obj.addEventListener('testChange', f); |
218 obj.test = true; | 206 obj.test = true; |
219 assertTrue(obj.test); | 207 assertTrue(obj.test); |
220 assertEquals('Should have called the property change listener', 1, count); | 208 assertEquals('Should have called the property change listener', 1, count); |
221 | 209 |
222 obj.test = true; | 210 obj.test = true; |
223 assertEquals(1, count); | 211 assertEquals(1, count); |
224 } | 212 } |
225 | 213 |
| 214 function testDefinePropertyBoolAttrEvent() { |
| 215 var obj = document.createElement('div'); |
| 216 var hit = false; |
| 217 function onTestSet(value, oldValue) { |
| 218 assertEquals(obj, this); |
| 219 assertTrue(this.test); |
| 220 assertFalse(oldValue); |
| 221 assertTrue(value); |
| 222 hit = true; |
| 223 } |
| 224 cr.defineProperty(obj, 'test', cr.PropertyKind.BOOL_ATTR, onTestSet); |
| 225 obj.test = true; |
| 226 assertTrue(hit); |
| 227 } |
| 228 |
226 function testAddSingletonGetter() { | 229 function testAddSingletonGetter() { |
227 function Foo() {}; | 230 function Foo() {}; |
228 cr.addSingletonGetter(Foo); | 231 cr.addSingletonGetter(Foo); |
229 | 232 |
230 assertNotNull('Should add get instance function', Foo.getInstance); | 233 assertNotNull('Should add get instance function', Foo.getInstance); |
231 | 234 |
232 var x = Foo.getInstance(); | 235 var x = Foo.getInstance(); |
233 assertNotNull('Should successfully create an object', x); | 236 assertNotNull('Should successfully create an object', x); |
234 | 237 |
235 var y = Foo.getInstance(); | 238 var y = Foo.getInstance(); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
269 assertEquals(0, foo.v); | 272 assertEquals(0, foo.v); |
270 | 273 |
271 v = 1; | 274 v = 1; |
272 assertEquals(1, foo.v); | 275 assertEquals(1, foo.v); |
273 } | 276 } |
274 | 277 |
275 </script> | 278 </script> |
276 | 279 |
277 </body> | 280 </body> |
278 </html> | 281 </html> |
OLD | NEW |