blob: 253e7ccbf281e4c3ab74dff78ce2151b8543db78 [file] [log] [blame]
// 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.
import "package:expect/expect.dart";
// Dart test program for testing throw expressions.
void test1() {
var x = 6;
try {
throw x = 10;
x = 0;
} catch(e) {
Expect.equals(10, e);
Expect.equals(10, x);
x = 15;
}
Expect.equals(15, x);
x = 100;
try {
throw x++;
x = 0;
} catch(e) {
Expect.equals(100, e);
Expect.equals(101, x);
x = 150;
}
Expect.equals(150, x);
}
void test2() {
var x = 6;
try {
throw x + 4;
} catch(e) {
Expect.equals(10, e);
Expect.equals(6, x);
x = 15;
}
Expect.equals(15, x);
}
foo(x, y) => throw "foo" "$x";
bar(x, y) => throw "foo" "${throw x}";
class Q {
var qqq;
f(x) { qqq = x; }
Q get nono => throw "nono";
}
void test3() {
try {
throw throw throw "up";
} catch(e) {
Expect.equals("up", e);
}
var x = 10;
try {
foo(x = 12, throw 7);
} catch(e) {
Expect.equals(7, e);
Expect.equals(12, x);
}
x = 10;
try {
foo(x++, 10);
} catch(e) {
Expect.equals("foo10", e);
Expect.equals(11, x);
}
x = 100;
try {
bar(++x, 10);
} catch(e) {
Expect.equals(101, e);
Expect.equals(101, x);
}
x = null;
try {
x = new Q();
x..f(11) ..qqq = throw 77 ..f(22);
} catch(e) {
Expect.equals(77, e);
Expect.equals(11, x.qqq);
}
}
void test4() {
var q = new Q();
Expect.throws(() => q.nono, (e) => e == "nono");
}
main() {
test1();
test2();
test3();
test4();
}