| // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | |
| // for details. 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:kernel/src/heap.dart'; | |
| import 'package:test/test.dart'; | |
| void main() { | |
| void check_sort(Iterable<int> initialOrder) { | |
| var values = initialOrder.toList(); | |
| var heap = new _intHeap(); | |
| values.forEach(heap.add); | |
| values.sort(); | |
| var result = <int>[]; | |
| while (heap.isNotEmpty) { | |
| expect(heap.isEmpty, isFalse); | |
| result.add(heap.remove()); | |
| } | |
| expect(heap.isEmpty, isTrue); | |
| expect(result, values); | |
| } | |
| test('sort', () { | |
| check_sort(<int>[3, 1, 4, 1, 5, 9, 2, 6]); | |
| }); | |
| test('sort_already_sorted', () { | |
| check_sort(<int>[1, 1, 2, 3, 4, 5, 6, 9]); | |
| }); | |
| test('sort_reverse_sorted', () { | |
| check_sort(<int>[9, 6, 5, 4, 3, 2, 1, 1]); | |
| }); | |
| } | |
| class _intHeap extends Heap<int> { | |
| @override | |
| bool sortsBefore(int a, int b) => a < b; | |
| } |