observer_list_test.dart 2.23 KB
Newer Older
Ian Hickson's avatar
Ian Hickson committed
1
// Copyright 2014 The Flutter Authors. All rights reserved.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
// 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);
  });
}