OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 /** Tests for some of the utility helper functions used by the compiler. */ | 5 /** Tests for some of the utility helper functions used by the compiler. */ |
6 library observe_test; | 6 library observe_test; |
7 | 7 |
8 import 'dart:collection' show LinkedHashMap; | 8 import 'dart:collection' show LinkedHashMap; |
9 import 'package:unittest/compact_vm_config.dart'; | 9 import 'package:unittest/compact_vm_config.dart'; |
10 import 'package:unittest/unittest.dart'; | 10 import 'package:unittest/unittest.dart'; |
(...skipping 572 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
583 | 583 |
584 group('ObservableSet', () { | 584 group('ObservableSet', () { |
585 // TODO(jmesserly): need all standard Set tests. | 585 // TODO(jmesserly): need all standard Set tests. |
586 | 586 |
587 test('observe length', () { | 587 test('observe length', () { |
588 var set = new ObservableSet<int>(); | 588 var set = new ObservableSet<int>(); |
589 var notification = null; | 589 var notification = null; |
590 observe(() => set.length, (n) { notification = n; }); | 590 observe(() => set.length, (n) { notification = n; }); |
591 | 591 |
592 set.addAll([1, 2, 3]); | 592 set.addAll([1, 2, 3]); |
593 expect(set, [1, 2, 3]); | 593 expect(set, unorderedEquals([1, 2, 3])); |
594 deliverChangesSync(); | 594 deliverChangesSync(); |
595 expect(notification, _change(0, 3), reason: 'addAll changes length'); | 595 expect(notification, _change(0, 3), reason: 'addAll changes length'); |
596 | 596 |
597 set.add(4); | 597 set.add(4); |
598 expect(set, [1, 2, 3, 4]); | 598 expect(set, unorderedEquals([1, 2, 3, 4])); |
599 deliverChangesSync(); | 599 deliverChangesSync(); |
600 expect(notification, _change(3, 4), reason: 'add changes length'); | 600 expect(notification, _change(3, 4), reason: 'add changes length'); |
601 | 601 |
602 set.removeAll([2, 3]); | 602 set.removeAll([2, 3]); |
603 expect(set, [1, 4]); | 603 expect(set, unorderedEquals([1, 4])); |
604 deliverChangesSync(); | 604 deliverChangesSync(); |
605 expect(notification, _change(4, 2), reason: 'removeAll changes length'); | 605 expect(notification, _change(4, 2), reason: 'removeAll changes length'); |
606 | 606 |
607 set.remove(1); | 607 set.remove(1); |
608 expect(set, [4]); | 608 expect(set, [4]); |
609 deliverChangesSync(); | 609 deliverChangesSync(); |
610 expect(notification, _change(2, 1), reason: 'remove changes length'); | 610 expect(notification, _change(2, 1), reason: 'remove changes length'); |
611 | 611 |
612 notification = null; | 612 notification = null; |
613 set.add(4); | 613 set.add(4); |
614 expect(set, [4]); | 614 expect(set, [4]); |
615 deliverChangesSync(); | 615 deliverChangesSync(); |
616 expect(notification, null, reason: 'item already exists'); | 616 expect(notification, null, reason: 'item already exists'); |
617 | 617 |
618 set.clear(); | 618 set.clear(); |
619 expect(set, []); | 619 expect(set, []); |
620 deliverChangesSync(); | 620 deliverChangesSync(); |
621 expect(notification, _change(1, 0), reason: 'clear changes length'); | 621 expect(notification, _change(1, 0), reason: 'clear changes length'); |
622 }); | 622 }); |
623 | 623 |
624 test('observe item', () { | 624 test('observe item', () { |
625 var set = new ObservableSet.from([1, 2, 3]); | 625 var set = new ObservableSet.from([1, 2, 3]); |
626 var notification = null; | 626 var notification = null; |
627 observe(() => set.contains(2), (n) { notification = n; }); | 627 observe(() => set.contains(2), (n) { notification = n; }); |
628 | 628 |
629 set.add(4); | 629 set.add(4); |
630 expect(set, [1, 2, 3, 4]); | 630 expect(set, unorderedEquals([1, 2, 3, 4])); |
631 deliverChangesSync(); | 631 deliverChangesSync(); |
632 expect(notification, null, reason: 'add does not change existing items'); | 632 expect(notification, null, reason: 'add does not change existing items'); |
633 | 633 |
634 set.remove(3); | 634 set.remove(3); |
635 expect(set, [1, 2, 4]); | 635 expect(set, unorderedEquals([1, 2, 4])); |
636 expect(notification, null, | 636 expect(notification, null, |
637 reason: 'removing an item does not change other items'); | 637 reason: 'removing an item does not change other items'); |
638 | 638 |
639 set.remove(2); | 639 set.remove(2); |
640 expect(set, [1, 4]); | 640 expect(set, unorderedEquals([1, 4])); |
641 deliverChangesSync(); | 641 deliverChangesSync(); |
642 expect(notification, _change(true, false)); | 642 expect(notification, _change(true, false)); |
643 | 643 |
644 notification = null; | 644 notification = null; |
645 set.removeAll([2, 3]); | 645 set.removeAll([2, 3]); |
646 expect(set, [1, 4]); | 646 expect(set, unorderedEquals([1, 4])); |
647 deliverChangesSync(); | 647 deliverChangesSync(); |
648 expect(notification, null, reason: 'item already removed'); | 648 expect(notification, null, reason: 'item already removed'); |
649 | 649 |
650 set.add(2); | 650 set.add(2); |
651 expect(set, [1, 2, 4]); | 651 expect(set, unorderedEquals([1, 2, 4])); |
652 deliverChangesSync(); | 652 deliverChangesSync(); |
653 expect(notification, _change(false, true), reason: 'item added again'); | 653 expect(notification, _change(false, true), reason: 'item added again'); |
654 }); | 654 }); |
655 | 655 |
656 test('toString', () { | 656 test('toString', () { |
657 var original = new Set.from([1, 2, 3]); | 657 var original = new Set.from([1, 2, 3]); |
658 var set = new ObservableSet.from(original); | 658 var set = new ObservableSet.from(original); |
659 var notification = null; | 659 var notification = null; |
660 observe(() => set.toString(), (n) { notification = n; }); | 660 observe(() => set.toString(), (n) { notification = n; }); |
661 set.add(4); | 661 set.add(4); |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
870 var c = _change(123, 43); | 870 var c = _change(123, 43); |
871 expect(a.hashCode, b.hashCode, reason: 'a == b'); | 871 expect(a.hashCode, b.hashCode, reason: 'a == b'); |
872 expect(b.hashCode, isNot(equals(c.hashCode)), reason: 'b != c'); | 872 expect(b.hashCode, isNot(equals(c.hashCode)), reason: 'b != c'); |
873 }); | 873 }); |
874 } | 874 } |
875 | 875 |
876 _change(oldValue, newValue) => new ChangeNotification(oldValue, newValue); | 876 _change(oldValue, newValue) => new ChangeNotification(oldValue, newValue); |
877 | 877 |
878 _record(type, key, oldValue, newValue) => | 878 _record(type, key, oldValue, newValue) => |
879 new ChangeRecord(type, key, oldValue, newValue); | 879 new ChangeRecord(type, key, oldValue, newValue); |
OLD | NEW |