| // Copyright 2020 The Fuchsia 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:fxutils/fxutils.dart'; | |
| import 'package:test/test.dart'; | |
| void main() { | |
| group('ListIterator', () { | |
| test('should return all values from `takeNext()`', () { | |
| final vals = <int>[1, 3, 2]; | |
| final iter = ListIterator<int>.from(vals); | |
| expect(iter.takeNext(), 1); | |
| expect(iter.takeNext(), 3); | |
| expect(iter.takeNext(), 2); | |
| }); | |
| test('should return lists from `take(n)`', () { | |
| final vals = <int>[1, 3, 2]; | |
| final iter = ListIterator<int>.from(vals); | |
| expect(iter.take(2), [1, 3]); | |
| expect(iter.takeNext(), 2); | |
| }); | |
| test('should correctly manage combinations of `take(n)` and `takeNext()`', | |
| () { | |
| final vals = <int>[1, 3, 2, 10, 9, 5, -1]; | |
| final iter = ListIterator<int>.from(vals); | |
| expect(iter.takeNext(), 1); | |
| expect(iter.take(2), [3, 2]); | |
| expect(iter.take(3), [10, 9, 5]); | |
| // Returns as many as remain when you ask for too many | |
| expect(iter.take(3), [-1]); | |
| }); | |
| test('should accurately report `hasMore()`', () { | |
| final vals = <int>[1, 3, 2]; | |
| final iter = ListIterator<int>.from(vals); | |
| expect(iter.hasMore(), true); | |
| iter.take(2); | |
| expect(iter.hasMore(), true); | |
| iter.takeNext(); | |
| expect(iter.hasMore(), false); | |
| }); | |
| test('should accurately report `hasNMore(n)`', () { | |
| final vals = <int>[1, 3, 2]; | |
| final iter = ListIterator<int>.from(vals); | |
| expect(iter.hasNMore(2), true); | |
| expect(iter.hasNMore(3), true); | |
| expect(iter.hasNMore(4), false); | |
| iter.take(2); | |
| expect(iter.hasNMore(1), true); | |
| expect(iter.hasNMore(2), false); | |
| iter.takeNext(); | |
| expect(iter.hasNMore(1), false); | |
| expect(iter.hasNMore(2), false); | |
| }); | |
| }); | |
| } |