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 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 cr.defineProperty(obj, 'test', null, 1); | 50 cr.defineProperty(obj, 'test', null, 1); |
51 | 51 |
52 assertEquals(1, obj.test); | 52 assertEquals(1, obj.test); |
53 assertEquals(1, obj.test_); | 53 assertEquals(1, obj.test_); |
54 | 54 |
55 obj.test = 2; | 55 obj.test = 2; |
56 assertEquals(2, obj.test); | 56 assertEquals(2, obj.test); |
57 assertEquals(2, obj.test_); | 57 assertEquals(2, obj.test_); |
58 } | 58 } |
59 | 59 |
| 60 function testDefinePropertyWithSetter() { |
| 61 var obj = new EventTarget; |
| 62 |
| 63 var hit = false; |
| 64 function onTestSet(value) { |
| 65 assertEquals(this, obj); |
| 66 assertEquals(this.test, 2); |
| 67 assertEquals(value, 2); |
| 68 hit = true; |
| 69 } |
| 70 cr.defineProperty(obj, 'test', null, 1, onTestSet); |
| 71 obj.test = 2; |
| 72 assertTrue(hit); |
| 73 } |
| 74 |
60 function testDefinePropertyEvent() { | 75 function testDefinePropertyEvent() { |
61 var obj = new EventTarget; | 76 var obj = new EventTarget; |
62 cr.defineProperty(obj, 'test'); | 77 cr.defineProperty(obj, 'test'); |
63 obj.test = 1; | 78 obj.test = 1; |
64 | 79 |
65 var count = 0; | 80 var count = 0; |
66 function f(e) { | 81 function f(e) { |
67 assertEquals('testChange', e.type); | 82 assertEquals('testChange', e.type); |
68 assertEquals('test', e.propertyName); | 83 assertEquals('test', e.propertyName); |
69 assertEquals(1, e.oldValue); | 84 assertEquals(1, e.oldValue); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 cr.defineProperty(obj, 'test', cr.PropertyKind.ATTR, 'a'); | 144 cr.defineProperty(obj, 'test', cr.PropertyKind.ATTR, 'a'); |
130 | 145 |
131 assertEquals('a', obj.test); | 146 assertEquals('a', obj.test); |
132 assertFalse(obj.hasAttribute('test')); | 147 assertFalse(obj.hasAttribute('test')); |
133 | 148 |
134 obj.test = 'b'; | 149 obj.test = 'b'; |
135 assertEquals('b', obj.test); | 150 assertEquals('b', obj.test); |
136 assertEquals('b', obj.getAttribute('test')); | 151 assertEquals('b', obj.getAttribute('test')); |
137 } | 152 } |
138 | 153 |
| 154 function testDefinePropertyAttrWithSetter() { |
| 155 var obj = document.createElement('div'); |
| 156 |
| 157 var hit = false; |
| 158 function onTestSet(value) { |
| 159 assertEquals(this, obj); |
| 160 assertEquals(value, 'b'); |
| 161 assertEquals(this.test, 'b'); |
| 162 hit = true; |
| 163 } |
| 164 cr.defineProperty(obj, 'test', cr.PropertyKind.ATTR, 'a', onTestSet); |
| 165 obj.test = 'b'; |
| 166 assertTrue(hit); |
| 167 } |
| 168 |
139 function testDefinePropertyAttrEvent() { | 169 function testDefinePropertyAttrEvent() { |
140 var obj = document.createElement('div'); | 170 var obj = document.createElement('div'); |
141 cr.defineProperty(obj, 'test', cr.PropertyKind.ATTR); | 171 cr.defineProperty(obj, 'test', cr.PropertyKind.ATTR); |
142 obj.test = 'a'; | 172 obj.test = 'a'; |
143 | 173 |
144 var count = 0; | 174 var count = 0; |
145 function f(e) { | 175 function f(e) { |
146 assertEquals('testChange', e.type); | 176 assertEquals('testChange', e.type); |
147 assertEquals('test', e.propertyName); | 177 assertEquals('test', e.propertyName); |
148 assertEquals('a', e.oldValue); | 178 assertEquals('a', e.oldValue); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
216 | 246 |
217 obj.addEventListener('testChange', f); | 247 obj.addEventListener('testChange', f); |
218 obj.test = true; | 248 obj.test = true; |
219 assertTrue(obj.test); | 249 assertTrue(obj.test); |
220 assertEquals('Should have called the property change listener', 1, count); | 250 assertEquals('Should have called the property change listener', 1, count); |
221 | 251 |
222 obj.test = true; | 252 obj.test = true; |
223 assertEquals(1, count); | 253 assertEquals(1, count); |
224 } | 254 } |
225 | 255 |
| 256 function testDefinePropertyBoolAttrWithTruthyDefaultFails() { |
| 257 var obj = document.createElement('div'); |
| 258 assertThrows(function() { |
| 259 cr.defineProperty(obj, 'test', cr.PropertyKind.BOOL_ATTR, true); |
| 260 }); |
| 261 } |
| 262 |
| 263 function testDefinePropertyBoolAttrEvent() { |
| 264 var obj = document.createElement('div'); |
| 265 var hit = false; |
| 266 function onTestSet(value) { |
| 267 assertEquals(this, obj); |
| 268 assertTrue(this.test); |
| 269 assertTrue(value); |
| 270 hit = true; |
| 271 } |
| 272 cr.defineProperty(obj, 'test', cr.PropertyKind.BOOL_ATTR, false, onTestSet); |
| 273 obj.test = true; |
| 274 assertTrue(hit); |
| 275 } |
| 276 |
226 function testAddSingletonGetter() { | 277 function testAddSingletonGetter() { |
227 function Foo() {}; | 278 function Foo() {}; |
228 cr.addSingletonGetter(Foo); | 279 cr.addSingletonGetter(Foo); |
229 | 280 |
230 assertNotNull('Should add get instance function', Foo.getInstance); | 281 assertNotNull('Should add get instance function', Foo.getInstance); |
231 | 282 |
232 var x = Foo.getInstance(); | 283 var x = Foo.getInstance(); |
233 assertNotNull('Should successfully create an object', x); | 284 assertNotNull('Should successfully create an object', x); |
234 | 285 |
235 var y = Foo.getInstance(); | 286 var y = Foo.getInstance(); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
269 assertEquals(0, foo.v); | 320 assertEquals(0, foo.v); |
270 | 321 |
271 v = 1; | 322 v = 1; |
272 assertEquals(1, foo.v); | 323 assertEquals(1, foo.v); |
273 } | 324 } |
274 | 325 |
275 </script> | 326 </script> |
276 | 327 |
277 </body> | 328 </body> |
278 </html> | 329 </html> |
OLD | NEW |