// Copyright 2014 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter/foundation.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { test('ObserverList', () async { final ObserverList<int> list = ObserverList<int>(); for (int i = 0; i < 10; ++i) { list.add(i); } final Iterator<int> iterator = list.iterator; for (int i = 0; i < 10 && iterator.moveNext(); ++i) { expect(iterator.current, equals(i)); } for (int i = 9; i >= 0; --i) { expect(list.remove(i), isTrue); final Iterator<int> iterator = list.iterator; for (int j = 0; j < i && iterator.moveNext(); ++j) { expect(iterator.current, equals(j)); } } }); test('HashedObserverList', () async { final HashedObserverList<int> list = HashedObserverList<int>(); for (int i = 0; i < 10; ++i) { list.add(i); } Iterator<int> iterator = list.iterator; for (int i = 0; i < 10 && iterator.moveNext(); ++i) { expect(iterator.current, equals(i)); } for (int i = 9; i >= 0; --i) { expect(list.remove(i), isTrue); iterator = list.iterator; for (int j = 0; j < i && iterator.moveNext(); ++j) { expect(iterator.current, equals(j)); } } list.add(0); for (int i = 0; i < 10; ++i) { list.add(1); } list.add(2); iterator = list.iterator; for (int i = 0; iterator.moveNext(); ++i) { expect(iterator.current, equals(i)); expect(i, lessThan(3)); } for (int i = 2; i >= 0; --i) { expect(list.remove(i), isTrue); iterator = list.iterator; for (int j = 0; iterator.moveNext(); ++j) { expect(iterator.current, equals(i != 0 ? j : 1)); expect(j, lessThan(3)); } } iterator = list.iterator; for (int j = 0; iterator.moveNext(); ++j) { expect(iterator.current, equals(1)); expect(j, equals(0)); } expect(list.isEmpty, isFalse); iterator = list.iterator; iterator.moveNext(); expect(iterator.current, equals(1)); for (int i = 0; i < 9; ++i) { expect(list.remove(1), isTrue); } expect(list.isEmpty, isTrue); }); }