dart-sdk/tests/language/parameter/named_default_eq_runtime_test.dart
Lasse R.H. Nielsen 5642199dd0 Remove uses of : as default value separator in some tests/ directories.
Change-Id: I35bb926e53e92fd02e264fb5b14feadf063fb8db
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/257961
Reviewed-by: Michael Thomsen <mit@google.com>
Commit-Queue: Lasse Nielsen <lrn@google.com>
2022-09-07 14:49:17 +00:00

105 lines
3.4 KiB
Dart

// TODO(multitest): This was automatically migrated from a multitest and may
// contain strange or dead code.
// Copyright (c) 2016, 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.
// Check that both `=` and `:` are allowed for named parameters.
import "package:expect/expect.dart";
// Default values are not allowed on typedefs.
typedef functype({x, y, z});
int topF({x = 3, y = 5, z}) => x * y * (z ?? 2);
class A {
int x;
int y;
int z;
A({this.x = 3, this.y = 5, z}) : z = z ?? 2;
A.redirect({int x = 3, int y = 5, int? z}) : this(x: x, y: y, z: z);
factory A.factory({int x = 3, int y = 5, int? z}) =>
new A(x: x, y: y, z: z ?? 2);
factory A.redirectFactory({int x, int y, int z}) = A;
// Default values are not allowed on redirecting factory constructors.
int get value => x * y * z;
static int staticF({x = 3, y = 5, z}) => x * y * (z ?? 2);
int instanceF({x = 3, y = 5, z}) => x * y * (z ?? 2);
}
main() {
// Reference the type, or dart2js won't see that the declaration is invalid
var a = new A();
int local({x = 3, y = 5, z}) => x * y * (z ?? 2);
var expr = ({x = 3, y = 5, z}) => x * y * (z ?? 2);
var tearOff = a.instanceF;
test(function) {
Expect.equals(30, function());
Expect.equals(70, function(x: 7));
Expect.equals(42, function(y: 7));
Expect.equals(28, function(x: 7, y: 2));
Expect.equals(15, function(z: 1));
Expect.equals(21, function(y: 7, z: 1));
Expect.equals(35, function(x: 7, z: 1));
Expect.equals(14, function(x: 7, y: 2, z: 1));
Expect.isTrue(function is functype);
}
test(topF);
test(A.staticF);
test(a.instanceF);
test(local);
test(expr);
test(tearOff);
// Can't tear off constructors.
Expect.equals(30, new A().value);
Expect.equals(70, new A(x: 7).value);
Expect.equals(42, new A(y: 7).value);
Expect.equals(28, new A(x: 7, y: 2).value);
Expect.equals(15, new A(z: 1).value);
Expect.equals(21, new A(y: 7, z: 1).value);
Expect.equals(35, new A(x: 7, z: 1).value);
Expect.equals(14, new A(x: 7, y: 2, z: 1).value);
Expect.equals(30, new A.redirect().value);
Expect.equals(70, new A.redirect(x: 7).value);
Expect.equals(42, new A.redirect(y: 7).value);
Expect.equals(28, new A.redirect(x: 7, y: 2).value);
Expect.equals(15, new A.redirect(z: 1).value);
Expect.equals(21, new A.redirect(y: 7, z: 1).value);
Expect.equals(35, new A.redirect(x: 7, z: 1).value);
Expect.equals(14, new A.redirect(x: 7, y: 2, z: 1).value);
Expect.equals(30, new A.factory().value);
Expect.equals(70, new A.factory(x: 7).value);
Expect.equals(42, new A.factory(y: 7).value);
Expect.equals(28, new A.factory(x: 7, y: 2).value);
Expect.equals(15, new A.factory(z: 1).value);
Expect.equals(21, new A.factory(y: 7, z: 1).value);
Expect.equals(35, new A.factory(x: 7, z: 1).value);
Expect.equals(14, new A.factory(x: 7, y: 2, z: 1).value);
Expect.equals(30, new A.redirectFactory().value);
Expect.equals(70, new A.redirectFactory(x: 7).value);
Expect.equals(42, new A.redirectFactory(y: 7).value);
Expect.equals(28, new A.redirectFactory(x: 7, y: 2).value);
Expect.equals(15, new A.redirectFactory(z: 1).value);
Expect.equals(21, new A.redirectFactory(y: 7, z: 1).value);
Expect.equals(35, new A.redirectFactory(x: 7, z: 1).value);
Expect.equals(14, new A.redirectFactory(x: 7, y: 2, z: 1).value);
}