mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 11:02:31 +00:00
fix unsound cast failures in tests
the "whitelist" option to ignore cast failures is no longer used by most tests (I'm investigating what to do about package:unittest) R=rnystrom@google.com, vsm@google.com Review-Url: https://codereview.chromium.org/2989993002 .
This commit is contained in:
parent
925295d7af
commit
bba4b68d51
|
@ -26,7 +26,6 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
|
|||
// 'fail' - test fails
|
||||
// 'timeout' - test times out
|
||||
// 'slow' - use 5s timeout instead of default 2s.
|
||||
// 'whitelist' - run with whitelisted type errors allowed
|
||||
//
|
||||
// Common combinations:
|
||||
const pass = 'pass';
|
||||
|
@ -40,7 +39,6 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
|
|||
// These are typically tests with asynchronous exceptions that our
|
||||
// test framework doesn't always catch.
|
||||
const flaky = 'skip';
|
||||
const whitelist = 'whitelist';
|
||||
|
||||
// Tests marked with this are still using the deprecated unittest package
|
||||
// because they rely on its support for futures and asynchronous tests, which
|
||||
|
@ -77,8 +75,6 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
|
|||
'async_star_test_05_multi': async_unittest,
|
||||
|
||||
'async_switch_test': fail,
|
||||
'async_test': whitelist,
|
||||
'async_this_bound_test': whitelist,
|
||||
'asyncstar_throw_in_catch_test': ['skip', 'fail'],
|
||||
'await_future_test': skip_timeout,
|
||||
'await_for_test': 'slow',
|
||||
|
@ -161,7 +157,6 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
|
|||
'list_literal3_test': fail,
|
||||
'main_test_03_multi': fail,
|
||||
'many_generic_instanceof_test': fail,
|
||||
'many_named_arguments_test': whitelist,
|
||||
'map_literal10_test': fail,
|
||||
'map_literal7_test': fail,
|
||||
'memory_swap_test': skip_timeout,
|
||||
|
@ -174,7 +169,6 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
|
|||
'number_identifier_test_05_multi': fail,
|
||||
'number_identity2_test': fail,
|
||||
'numbers_test': fail,
|
||||
'reg_exp_test': whitelist,
|
||||
'regress_16640_test': fail,
|
||||
'regress_22445_test': fail,
|
||||
'regress_22777_test': flaky,
|
||||
|
@ -257,12 +251,9 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
|
|||
'int_parse_with_limited_ints_test': fail,
|
||||
'integer_to_radix_string_test': fail,
|
||||
'integer_to_string_test_01_multi': fail,
|
||||
'iterable_empty_test': whitelist,
|
||||
'iterable_join_test': whitelist,
|
||||
'iterable_return_type_test_02_multi': fail,
|
||||
'json_map_test': fail,
|
||||
'list_fill_range_test': fail,
|
||||
'list_insert_all_test': whitelist,
|
||||
'list_replace_range_test': fail,
|
||||
'list_set_all_test': fail,
|
||||
'list_test_01_multi': fail,
|
||||
|
@ -272,15 +263,11 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
|
|||
'map_from_iterable_test': is.firefox('<=50') ? fail : pass,
|
||||
'nan_infinity_test_01_multi': fail,
|
||||
'null_nosuchmethod_test': fail,
|
||||
'reg_exp_all_matches_test': whitelist,
|
||||
'reg_exp_start_end_test': whitelist,
|
||||
'regress_r21715_test': fail,
|
||||
'sort_test': whitelist,
|
||||
'splay_tree_from_iterable_test': is.firefox('<=50') ? fail : pass,
|
||||
'string_case_test_01_multi': firefox_fail,
|
||||
'string_fromcharcodes_test': skip_timeout,
|
||||
'string_operations_with_null_test': fail,
|
||||
'string_split_test': whitelist,
|
||||
'string_trimlr_test_01_multi': is.chrome('<=58') ? fail : pass,
|
||||
'string_trimlr_test_none_multi': is.chrome('<=58') ? fail : pass,
|
||||
'symbol_operator_test_03_multi': fail,
|
||||
|
@ -356,33 +343,23 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
|
|||
'zone_run_unary_test': fail,
|
||||
},
|
||||
|
||||
'lib/collection': {
|
||||
'linked_list_test': whitelist,
|
||||
},
|
||||
'lib/collection': {},
|
||||
|
||||
'lib/convert': {
|
||||
'base64_test_01_multi': 'slow',
|
||||
'chunked_conversion_utf82_test': whitelist,
|
||||
'chunked_conversion_utf83_test': whitelist,
|
||||
'chunked_conversion_utf85_test': ['whitelist', 'slow'],
|
||||
'chunked_conversion_utf86_test': whitelist,
|
||||
'chunked_conversion_utf87_test': whitelist,
|
||||
'chunked_conversion_utf85_test': 'slow',
|
||||
|
||||
'encoding_test': skip_timeout,
|
||||
|
||||
'json_utf8_chunk_test': skip_timeout,
|
||||
'latin1_test': skip_timeout,
|
||||
|
||||
'streamed_conversion_json_decode1_test': whitelist,
|
||||
'streamed_conversion_json_encode1_test': skip_timeout,
|
||||
'streamed_conversion_json_utf8_decode_test': skip_timeout,
|
||||
'streamed_conversion_json_utf8_encode_test': skip_timeout,
|
||||
'streamed_conversion_utf8_decode_test': skip_timeout,
|
||||
'streamed_conversion_utf8_encode_test': skip_timeout,
|
||||
'utf82_test': whitelist,
|
||||
'utf85_test': skip_timeout,
|
||||
'utf8_encode_test': whitelist,
|
||||
'utf8_test': whitelist,
|
||||
},
|
||||
|
||||
'lib/html': {
|
||||
|
@ -519,7 +496,6 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
|
|||
'int64_list_load_store_test': fail,
|
||||
'typed_data_hierarchy_int64_test': fail,
|
||||
'typed_data_list_test': fail,
|
||||
'typed_list_iterable_test': whitelist,
|
||||
},
|
||||
|
||||
'lib/mirrors': {
|
||||
|
@ -756,9 +732,6 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
|
|||
mainLibrary._expectRuntimeError;
|
||||
let fail = has('fail');
|
||||
|
||||
let whitelist = has('whitelist');
|
||||
dart_sdk.dart.ignoreWhitelistedErrors(whitelist);
|
||||
|
||||
function finish(error) {
|
||||
// If the test left any lingering detritus in the DOM, blow it away
|
||||
// so it doesn't interfere with later tests.
|
||||
|
@ -785,7 +758,6 @@ define(['dart_sdk', 'async_helper', 'expect', 'unittest', 'is', 'require'],
|
|||
document.body.innerHTML = '';
|
||||
console.log("cleared");
|
||||
if (error && !(error instanceof Error)) error = new Error(error);
|
||||
dart_sdk.dart.ignoreWhitelistedErrors(false);
|
||||
done(error);
|
||||
}
|
||||
|
||||
|
|
|
@ -6,10 +6,8 @@ library sort_helper;
|
|||
|
||||
import "package:expect/expect.dart";
|
||||
|
||||
typedef Sorter
|
||||
= void Function(List<num>);
|
||||
typedef Comparer
|
||||
= int Function(num, num);
|
||||
typedef Sorter = void Function(List<num>);
|
||||
typedef Comparer = int Function(num, num);
|
||||
|
||||
class SortHelper {
|
||||
SortHelper(this.sortFunction, this.compareFunction) {}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
import "package:expect/expect.dart";
|
||||
|
||||
main() {
|
||||
testEmpty(name, it, [depth = 2]) {
|
||||
testEmpty(name, Iterable<int> it, [depth = 2]) {
|
||||
Expect.isTrue(it.isEmpty, name);
|
||||
Expect.isFalse(it.isNotEmpty, name);
|
||||
Expect.equals(0, it.length, name);
|
||||
|
|
|
@ -51,7 +51,7 @@ testCollections() {
|
|||
var setString = set.join();
|
||||
Expect.isTrue(perm.contains(setString), "set: $setString");
|
||||
|
||||
void testArray(array) {
|
||||
void testArray(List<int> array) {
|
||||
testJoin("1,3,5,7,9", array.where((i) => i.isOdd), ",");
|
||||
testJoin("0,2,4,6,8,10,12,14,16,18", array.map((i) => i * 2), ",");
|
||||
testJoin("5,6,7,8,9", array.skip(5), ",");
|
||||
|
@ -61,7 +61,7 @@ testCollections() {
|
|||
}
|
||||
|
||||
testArray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
|
||||
var fixedArray = new List(10);
|
||||
var fixedArray = new List<int>(10);
|
||||
for (int i = 0; i < 10; i++) {
|
||||
fixedArray[i] = i;
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
import "package:expect/expect.dart";
|
||||
import "dart:collection";
|
||||
|
||||
test(List list, int index, Iterable iterable) {
|
||||
test(List<int> list, int index, Iterable<int> iterable) {
|
||||
List copy = list.toList();
|
||||
list.insertAll(index, iterable);
|
||||
List iterableList = iterable.toList();
|
||||
|
@ -21,8 +21,8 @@ test(List list, int index, Iterable iterable) {
|
|||
}
|
||||
}
|
||||
|
||||
class MyList extends ListBase {
|
||||
List list;
|
||||
class MyList<T> extends ListBase<T> {
|
||||
List<T> list;
|
||||
MyList(this.list);
|
||||
get length => list.length;
|
||||
set length(value) {
|
||||
|
|
|
@ -6,6 +6,9 @@ library sort_helper;
|
|||
|
||||
import "package:expect/expect.dart";
|
||||
|
||||
typedef Sorter = void Function(List<num>);
|
||||
typedef Comparer = int Function(num, num);
|
||||
|
||||
class SortHelper {
|
||||
SortHelper(this.sortFunction, this.compareFunction) {}
|
||||
|
||||
|
@ -14,7 +17,7 @@ class SortHelper {
|
|||
testSortDoubleLists();
|
||||
}
|
||||
|
||||
bool isSorted(List a) {
|
||||
bool isSorted(List<num> a) {
|
||||
for (int i = 1; i < a.length; i++) {
|
||||
if (compareFunction(a[i - 1], a[i]) > 0) {
|
||||
return false;
|
||||
|
@ -115,7 +118,7 @@ class SortHelper {
|
|||
testInsertionSort(3, 2, 0, 1);
|
||||
}
|
||||
|
||||
void testSort(List a) {
|
||||
void testSort(List<num> a) {
|
||||
sortFunction(a);
|
||||
Expect.isTrue(isSorted(a));
|
||||
}
|
||||
|
@ -147,6 +150,6 @@ class SortHelper {
|
|||
testSort(a);
|
||||
}
|
||||
|
||||
Function sortFunction;
|
||||
Function compareFunction;
|
||||
Sorter sortFunction;
|
||||
Comparer compareFunction;
|
||||
}
|
||||
|
|
|
@ -45,7 +45,7 @@ class B {
|
|||
}
|
||||
|
||||
main() {
|
||||
var asyncReturn;
|
||||
Future asyncReturn;
|
||||
|
||||
asyncReturn = topLevelFunction();
|
||||
Expect.isTrue(asyncReturn is Future);
|
||||
|
@ -94,7 +94,7 @@ main() {
|
|||
};
|
||||
asyncReturn = moreNesting(1, "ignore", 2);
|
||||
Expect.isTrue(asyncReturn is Future);
|
||||
asyncReturn.then((int result) => Expect.equals(result, 28));
|
||||
asyncReturn.then((num result) => Expect.equals(result, 28));
|
||||
|
||||
var checkAsync = (var someFunc) {
|
||||
var toTest = someFunc();
|
||||
|
|
|
@ -63,7 +63,7 @@ class Fisk {
|
|||
|
||||
main() {
|
||||
var method = new Fisk().method;
|
||||
var namedArguments = new Map();
|
||||
var namedArguments = new Map<Symbol, dynamic>();
|
||||
namedArguments[const Symbol('a')] = 'a';
|
||||
Expect.stringEquals(
|
||||
EXPECTED_RESULT, Function.apply(method, [], namedArguments));
|
||||
|
|
|
@ -124,7 +124,7 @@ testBadAdd() {
|
|||
}
|
||||
|
||||
testConcurrentModificationError() {
|
||||
test(function(LinkedList ll)) {
|
||||
test(function(LinkedList<MyEntry> ll)) {
|
||||
var ll = new LinkedList<MyEntry>();
|
||||
for (int i = 0; i < 10; i++) {
|
||||
ll.add(new MyEntry(i));
|
||||
|
|
|
@ -13,7 +13,7 @@ String decode(List<int> bytes, int chunkSize) {
|
|||
var byteSink = new Utf8Decoder().startChunkedConversion(stringSink);
|
||||
int i = 0;
|
||||
while (i < bytes.length) {
|
||||
List nextChunk = [];
|
||||
var nextChunk = <int>[];
|
||||
for (int j = 0; j < chunkSize; j++) {
|
||||
if (i < bytes.length) {
|
||||
nextChunk.add(bytes[i]);
|
||||
|
@ -33,7 +33,7 @@ String decodeAllowMalformed(List<int> bytes, int chunkSize) {
|
|||
var byteSink = decoder.startChunkedConversion(stringSink);
|
||||
int i = 0;
|
||||
while (i < bytes.length) {
|
||||
List nextChunk = [];
|
||||
var nextChunk = <int>[];
|
||||
for (int j = 0; j < chunkSize; j++) {
|
||||
if (i < bytes.length) {
|
||||
nextChunk.add(bytes[i]);
|
||||
|
@ -226,37 +226,37 @@ main() {
|
|||
return [
|
||||
[test, "\u{FFFD}"],
|
||||
[
|
||||
new List.from([0x61])..addAll(test),
|
||||
new List<int>.from([0x61])..addAll(test),
|
||||
"a\u{FFFD}"
|
||||
],
|
||||
[
|
||||
new List.from([0x61])
|
||||
new List<int>.from([0x61])
|
||||
..addAll(test)
|
||||
..add(0x61),
|
||||
"a\u{FFFD}a"
|
||||
],
|
||||
[new List.from(test)..add(0x61), "\u{FFFD}a"],
|
||||
[new List.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
|
||||
[new List<int>.from(test)..add(0x61), "\u{FFFD}a"],
|
||||
[new List<int>.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
|
||||
[
|
||||
new List.from(test)
|
||||
new List<int>.from(test)
|
||||
..add(0x61)
|
||||
..addAll(test),
|
||||
"\u{FFFD}a\u{FFFD}"
|
||||
],
|
||||
[
|
||||
new List.from([0xc3, 0xa5])..addAll(test),
|
||||
new List<int>.from([0xc3, 0xa5])..addAll(test),
|
||||
"å\u{FFFD}"
|
||||
],
|
||||
[
|
||||
new List.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
|
||||
new List<int>.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
|
||||
"å\u{FFFD}å"
|
||||
],
|
||||
[
|
||||
new List.from(test)..addAll([0xc3, 0xa5]),
|
||||
new List<int>.from(test)..addAll([0xc3, 0xa5]),
|
||||
"\u{FFFD}å"
|
||||
],
|
||||
[
|
||||
new List.from(test)..addAll([0xc3, 0xa5])..addAll(test),
|
||||
new List<int>.from(test)..addAll([0xc3, 0xa5])..addAll(test),
|
||||
"\u{FFFD}å\u{FFFD}"
|
||||
]
|
||||
];
|
||||
|
|
|
@ -15,7 +15,7 @@ String decode(List<int> bytes, int chunkSize) {
|
|||
var byteSink = new Utf8Decoder().startChunkedConversion(stringSink);
|
||||
int i = 0;
|
||||
while (i < bytes.length) {
|
||||
List nextChunk = [];
|
||||
var nextChunk = <int>[];
|
||||
for (int j = 0; j < chunkSize; j++) {
|
||||
if (i < bytes.length) {
|
||||
nextChunk.add(bytes[i]);
|
||||
|
@ -35,7 +35,7 @@ String decodeAllowMalformed(List<int> bytes, int chunkSize) {
|
|||
var byteSink = decoder.startChunkedConversion(stringSink);
|
||||
int i = 0;
|
||||
while (i < bytes.length) {
|
||||
List nextChunk = [];
|
||||
var nextChunk = <int>[];
|
||||
for (int j = 0; j < chunkSize; j++) {
|
||||
if (i < bytes.length) {
|
||||
nextChunk.add(bytes[i]);
|
||||
|
|
|
@ -208,37 +208,37 @@ main() {
|
|||
return [
|
||||
[test, "\u{FFFD}"],
|
||||
[
|
||||
new List.from([0x61])..addAll(test),
|
||||
new List<int>.from([0x61])..addAll(test),
|
||||
"a\u{FFFD}"
|
||||
],
|
||||
[
|
||||
new List.from([0x61])
|
||||
new List<int>.from([0x61])
|
||||
..addAll(test)
|
||||
..add(0x61),
|
||||
"a\u{FFFD}a"
|
||||
],
|
||||
[new List.from(test)..add(0x61), "\u{FFFD}a"],
|
||||
[new List.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
|
||||
[new List<int>.from(test)..add(0x61), "\u{FFFD}a"],
|
||||
[new List<int>.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
|
||||
[
|
||||
new List.from(test)
|
||||
new List<int>.from(test)
|
||||
..add(0x61)
|
||||
..addAll(test),
|
||||
"\u{FFFD}a\u{FFFD}"
|
||||
],
|
||||
[
|
||||
new List.from([0xc3, 0xa5])..addAll(test),
|
||||
new List<int>.from([0xc3, 0xa5])..addAll(test),
|
||||
"å\u{FFFD}"
|
||||
],
|
||||
[
|
||||
new List.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
|
||||
new List<int>.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
|
||||
"å\u{FFFD}å"
|
||||
],
|
||||
[
|
||||
new List.from(test)..addAll([0xc3, 0xa5]),
|
||||
new List<int>.from(test)..addAll([0xc3, 0xa5]),
|
||||
"\u{FFFD}å"
|
||||
],
|
||||
[
|
||||
new List.from(test)..addAll([0xc3, 0xa5])..addAll(test),
|
||||
new List<int>.from(test)..addAll([0xc3, 0xa5])..addAll(test),
|
||||
"\u{FFFD}å\u{FFFD}"
|
||||
]
|
||||
];
|
||||
|
|
|
@ -229,37 +229,37 @@ main() {
|
|||
return [
|
||||
[test, "\u{FFFD}"],
|
||||
[
|
||||
new List.from([0x61])..addAll(test),
|
||||
new List<int>.from([0x61])..addAll(test),
|
||||
"a\u{FFFD}"
|
||||
],
|
||||
[
|
||||
new List.from([0x61])
|
||||
new List<int>.from([0x61])
|
||||
..addAll(test)
|
||||
..add(0x61),
|
||||
"a\u{FFFD}a"
|
||||
],
|
||||
[new List.from(test)..add(0x61), "\u{FFFD}a"],
|
||||
[new List.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
|
||||
[new List<int>.from(test)..add(0x61), "\u{FFFD}a"],
|
||||
[new List<int>.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
|
||||
[
|
||||
new List.from(test)
|
||||
new List<int>.from(test)
|
||||
..add(0x61)
|
||||
..addAll(test),
|
||||
"\u{FFFD}a\u{FFFD}"
|
||||
],
|
||||
[
|
||||
new List.from([0xc3, 0xa5])..addAll(test),
|
||||
new List<int>.from([0xc3, 0xa5])..addAll(test),
|
||||
"å\u{FFFD}"
|
||||
],
|
||||
[
|
||||
new List.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
|
||||
new List<int>.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
|
||||
"å\u{FFFD}å"
|
||||
],
|
||||
[
|
||||
new List.from(test)..addAll([0xc3, 0xa5]),
|
||||
new List<int>.from(test)..addAll([0xc3, 0xa5]),
|
||||
"\u{FFFD}å"
|
||||
],
|
||||
[
|
||||
new List.from(test)..addAll([0xc3, 0xa5])..addAll(test),
|
||||
new List<int>.from(test)..addAll([0xc3, 0xa5])..addAll(test),
|
||||
"\u{FFFD}å\u{FFFD}"
|
||||
]
|
||||
];
|
||||
|
|
|
@ -83,7 +83,7 @@ bool isJsonEqual(o1, o2) {
|
|||
Stream<Object> createStream(List<String> chunks) {
|
||||
var decoder = new JsonDecoder(null);
|
||||
var controller;
|
||||
controller = new StreamController(onListen: () {
|
||||
controller = new StreamController<String>(onListen: () {
|
||||
chunks.forEach(controller.add);
|
||||
controller.close();
|
||||
});
|
||||
|
|
|
@ -205,7 +205,7 @@ const BIGGEST_4_UTF8_UNIT_BYTES = const [0xF4, 0x8F, 0xBF, 0xBF];
|
|||
const BIGGEST_4_UTF8_UNIT_STRING = "\u{10FFFF}";
|
||||
|
||||
const _TEST_PAIRS = const [
|
||||
const [const [], ""],
|
||||
const [const <int>[], ""],
|
||||
const [INTER_BYTES, INTER_STRING],
|
||||
const [BLUEBERRY_BYTES, BLUEBERRY_STRING],
|
||||
const [SIVA_BYTES1, SIVA_STRING1],
|
||||
|
@ -224,12 +224,12 @@ const _TEST_PAIRS = const [
|
|||
|
||||
List<List> _expandTestPairs() {
|
||||
assert(2 == BEE_STRING.length);
|
||||
var tests = [];
|
||||
var tests = <List>[];
|
||||
tests.addAll(_TEST_PAIRS);
|
||||
tests.addAll(_TEST_PAIRS.map((test) {
|
||||
var bytes = test[0];
|
||||
var string = test[1];
|
||||
var longBytes = [];
|
||||
var longBytes = <int>[];
|
||||
var longString = "";
|
||||
for (int i = 0; i < 100; i++) {
|
||||
longBytes.addAll(bytes);
|
||||
|
|
|
@ -213,37 +213,37 @@ main() {
|
|||
return [
|
||||
[test, "\u{FFFD}"],
|
||||
[
|
||||
new List.from([0x61])..addAll(test),
|
||||
new List<int>.from([0x61])..addAll(test),
|
||||
"a\u{FFFD}"
|
||||
],
|
||||
[
|
||||
new List.from([0x61])
|
||||
new List<int>.from([0x61])
|
||||
..addAll(test)
|
||||
..add(0x61),
|
||||
"a\u{FFFD}a"
|
||||
],
|
||||
[new List.from(test)..add(0x61), "\u{FFFD}a"],
|
||||
[new List.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
|
||||
[new List<int>.from(test)..add(0x61), "\u{FFFD}a"],
|
||||
[new List<int>.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
|
||||
[
|
||||
new List.from(test)
|
||||
new List<int>.from(test)
|
||||
..add(0x61)
|
||||
..addAll(test),
|
||||
"\u{FFFD}a\u{FFFD}"
|
||||
],
|
||||
[
|
||||
new List.from([0xc3, 0xa5])..addAll(test),
|
||||
new List<int>.from([0xc3, 0xa5])..addAll(test),
|
||||
"å\u{FFFD}"
|
||||
],
|
||||
[
|
||||
new List.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
|
||||
new List<int>.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
|
||||
"å\u{FFFD}å"
|
||||
],
|
||||
[
|
||||
new List.from(test)..addAll([0xc3, 0xa5]),
|
||||
new List<int>.from(test)..addAll([0xc3, 0xa5]),
|
||||
"\u{FFFD}å"
|
||||
],
|
||||
[
|
||||
new List.from(test)..addAll([0xc3, 0xa5])..addAll(test),
|
||||
new List<int>.from(test)..addAll([0xc3, 0xa5])..addAll(test),
|
||||
"\u{FFFD}å\u{FFFD}"
|
||||
]
|
||||
];
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
import 'dart:typed_data';
|
||||
import 'package:expect/expect.dart';
|
||||
|
||||
void testIterableFunctions(list, first, last) {
|
||||
void testIterableFunctions<T extends num>(
|
||||
List<T> list, T first, T last, T zero) {
|
||||
assert(list.length > 0);
|
||||
|
||||
Expect.equals(first, list.first);
|
||||
|
@ -75,8 +76,8 @@ void testIterableFunctions(list, first, last) {
|
|||
Expect.equals(list.length, whereCount);
|
||||
|
||||
if (list.length > 1) {
|
||||
int reduceResult = 1;
|
||||
Expect.equals(list.length, list.reduce((x, y) => ++reduceResult));
|
||||
var reduceResult = zero + 1;
|
||||
Expect.equals(list.length, list.reduce((x, y) => ++reduceResult as T));
|
||||
} else {
|
||||
Expect.equals(first, list.reduce((x, y) {
|
||||
throw "should not be called";
|
||||
|
@ -99,7 +100,7 @@ void testIterableFunctions(list, first, last) {
|
|||
Expect.throws(() => l3.add(last), (e) => e is UnsupportedError);
|
||||
}
|
||||
|
||||
void emptyChecks(list) {
|
||||
void emptyChecks<T extends num>(List<T> list, T zero) {
|
||||
assert(list.length == 0);
|
||||
|
||||
Expect.isTrue(list.isEmpty);
|
||||
|
@ -158,28 +159,28 @@ void emptyChecks(list) {
|
|||
Expect.isTrue(list.takeWhile((x) => true).isEmpty);
|
||||
Expect.isTrue(list.toList().isEmpty);
|
||||
var l2 = list.toList();
|
||||
l2.add(0);
|
||||
Expect.equals(0, l2.last);
|
||||
l2.add(zero);
|
||||
Expect.equals(zero, l2.last);
|
||||
var l3 = list.toList(growable: false);
|
||||
Expect.throws(() => l3.add(0), (e) => e is UnsupportedError);
|
||||
Expect.throws(() => l3.add(zero), (e) => e is UnsupportedError);
|
||||
}
|
||||
|
||||
main() {
|
||||
testIterableFunctions(new Float32List.fromList([1.5, 9.5]), 1.5, 9.5);
|
||||
testIterableFunctions(new Float64List.fromList([1.5, 9.5]), 1.5, 9.5);
|
||||
testIterableFunctions(new Int8List.fromList([3, 9]), 3, 9);
|
||||
testIterableFunctions(new Int16List.fromList([3, 9]), 3, 9);
|
||||
testIterableFunctions(new Int32List.fromList([3, 9]), 3, 9);
|
||||
testIterableFunctions(new Uint8List.fromList([3, 9]), 3, 9);
|
||||
testIterableFunctions(new Uint16List.fromList([3, 9]), 3, 9);
|
||||
testIterableFunctions(new Uint32List.fromList([3, 9]), 3, 9);
|
||||
testIterableFunctions(new Float32List.fromList([1.5, 9.5]), 1.5, 9.5, 0.0);
|
||||
testIterableFunctions(new Float64List.fromList([1.5, 9.5]), 1.5, 9.5, 0.0);
|
||||
testIterableFunctions(new Int8List.fromList([3, 9]), 3, 9, 0);
|
||||
testIterableFunctions(new Int16List.fromList([3, 9]), 3, 9, 0);
|
||||
testIterableFunctions(new Int32List.fromList([3, 9]), 3, 9, 0);
|
||||
testIterableFunctions(new Uint8List.fromList([3, 9]), 3, 9, 0);
|
||||
testIterableFunctions(new Uint16List.fromList([3, 9]), 3, 9, 0);
|
||||
testIterableFunctions(new Uint32List.fromList([3, 9]), 3, 9, 0);
|
||||
|
||||
emptyChecks(new Float32List(0));
|
||||
emptyChecks(new Float64List(0));
|
||||
emptyChecks(new Int8List(0));
|
||||
emptyChecks(new Int16List(0));
|
||||
emptyChecks(new Int32List(0));
|
||||
emptyChecks(new Uint8List(0));
|
||||
emptyChecks(new Uint16List(0));
|
||||
emptyChecks(new Uint32List(0));
|
||||
emptyChecks(new Float32List(0), 0.0);
|
||||
emptyChecks(new Float64List(0), 0.0);
|
||||
emptyChecks(new Int8List(0), 0);
|
||||
emptyChecks(new Int16List(0), 0);
|
||||
emptyChecks(new Int32List(0), 0);
|
||||
emptyChecks(new Uint8List(0), 0);
|
||||
emptyChecks(new Uint16List(0), 0);
|
||||
emptyChecks(new Uint32List(0), 0);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue