Files
sdk/tests/corelib/apply6_test.dart
Robert Nystrom 0906af6d2f Reformat tests/corelib/.
I also regenerated the static error expectations (see #57042 for
context).

Change-Id: Ia0ca22604a0dd422cc265a46845afc43f551fe38
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/394572
Commit-Queue: Lasse Nielsen <lrn@google.com>
Reviewed-by: Lasse Nielsen <lrn@google.com>
Auto-Submit: Bob Nystrom <rnystrom@google.com>
2024-11-14 13:04:51 +00:00

71 lines
2.3 KiB
Dart

// Copyright (c) 2021, 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.
// Test that the List of positional arguments to [Function.apply] is not
// modified.
import "package:expect/expect.dart";
class A {
foo([
a = 10,
b = 20,
c = 30,
d = 40,
e = 50,
f = 60,
g = 70,
h = 80,
i = 90,
]) => '$a $b $c $d $e $f $g $h $i';
}
String static1(a, b, {c = 30, d = 40}) => '$a $b $c $d';
void test(
String expected,
Function function,
List positional, [
Map<Symbol, dynamic>? named = null,
]) {
final original = List.of(positional);
Expect.equals(expected, Function.apply(function, positional, named));
Expect.listEquals(original, positional);
// Test again so there are multiple call sites for `Function.apply`.
Expect.equals(expected, Function.apply(function, positional, named));
Expect.listEquals(original, positional);
}
main() {
var a = A();
test('10 20 30 40 50 60 70 80 90', a.foo, []);
test('11 20 30 40 50 60 70 80 90', a.foo, [11]);
test('11 22 30 40 50 60 70 80 90', a.foo, [11, 22]);
test('11 22 33 40 50 60 70 80 90', a.foo, [11, 22, 33]);
test('11 22 33 44 50 60 70 80 90', a.foo, [11, 22, 33, 44]);
test('11 22 33 44 55 60 70 80 90', a.foo, [11, 22, 33, 44, 55]);
test('11 22 33 44 55 66 70 80 90', a.foo, [11, 22, 33, 44, 55, 66]);
test('11 22 33 44 55 66 77 80 90', a.foo, [11, 22, 33, 44, 55, 66, 77]);
test('11 22 33 44 55 66 77 88 90', a.foo, [11, 22, 33, 44, 55, 66, 77, 88]);
test('11 22 33 44 55 66 77 88 99', a.foo, [
11, 22, 33, 44, 55, 66, 77, 88, 99, //
]);
// Some unmodifiable Lists. An attempt to modify the argument would fail.
test('11 22 33 44 55 66 77 80 90', a.foo, const [11, 22, 33, 44, 55, 66, 77]);
test('65 66 67 68 69 70 71 80 90', a.foo, 'ABCDEFG'.codeUnits);
test('11 22 30 40', static1, [11, 22]);
test('11 22 30 40', static1, [11, 22], {});
test('11 22 33 40', static1, [11, 22], {#c: 33});
test('11 22 30 44', static1, [11, 22], {#d: 44});
test('11 22 66 55', static1, [11, 22], {#d: 55, #c: 66});
test('11 22 88 77', static1, const [11, 22], {#d: 77, #c: 88});
test('65 66 11 22', static1, 'AB'.codeUnits, {#d: 22, #c: 11});
}