| Index: tests/kernel/unsorted/loop_test.dart
|
| diff --git a/tests/kernel/unsorted/loop_test.dart b/tests/kernel/unsorted/loop_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..bf487408d5813a05a7b6d187f6d620c14b9590ce
|
| --- /dev/null
|
| +++ b/tests/kernel/unsorted/loop_test.dart
|
| @@ -0,0 +1,91 @@
|
| +// 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.
|
| +
|
| +// Tests of loops.
|
| +
|
| +import 'expect.dart';
|
| +
|
| +fact(n) {
|
| + var f = 1;
|
| + while (n > 0) {
|
| + f *= n;
|
| + --n;
|
| + }
|
| + return f;
|
| +}
|
| +
|
| +fib(n) {
|
| + if (n == 0) return 0;
|
| + var previous = 0, current = 1;
|
| + while (n > 1) {
|
| + var temp = current;
|
| + current += previous;
|
| + previous = temp;
|
| + --n;
|
| + }
|
| + return current;
|
| +}
|
| +
|
| +mkTrue() => true;
|
| +mkFalse() => false;
|
| +
|
| +check(b) {
|
| + Expect.isTrue(b);
|
| + return b;
|
| +}
|
| +
|
| +test0() {
|
| + while (mkTrue()) {
|
| + Expect.isTrue(true);
|
| + return;
|
| + }
|
| + Expect.isTrue(false);
|
| +}
|
| +
|
| +test1() {
|
| + while (mkFalse()) {
|
| + Expect.isTrue(false);
|
| + }
|
| + Expect.isTrue(true);
|
| +}
|
| +
|
| +test2() {
|
| + do {
|
| + Expect.isTrue(true);
|
| + } while (mkFalse());
|
| + Expect.isTrue(true);
|
| +}
|
| +
|
| +test3() {
|
| + do {
|
| + Expect.isTrue(true);
|
| + return;
|
| + } while (check(false));
|
| + Expect.isTrue(false);
|
| +}
|
| +
|
| +main() {
|
| + Expect.isTrue(fact(0) == 1);
|
| + Expect.isTrue(fact(1) == 1);
|
| + Expect.isTrue(fact(5) == 120);
|
| + Expect.isTrue(fact(42) ==
|
| + 1405006117752879898543142606244511569936384000000000);
|
| + Expect.isTrue(fact(3.14159) == 1.0874982674320444);
|
| +
|
| + Expect.isTrue(fib(0) == 0);
|
| + Expect.isTrue(fib(1) == 1);
|
| + Expect.isTrue(fib(2) == 1);
|
| + Expect.isTrue(fib(3) == 2);
|
| + Expect.isTrue(fib(4) == 3);
|
| + Expect.isTrue(fib(5) == 5);
|
| + Expect.isTrue(fib(6) == 8);
|
| + Expect.isTrue(fib(7) == 13);
|
| + Expect.isTrue(fib(42) == 267914296);
|
| + Expect.isTrue(fib(3.14159) == 3);
|
| +
|
| + test0();
|
| + test1();
|
| + test2();
|
| + test3();
|
| +}
|
|
|