// 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. // Test switch statement using labels. import "package:expect/expect.dart"; class Switcher { Switcher() {} say1(sound) { var x = 0; switch (sound) { MOO: case "moo": x = 100; break; case "woof": x = 200; continue MOO; default: x = 300; break; } return x; } say2(sound) { var x = 0; switch (sound) { WOOF: case "woof": x = 200; break; case "moo": x = 100; continue WOOF; default: x = 300; break; } return x; } // forward label to outer switch say3(animal, sound) { var x = 0; switch (animal) { case "cow": switch (sound) { case "moo": x = 100; break; case "muh": x = 200; break; default: continue NIX_UNDERSTAND; } break; case "dog": if (sound == "woof") { x = 300; } else { continue NIX_UNDERSTAND; } break; NIX_UNDERSTAND: case "unicorn": x = 400; break; default: x = 500; break; } return x; } } class SwitchLabelTest { static testMain() { Switcher s = new Switcher(); Expect.equals(100, s.say1("moo")); Expect.equals(100, s.say1("woof")); Expect.equals(300, s.say1("cockadoodledoo")); Expect.equals(200, s.say2("moo")); Expect.equals(200, s.say2("woof")); Expect.equals(300, s.say2("")); // Dead unicorn says nothing. Expect.equals(100, s.say3("cow", "moo")); Expect.equals(200, s.say3("cow", "muh")); Expect.equals(400, s.say3("cow", "boeh")); // Don't ask. Expect.equals(300, s.say3("dog", "woof")); Expect.equals(400, s.say3("dog", "boj")); // Ĉu vi parolas Esperanton? Expect.equals(400, s.say3("unicorn", "")); // Still dead. Expect.equals(500, s.say3("angry bird", "whoooo")); } } main() { SwitchLabelTest.testMain(); }