Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(258)

Side by Side Diff: sky/tests/framework/observe.sky

Issue 850383002: Add two way data binding. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Make it async. Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « sky/framework/sky-element/sky-element.sky ('k') | sky/tests/framework/observe-expected.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <html> 1 <html>
2 <import src="../resources/chai.sky" /> 2 <import src="../resources/chai.sky" />
3 <import src="../resources/mocha.sky" /> 3 <import src="../resources/mocha.sky" />
4 <import src="/sky/framework/sky-element/observe.sky" as="observe" /> 4 <import src="/sky/framework/sky-element/observe.sky" as="observe" />
5 5
6 <script> 6 <script>
7 7
8 var Path = observe.Path; 8 var Path = observe.Path;
9 var PathObserver = observe.PathObserver; 9 var PathObserver = observe.PathObserver;
10 var ArrayObserver = observe.ArrayObserver; 10 var ArrayObserver = observe.ArrayObserver;
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 observer.open(); 327 observer.open();
328 observer.close(); 328 observer.close();
329 assert.strictEqual(1, count); 329 assert.strictEqual(1, count);
330 }); 330 });
331 331
332 it('valueFn/setValueFn', function() { 332 it('valueFn/setValueFn', function() {
333 var obj = { foo: 1 }; 333 var obj = { foo: 1 };
334 334
335 function valueFn(value) { return value * 2; } 335 function valueFn(value) { return value * 2; }
336 336
337 function setValueFn(value) { return value / 2; }
338
339 observer = new ObserverTransform(new PathObserver(obj, 'foo'), 337 observer = new ObserverTransform(new PathObserver(obj, 'foo'),
340 valueFn, 338 valueFn);
341 setValueFn);
342 observer.open(callback); 339 observer.open(callback);
343 340
344 obj.foo = 2; 341 obj.foo = 2;
345 342
346 assert.strictEqual(4, observer.discardChanges()); 343 assert.strictEqual(4, observer.discardChanges());
347 assertNoChanges(); 344 assertNoChanges();
348 345
349 observer.setValue(2); 346 observer.setValue(2);
350 assert.strictEqual(obj.foo, 1); 347 assert.strictEqual(obj.foo, 2);
351 assertPathChanges(2, 4);
352 348
353 obj.foo = 10; 349 obj.foo = 10;
354 assertPathChanges(20, 2); 350 assertPathChanges(20, 4);
355 351
356 observer.close(); 352 observer.close();
357 }); 353 });
358 354
359 it('valueFn - object literal', function() { 355 it('valueFn - object literal', function() {
360 var model = {}; 356 var model = {};
361 357
362 function valueFn(value) { 358 function valueFn(value) {
363 return [ value ]; 359 return [ value ];
364 } 360 }
(...skipping 1365 matching lines...) Expand 10 before | Expand all | Expand 10 after
1730 model = ['1', '2', '3', '4', '5']; 1726 model = ['1', '2', '3', '4', '5'];
1731 observer = new ArrayObserver(model); 1727 observer = new ArrayObserver(model);
1732 observer.open(callback); 1728 observer.open(callback);
1733 model.length = 0; 1729 model.length = 0;
1734 model.push('a', '2', 'y', 'y', '4', '5', 'z', 'z'); 1730 model.push('a', '2', 'y', 'y', '4', '5', 'z', 'z');
1735 assertEditDistance(model, 7); 1731 assertEditDistance(model, 7);
1736 observer.close(); 1732 observer.close();
1737 }); 1733 });
1738 }); 1734 });
1739 </script> 1735 </script>
OLDNEW
« no previous file with comments | « sky/framework/sky-element/sky-element.sky ('k') | sky/tests/framework/observe-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698