// 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(); }