mirror of
https://github.com/dart-lang/sdk
synced 2024-11-05 18:22:09 +00:00
8fd6d0aafd
Committed: https://code.google.com/p/dart/source/detail?r=19755 Reverted: http://code.google.com/p/dart/source/detail?r=19756 Review URL: https://codereview.chromium.org//12212016 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@20996 260f80e4-7a28-3924-810f-c04153c831b5
86 lines
2.7 KiB
Dart
86 lines
2.7 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.
|
|
|
|
import "package:expect/expect.dart";
|
|
|
|
// Test to stress Frog's named parameter scheme.
|
|
|
|
main() {
|
|
testDollar();
|
|
testPsycho();
|
|
}
|
|
|
|
class TestClass {
|
|
method({a, b, a$b, a$$b}) => [a, b, a$b, a$$b];
|
|
|
|
psycho({$, $$, $$$, $$$$}) => [$, $$, $$$, $$$$];
|
|
}
|
|
globalMethod({a, b, a$b, a$$b}) => [a, b, a$b, a$$b];
|
|
|
|
|
|
format(thing) {
|
|
if (thing == null) return '-';
|
|
if (thing is List) {
|
|
var fragments = ['['];
|
|
var sep;
|
|
for (final item in thing) {
|
|
if (sep != null) fragments.add(sep);
|
|
sep = ', ';
|
|
fragments.add(format(item));
|
|
}
|
|
fragments.add(']');
|
|
return fragments.join();
|
|
}
|
|
return thing.toString();
|
|
}
|
|
|
|
// Hopefully inscrutable to static analysis.
|
|
makeTestClass(n) => [new TestClass(), new Decoy(), 'string'][n % 3];
|
|
|
|
class Decoy {
|
|
method([a$b, b, a]) { throw new UnimplementedError(); }
|
|
psycho([$$$, $$, $]) { throw new UnimplementedError(); }
|
|
}
|
|
|
|
testDollar() {
|
|
Expect.equals('[]', format([]));
|
|
|
|
Expect.equals('[-, -, -, -]', format(globalMethod()));
|
|
Expect.equals('[1, 2, -, -]', format(globalMethod(a: 1, b: 2)));
|
|
Expect.equals('[1, 2, -, -]', format(globalMethod(b: 2, a: 1)));
|
|
Expect.equals('[-, -, 3, -]', format(globalMethod(a$b: 3)));
|
|
Expect.equals('[-, -, -, 4]', format(globalMethod(a$$b: 4)));
|
|
|
|
TestClass t = new TestClass(); // Statically typed.
|
|
|
|
Expect.equals('[-, -, -, -]', format(t.method()));
|
|
Expect.equals('[1, 2, -, -]', format(t.method(a: 1, b: 2)));
|
|
Expect.equals('[1, 2, -, -]', format(t.method(b: 2, a: 1)));
|
|
Expect.equals('[-, -, 3, -]', format(t.method(a$b: 3)));
|
|
Expect.equals('[-, -, -, 4]', format(t.method(a$$b: 4)));
|
|
|
|
var obj = makeTestClass(0);
|
|
|
|
Expect.equals('[-, -, -, -]', format(obj.method()));
|
|
Expect.equals('[1, 2, -, -]', format(obj.method(a: 1, b: 2)));
|
|
Expect.equals('[1, 2, -, -]', format(obj.method(b: 2, a: 1)));
|
|
Expect.equals('[-, -, 3, -]', format(obj.method(a$b: 3)));
|
|
Expect.equals('[-, -, -, 4]', format(obj.method(a$$b: 4)));
|
|
}
|
|
|
|
testPsycho() {
|
|
TestClass t = new TestClass(); // Statically typed.
|
|
|
|
Expect.equals('[1, 2, 3, -]', format(t.psycho($:1, $$:2, $$$:3)));
|
|
Expect.equals('[1, 2, 3, -]', format(t.psycho($$$:3, $$:2, $:1)));
|
|
Expect.equals('[1, 2, -, -]', format(t.psycho($:1, $$:2)));
|
|
Expect.equals('[-, -, -, 4]', format(t.psycho($$$$: 4)));
|
|
|
|
var obj = makeTestClass(0);
|
|
|
|
Expect.equals('[1, 2, -, -]', format(obj.psycho($:1, $$:2)));
|
|
Expect.equals('[-, -, -, 4]', format(obj.psycho($$$$: 4)));
|
|
Expect.equals('[1, 2, 3, -]', format(obj.psycho($:1, $$:2, $$$:3)));
|
|
Expect.equals('[1, 2, 3, -]', format(obj.psycho($$$:3, $$:2, $:1)));
|
|
}
|