| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | |
| 2 // for details. All rights reserved. Use of this source code is governed by a | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 | |
| 5 /** | |
| 6 * Test various forms of function literals. | |
| 7 */ | |
| 8 typedef int IntFunc(int); | |
| 9 | |
| 10 class FunctionLiteralsTest { | |
| 11 static void checkIntFunction(expected, int f(x), arg) { | |
| 12 Expect.equals(expected, f(arg)); | |
| 13 } | |
| 14 | |
| 15 static void checkIntFuncFunction(expected, IntFunc f(x), arg) { | |
| 16 Expect.equals(expected, f(arg)(arg)); | |
| 17 } | |
| 18 | |
| 19 int func1(int x) => x; | |
| 20 | |
| 21 int func2(x) => x; | |
| 22 | |
| 23 int func3(int x) { | |
| 24 return x; | |
| 25 } | |
| 26 | |
| 27 int func4(x) { | |
| 28 return x; | |
| 29 } | |
| 30 | |
| 31 FunctionLiteralsTest() {} | |
| 32 | |
| 33 static void testMain() { | |
| 34 var test = new FunctionLiteralsTest(); | |
| 35 test.testArrow(); | |
| 36 test.testArrowArrow(); | |
| 37 test.testArrowBlock(); | |
| 38 test.testBlock(); | |
| 39 test.testBlockArrow(); | |
| 40 test.testBlockBlock(); | |
| 41 test.testFunctionRef(); | |
| 42 } | |
| 43 | |
| 44 void testArrow() { | |
| 45 checkIntFunction(42, (x) => x, 42); | |
| 46 checkIntFunction(42, _(x) => x, 42); | |
| 47 checkIntFunction(42, int f(x) => x, 42); | |
| 48 checkIntFunction(42, (int x) => x, 42); | |
| 49 checkIntFunction(42, _(int x) => x, 42); | |
| 50 checkIntFunction(42, int f(int x) => x, 42); | |
| 51 } | |
| 52 | |
| 53 void testArrowArrow() { | |
| 54 checkIntFuncFunction(84, (x) => (y) => x+y, 42); | |
| 55 checkIntFuncFunction(84, _(x) => (y) => x+y, 42); | |
| 56 checkIntFuncFunction(84, IntFunc f(x) => (y) => x+y, 42); | |
| 57 checkIntFuncFunction(84, (int x) => (y) => x+y, 42); | |
| 58 checkIntFuncFunction(84, _(int x) => (y) => x+y, 42); | |
| 59 checkIntFuncFunction(84, IntFunc f(int x) => (y) => x+y, 42); | |
| 60 checkIntFuncFunction(84, (x) => f(y) => x+y, 42); | |
| 61 checkIntFuncFunction(84, _(x) => f(y) => x+y, 42); | |
| 62 checkIntFuncFunction(84, IntFunc f(x) => f(y) => x+y, 42); | |
| 63 checkIntFuncFunction(84, (int x) => f(y) => x+y, 42); | |
| 64 checkIntFuncFunction(84, _(int x) => f(y) => x+y, 42); | |
| 65 checkIntFuncFunction(84, IntFunc f(int x) => f(y) => x+y, 42); | |
| 66 checkIntFuncFunction(84, (x) => int f(y) => x+y, 42); | |
| 67 checkIntFuncFunction(84, _(x) => int f(y) => x+y, 42); | |
| 68 checkIntFuncFunction(84, IntFunc f(x) => int f(y) => x+y, 42); | |
| 69 checkIntFuncFunction(84, (int x) => int f(y) => x+y, 42); | |
| 70 checkIntFuncFunction(84, _(int x) => int f(y) => x+y, 42); | |
| 71 checkIntFuncFunction(84, IntFunc f(int x) => int f(y) => x+y, 42); | |
| 72 checkIntFuncFunction(84, (int x) => int f(int y) => x+y, 42); | |
| 73 checkIntFuncFunction(84, _(int x) => int f(int y) => x+y, 42); | |
| 74 checkIntFuncFunction(84, IntFunc f(int x) => int f(int y) => x+y, 42); | |
| 75 } | |
| 76 | |
| 77 void testArrowBlock() { | |
| 78 checkIntFuncFunction(84, (x) => (y) { return x+y; }, 42); | |
| 79 checkIntFuncFunction(84, _(x) => (y) { return x+y; }, 42); | |
| 80 checkIntFuncFunction(84, IntFunc f(x) => (y) { return x+y; }, 42); | |
| 81 checkIntFuncFunction(84, (int x) => (y) { return x+y; }, 42); | |
| 82 checkIntFuncFunction(84, _(int x) => (y) { return x+y; }, 42); | |
| 83 checkIntFuncFunction(84, IntFunc f(int x) => (y) { return x+y; }, 42); | |
| 84 checkIntFuncFunction(84, (x) => f(y) { return x+y; }, 42); | |
| 85 checkIntFuncFunction(84, _(x) => f(y) { return x+y; }, 42); | |
| 86 checkIntFuncFunction(84, IntFunc f(x) => f(y) { return x+y; }, 42); | |
| 87 checkIntFuncFunction(84, (int x) => f(y) { return x+y; }, 42); | |
| 88 checkIntFuncFunction(84, _(int x) => f(y) { return x+y; }, 42); | |
| 89 checkIntFuncFunction(84, IntFunc f(int x) => f(y) { return x+y; }, 42); | |
| 90 checkIntFuncFunction(84, (x) => int f(y) { return x+y; }, 42); | |
| 91 checkIntFuncFunction(84, _(x) => int f(y) { return x+y; }, 42); | |
| 92 checkIntFuncFunction(84, IntFunc f(x) => int f(y) { return x+y; }, 42); | |
| 93 checkIntFuncFunction(84, (int x) => int f(y) { return x+y; }, 42); | |
| 94 checkIntFuncFunction(84, _(int x) => int f(y) { return x+y; }, 42); | |
| 95 checkIntFuncFunction(84, IntFunc f(int x) => int f(y) { return x+y; }, 42); | |
| 96 } | |
| 97 | |
| 98 void testBlock() { | |
| 99 checkIntFunction(42, (x) { return x; }, 42); | |
| 100 checkIntFunction(42, _(x) { return x; }, 42); | |
| 101 checkIntFunction(42, int f(x) { return x; }, 42); | |
| 102 checkIntFunction(42, (int x) { return x; }, 42); | |
| 103 checkIntFunction(42, _(int x) { return x; }, 42); | |
| 104 checkIntFunction(42, int f(int x) { return x; }, 42); | |
| 105 } | |
| 106 | |
| 107 void testBlockArrow() { | |
| 108 checkIntFuncFunction(84, (x) { return (y) => x+y; }, 42); | |
| 109 checkIntFuncFunction(84, _(x) { return (y) => x+y; }, 42); | |
| 110 checkIntFuncFunction(84, IntFunc f(x) { return (y) => x+y; }, 42); | |
| 111 checkIntFuncFunction(84, (int x) { return (y) => x+y; }, 42); | |
| 112 checkIntFuncFunction(84, _(int x) { return (y) => x+y; }, 42); | |
| 113 checkIntFuncFunction(84, IntFunc f(int x) { return (y) => x+y; }, 42); | |
| 114 checkIntFuncFunction(84, (x) { return f(y) => x+y; }, 42); | |
| 115 checkIntFuncFunction(84, _(x) { return f(y) => x+y; }, 42); | |
| 116 checkIntFuncFunction(84, IntFunc f(x) { return f(y) => x+y; }, 42); | |
| 117 checkIntFuncFunction(84, (int x) { return f(y) => x+y; }, 42); | |
| 118 checkIntFuncFunction(84, _(int x) { return f(y) => x+y; }, 42); | |
| 119 checkIntFuncFunction(84, IntFunc f(int x) { return f(y) => x+y; }, 42); | |
| 120 checkIntFuncFunction(84, (x) { return int f(y) => x+y; }, 42); | |
| 121 checkIntFuncFunction(84, _(x) { return int f(y) => x+y; }, 42); | |
| 122 checkIntFuncFunction(84, IntFunc f(x) { return int f(y) => x+y; }, 42); | |
| 123 checkIntFuncFunction(84, (int x) { return int f(y) => x+y; }, 42); | |
| 124 checkIntFuncFunction(84, _(int x) { return int f(y) => x+y; }, 42); | |
| 125 checkIntFuncFunction(84, IntFunc f(int x) { return int f(y) => x+y; }, 42); | |
| 126 } | |
| 127 | |
| 128 void testBlockBlock() { | |
| 129 checkIntFuncFunction(84, (x) { return (y) { return x+y; }; }, 42); | |
| 130 checkIntFuncFunction(84, _(x) { return (y) { return x+y; }; }, 42); | |
| 131 checkIntFuncFunction(84, IntFunc f(x) { return (y) { return x+y; }; }, 42); | |
| 132 checkIntFuncFunction(84, (int x) { return (y) { return x+y; }; }, 42); | |
| 133 checkIntFuncFunction(84, _(int x) { return (y) { return x+y; }; }, 42); | |
| 134 checkIntFuncFunction(84, IntFunc f(int x) { return (y) { return x+y; }; }, 4
2); | |
| 135 checkIntFuncFunction(84, (x) { return f(y) { return x+y; }; }, 42); | |
| 136 checkIntFuncFunction(84, _(x) { return f(y) { return x+y; }; }, 42); | |
| 137 checkIntFuncFunction(84, IntFunc f(x) { return f(y) { return x+y; }; }, 42); | |
| 138 checkIntFuncFunction(84, (int x) { return f(y) { return x+y; }; }, 42); | |
| 139 checkIntFuncFunction(84, _(int x) { return f(y) { return x+y; }; }, 42); | |
| 140 checkIntFuncFunction(84, IntFunc f(int x) { return f(y) { return x+y; }; },
42); | |
| 141 checkIntFuncFunction(84, (x) { return int f(y) { return x+y; }; }, 42); | |
| 142 checkIntFuncFunction(84, _(x) { return int f(y) { return x+y; }; }, 42); | |
| 143 checkIntFuncFunction(84, IntFunc f(x) { return int f(y) { return x+y; }; },
42); | |
| 144 checkIntFuncFunction(84, (int x) { return int f(y) { return x+y; }; }, 42); | |
| 145 checkIntFuncFunction(84, _(int x) { return int f(y) { return x+y; }; }, 42); | |
| 146 checkIntFuncFunction(84, IntFunc f(int x) { return int f(y) { return x+y; };
}, 42); | |
| 147 } | |
| 148 | |
| 149 void testFunctionRef() { | |
| 150 checkIntFunction(42, func1, 42); | |
| 151 checkIntFunction(42, func2, 42); | |
| 152 checkIntFunction(42, func3, 42); | |
| 153 checkIntFunction(42, func4, 42); | |
| 154 } | |
| 155 } | |
| 156 | |
| 157 | |
| 158 main() { | |
| 159 FunctionLiteralsTest.testMain(); | |
| 160 } | |
| OLD | NEW |