| Index: tests/language/src/LocalFunctionTest.dart
|
| diff --git a/tests/language/src/LocalFunctionTest.dart b/tests/language/src/LocalFunctionTest.dart
|
| deleted file mode 100644
|
| index e53dc9afc4bbffccf990300eec2c811193be8202..0000000000000000000000000000000000000000
|
| --- a/tests/language/src/LocalFunctionTest.dart
|
| +++ /dev/null
|
| @@ -1,204 +0,0 @@
|
| -// 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 program testing closures.
|
| -
|
| -class LocalFunctionTest {
|
| - LocalFunctionTest() : field1 = 100, field2_ = 200 { }
|
| - static int f(int n) {
|
| - int a = 0;
|
| - g(int m) {
|
| - a = 3*n + m + 1; // Capture parameter n and local a.
|
| - return a;
|
| - }
|
| - var b = g(n);
|
| - return a + b;
|
| - }
|
| - static int h(int n) {
|
| - k(int n) {
|
| - var a = new List(n);
|
| - var b = new List(n);
|
| - int i;
|
| - for (i = 0; i < n; i++) {
|
| - var j = i;
|
| - a[i] = () => i; // Captured i is always n.
|
| - b[i] = () => j; // Captured j varies from 0 to n-1.
|
| - }
|
| - var a_sum = 0;
|
| - var b_sum = 0;
|
| - for (int i = 0; i < n; i++) {
|
| - a_sum += a[i]();
|
| - b_sum += b[i]();
|
| - }
|
| - return a_sum + b_sum;
|
| - }
|
| - return k(n);
|
| - }
|
| - static int h2(int n) {
|
| - k(int n) {
|
| - var a = new List(n);
|
| - var b = new List(n);
|
| - for (int i = 0; i < n; i++) {
|
| - var j = i;
|
| - a[i] = () => i; // Captured i varies from 0 to n-1.
|
| - b[i] = () => j; // Captured j varies from 0 to n-1.
|
| - }
|
| - var a_sum = 0;
|
| - var b_sum = 0;
|
| - for (int i = 0; i < n; i++) {
|
| - a_sum += a[i]();
|
| - b_sum += b[i]();
|
| - }
|
| - return a_sum + b_sum;
|
| - }
|
| - return k(n);
|
| - }
|
| - int field1;
|
| - int field2_;
|
| - int get field2() { return field2_; }
|
| - void set field2(int value) { field2_ = value; }
|
| -
|
| - int method(int n) {
|
| - incField1() { field1++; }
|
| - incField2() { field2++; }
|
| - for (int i = 0; i < n; i++) {
|
| - incField1();
|
| - incField2();
|
| - }
|
| - return field1 + field2;
|
| - }
|
| - int execute(int times, apply(int x)) {
|
| - for (int i = 0; i < times; i++) {
|
| - apply(i);
|
| - }
|
| - return field1;
|
| - }
|
| - int testExecute(int n) {
|
| - execute(n, (int x) { field1 += x; });
|
| - return field1;
|
| - }
|
| - static int foo(int n) {
|
| - return -100; // Wrong foo.
|
| - }
|
| - static testSelfReference1(int n) {
|
| - int foo(int n) {
|
| - if (n == 0) {
|
| - return 0;
|
| - } else {
|
| - return 1 + foo(n - 1); // Local foo, not static foo.
|
| - }
|
| - };
|
| - return foo(n); // Local foo, not static foo.
|
| - }
|
| - static void hep(Function f) {
|
| - f();
|
| - }
|
| - static testSelfReference3(int n) {
|
| - int i = 0;
|
| - var yup; // Not in same scope as yup below.
|
| - hep(yup() {
|
| - if (++i < n) hep(yup);
|
| - });
|
| - return i;
|
| - }
|
| - static testNesting(int n) {
|
| - var a = new List(n*n);
|
| - f0() {
|
| - for (int i = 0; i < n; i++) {
|
| - int vi = i;
|
| - f1() {
|
| - for (int j = 0; j < n; j++) {
|
| - int vj = j;
|
| - a[i*n + j] = () => vi*n + vj;
|
| - }
|
| - }
|
| - f1();
|
| - }
|
| - }
|
| - f0();
|
| - int result = 0;
|
| - for (int k = 0; k < n*n; k++) {
|
| - Expect.equals(k, a[k]());
|
| - result += a[k]();
|
| - }
|
| - return result;
|
| - }
|
| -
|
| - static var field5;
|
| - static var set_field5_func;
|
| - static testClosureCallStatement(int x) {
|
| - LocalFunctionTest.set_field5_func = (int n) { field5 = n * n; };
|
| - (LocalFunctionTest.set_field5_func)(x);
|
| - Expect.equals(x * x, LocalFunctionTest.field5);
|
| - return true;
|
| - }
|
| -
|
| - static testExceptions() {
|
| - var f = (int n) => n + 1;
|
| - Expect.equals(2, f(1));
|
| - Expect.equals(true, f is Function);
|
| - Expect.equals(true, f is Object);
|
| - Expect.equals(true, f.toString().startsWith("Closure"));
|
| - bool exception_caught = false;
|
| - try {
|
| - f(1, 2);
|
| - } catch (ClosureArgumentMismatchException e) {
|
| - exception_caught = true;
|
| - }
|
| - Expect.equals(true, exception_caught);
|
| - exception_caught = false;
|
| - try {
|
| - f();
|
| - } catch (ClosureArgumentMismatchException e) {
|
| - exception_caught = true;
|
| - }
|
| - Expect.equals(true, exception_caught);
|
| - exception_caught = false;
|
| - try {
|
| - f.xyz(0);
|
| - } catch (NoSuchMethodException e) {
|
| - exception_caught = true;
|
| - }
|
| - Expect.equals(true, exception_caught);
|
| -
|
| - // Overwrite closure value.
|
| - f = 3;
|
| - exception_caught = false;
|
| - try {
|
| - f(1);
|
| - } catch (ObjectNotClosureException e) {
|
| - exception_caught = true;
|
| - }
|
| - Expect.equals(true, exception_caught);
|
| -
|
| - // Do not expect any exceptions to be thrown.
|
| - var g = ([int n = 1]) => n + 1;
|
| - Expect.equals(2, g());
|
| - Expect.equals(3, g(2));
|
| - }
|
| -
|
| - static int doThis(int n, int f(int n)) {
|
| - return f(n);
|
| - }
|
| -
|
| - static testMain() {
|
| - Expect.equals(2*(3*2 + 2 + 1), f(2));
|
| - Expect.equals(10*10 + 10*9/2, h(10));
|
| - Expect.equals(90, h2(10));
|
| - Expect.equals(320, new LocalFunctionTest().method(10));
|
| - Expect.equals(145, new LocalFunctionTest().testExecute(10));
|
| - Expect.equals(5, testSelfReference1(5));
|
| - Expect.equals(5, testSelfReference3(5));
|
| - Expect.equals(24*25/2, testNesting(5));
|
| - Expect.equals(true, testClosureCallStatement(7));
|
| - Expect.equals(99, doThis(10, int _(n) => n * n - 1));
|
| - Expect.equals(99, doThis(10, int f(n) => n * n - 1));
|
| - Expect.equals(99, doThis(10, (n) => n * n - 1));
|
| - Expect.equals(99, doThis(10, f(n) => n * n - 1));
|
| - testExceptions();
|
| - }
|
| -}
|
| -
|
| -main() {
|
| - LocalFunctionTest.testMain();
|
| -}
|
|
|