82b78916fd
Change-Id: If31c487e3ebe2c1ae847aff7c8994580b8b6f2f6 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/309660 Reviewed-by: Alexander Thomas <athom@google.com> Commit-Queue: Alexander Thomas <athom@google.com>
148 lines
2.7 KiB
Dart
148 lines
2.7 KiB
Dart
// Copyright (c) 2012, 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.
|
|
|
|
// VMOptions=
|
|
// VMOptions=--force-switch-dispatch-type=0
|
|
// VMOptions=--force-switch-dispatch-type=1
|
|
// VMOptions=--force-switch-dispatch-type=2
|
|
|
|
import "package:expect/expect.dart";
|
|
|
|
class Switcher {
|
|
Switcher() {}
|
|
|
|
test1(val) {
|
|
var x = 0;
|
|
switch (val) {
|
|
case 1:
|
|
x = 100;
|
|
break;
|
|
case 2:
|
|
case 3:
|
|
x = 200;
|
|
break;
|
|
case 4:
|
|
default:
|
|
{
|
|
x = 400;
|
|
break;
|
|
}
|
|
}
|
|
return x;
|
|
}
|
|
|
|
test2(val) {
|
|
switch (val) {
|
|
case 1:
|
|
return 200;
|
|
default:
|
|
return 400;
|
|
}
|
|
}
|
|
}
|
|
|
|
class SwitchTest {
|
|
static testMain() {
|
|
Switcher s = new Switcher();
|
|
Expect.equals(100, s.test1(1));
|
|
Expect.equals(200, s.test1(2));
|
|
Expect.equals(200, s.test1(3));
|
|
Expect.equals(400, s.test1(4));
|
|
Expect.equals(400, s.test1(5));
|
|
|
|
Expect.equals(200, s.test2(1));
|
|
Expect.equals(400, s.test2(2));
|
|
}
|
|
}
|
|
|
|
class Enum {
|
|
static const Enum e1 = const Enum(1);
|
|
static const Enum e2 = const Enum(2);
|
|
static const Enum e3 = const Enum(3);
|
|
final int id;
|
|
const Enum(this.id);
|
|
}
|
|
|
|
void testSwitchEnum(Enum? input, int expect) {
|
|
int? result = null;
|
|
switch (input) {
|
|
case Enum.e1:
|
|
result = 10;
|
|
break;
|
|
case Enum.e2:
|
|
result = 20;
|
|
break;
|
|
case Enum.e3:
|
|
result = 30;
|
|
break;
|
|
default:
|
|
result = 40;
|
|
}
|
|
Expect.equals(expect, result);
|
|
}
|
|
|
|
void testSwitchBool(bool input, int expect) {
|
|
int? result = null;
|
|
switch (input) {
|
|
case true:
|
|
result = 12;
|
|
break;
|
|
case false:
|
|
result = 22;
|
|
}
|
|
Expect.equals(expect, result);
|
|
}
|
|
|
|
void testSwitchString(String? input, int? expect) {
|
|
int? result = null;
|
|
switch (input) {
|
|
case 'one':
|
|
result = 1;
|
|
break;
|
|
case 'two':
|
|
result = 2;
|
|
break;
|
|
}
|
|
Expect.equals(expect, result);
|
|
}
|
|
|
|
switchConstString() {
|
|
const c = 'a';
|
|
switch (c) {
|
|
case 'a':
|
|
return 'aa';
|
|
case 'b':
|
|
return 'bb';
|
|
case 'c':
|
|
return 'cc';
|
|
case 'd':
|
|
return 'dd';
|
|
case 'e':
|
|
return 'ee';
|
|
case 'f':
|
|
return 'ff';
|
|
}
|
|
}
|
|
|
|
main() {
|
|
SwitchTest.testMain();
|
|
|
|
testSwitchEnum(Enum.e1, 10);
|
|
testSwitchEnum(Enum.e2, 20);
|
|
testSwitchEnum(Enum.e3, 30);
|
|
testSwitchEnum(null, 40);
|
|
|
|
testSwitchBool(true, 12);
|
|
testSwitchBool(false, 22);
|
|
|
|
testSwitchString(null, null);
|
|
testSwitchString('one', 1);
|
|
testSwitchString('two', 2);
|
|
testSwitchString('three', null);
|
|
|
|
Expect.equals('aa', switchConstString());
|
|
}
|