dart-sdk/tests/corelib/sort_test.dart
Robert Nystrom b998b10f3e Migrate remaining corelib_2/ tests to NNBD.
Change-Id: I3a31632ce28fb87a410b759d092c7ebc9393574d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/128306
Commit-Queue: Bob Nystrom <rnystrom@google.com>
Auto-Submit: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2019-12-17 23:06:24 +00:00

314 lines
3 KiB
Dart

// Copyright (c) 2011, 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.
// Dart test for sort routines.
library sort_test;
import "package:expect/expect.dart";
import 'sort_helper.dart';
main() {
var compare = (num a, num b) => a.compareTo(b);
var sort = (List<num> list) => list.sort(compare);
new SortHelper(sort, compare).run();
compare = (num a, num b) => -a.compareTo(b);
new SortHelper(sort, compare).run();
var intCompare = (int a, int b) => a.compareTo(b);
// Pivot-candidate indices: 7, 15, 22, 29, 37
// Test Dutch flag partitioning (candidates 2 and 4 are the same).
var list = [
0,
0,
0,
0,
0,
0,
0,
0 /**/,
0,
0,
0,
0,
0,
0,
0,
1 /**/,
1,
1,
1,
1,
1,
1,
1 /**/,
1,
1,
1,
1,
1,
1,
1 /**/,
2,
2,
2,
2,
2,
2,
2,
2 /**/,
2,
2,
2,
2,
2,
2,
2
];
list.sort(intCompare);
Expect.listEquals(list, <int>[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]);
list = [
0,
0,
0,
0,
0,
0,
0,
1 /**/,
0,
0,
0,
0,
0,
0,
0,
0 /**/,
1,
1,
1,
1,
1,
1,
0 /**/,
1,
1,
1,
1,
1,
1,
0 /**/,
2 /**/,
2,
2,
2,
2,
2,
2,
2 /**/,
2,
2,
2,
2,
2,
2,
2
];
list.sort(intCompare);
Expect.listEquals(list, <int>[
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
]);
// Pivots: 1 and 8.
// The second partition will be big (more than 2/3 of the list), and an
// optimization kicks in that removes the pivots from the partition.
list = [
0,
9,
0,
9,
3,
9,
0,
1 /**/,
1,
0,
1,
9,
8,
2,
1,
1 /**/,
4,
5,
2,
5,
0,
1,
8 /**/,
8,
8,
5,
2,
2,
9,
8 /**/,
8,
4,
4,
1,
5,
3,
2,
8 /**/,
5,
1,
2,
8,
5,
6,
8
];
list.sort(intCompare);
Expect.listEquals(list, <int>[
0,
0,
0,
0,
0,
1,
1,
1,
1,
1,
1,
1,
1,
2,
2,
2,
2,
2,
2,
3,
3,
4,
4,
4,
5,
5,
5,
5,
5,
5,
6,
8,
8,
8,
8,
8,
8,
8,
8,
8,
9,
9,
9,
9,
9
]);
}