dart-sdk/tests/language/branches_test.dart
Bob Nystrom 14011f47e3 Resurrect deleted language tests.
They're back from the grave, and ready to party!

Change-Id: I088134a9be7ecabf1fbf751c015a656a15cabff9
Reviewed-on: https://dart-review.googlesource.com/12821
Commit-Queue: Bob Nystrom <rnystrom@google.com>
Reviewed-by: William Hesse <whesse@google.com>
2017-10-11 17:47:11 +00:00

160 lines
5.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.
// Dart test for branches. Make sure that shortcuts work, even if they have
// to jump over several expressions.
import "package:expect/expect.dart";
class BranchesTest {
static bool f() {
Expect.equals("Never reached", 0);
return true;
}
static void testMain() {
int checkPointCounter = 1;
int checkPoint1 = 0;
int checkPoint2 = 0;
int checkPoint3 = 0;
int checkPoint4 = 0;
int checkPoint5 = 0;
int checkPoint6 = 0;
int i = 0;
for (int i = 0; i < 2; i++) {
if (i == 0) {
checkPoint1 += checkPointCounter++;
if (true || // Test branch-if-true.
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f() ||
f()) {
checkPoint2 += checkPointCounter++;
}
} else {
// Test branch (jumping over the else branch).
checkPoint3 += checkPointCounter++;
if (false) {
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
checkPoint4 = checkPointCounter++; // Never reached.
}
}
checkPoint5 += checkPointCounter++;
}
checkPoint6 += checkPointCounter++;
Expect.equals(1, checkPoint1);
Expect.equals(2, checkPoint2);
Expect.equals(4, checkPoint3);
Expect.equals(0, checkPoint4);
Expect.equals(8, checkPoint5);
Expect.equals(6, checkPoint6);
}
}
main() {
BranchesTest.testMain();
}