Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(405)

Unified Diff: tests/compiler/dart2js_extra/assert_with_message_test.dart

Issue 1342213003: Add optional message to assert in Dart2js - continued (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Add --assert-message flag Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tests/compiler/dart2js/type_inference7_test.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/compiler/dart2js_extra/assert_with_message_test.dart
diff --git a/tests/compiler/dart2js_extra/assert_with_message_test.dart b/tests/compiler/dart2js_extra/assert_with_message_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..58b7796cd0674c9c06a6699800ccdb428934bd5e
--- /dev/null
+++ b/tests/compiler/dart2js_extra/assert_with_message_test.dart
@@ -0,0 +1,109 @@
+// Copyright (c) 2015, 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.
+// SharedOptions=--assert-message
+
+import "package:expect/expect.dart";
+
+@AssumeDynamic() @NoInline()
+confuse(x) => x;
+
+
+testFalse(name, fault) {
+ try {
+ fault();
+ } catch (e) {
+ Expect.isTrue(e is AssertionError, '$name: is AssertionError');
+ Expect.isTrue('$e'.contains('Mumble'), '$name: <<$e>> contains "Mumble"');
+ return;
+ }
+ Expect.fail('Expected assert to throw');
+}
+
+test1() {
+ testFalse('constant false', () { assert(false, 'Mumble'); });
+}
+
+test2() {
+ testFalse('constant function', () { assert(() => false, 'Mumble'); });
+}
+
+test3() {
+ testFalse('variable false', () { assert(confuse(false), 'Mumble'); });
+}
+
+test4() {
+ testFalse('variable function',
+ () { assert(confuse(() => false), 'Mumble'); });
+}
+
+testTypeErrors() {
+ check(name, fault) {
+ try {
+ fault();
+ } catch (e) {
+ Expect.isTrue(e is TypeError,
+ 'name: <<$e>> (${e.runtimeType}) is TypeError');
+ return;
+ }
+ Expect.fail('Expected assert to throw');
+ }
+
+ check('constant type error', () { assert(null, 'Mumble'); });
+ check('variable type error', () { assert(confuse(null), 'Mumble'); });
+ check('function type error', () { assert(confuse(() => null), 'Mumble'); });
+}
+
+testMessageEffect1() {
+ var v = 1;
+ // Message is not evaluated on succeeding assert.
+ assert(confuse(true), '${v = 123}');
+ Expect.equals(1, v);
+}
+
+testMessageEffect2() {
+ var v = 1;
+ try {
+ // Message is evaluated to produce AssertionError argument on failing
+ // assert.
+ assert(confuse(false), '${v = 123}');
+ } catch (e) {
+ Expect.equals(123, v);
+ Expect.isTrue('$e'.contains('123'), '<<$e>> contains "123"');
+ return;
+ }
+ Expect.fail('Expected assert to throw');
+}
+
+testMessageEffect3() {
+ var v = 1;
+ try {
+ // Message is evaluated to produce AssertionError argument on failing
+ // assert.
+ assert(confuse(() => ++v > 100), '${++v}');
+ } catch (e) {
+ Expect.equals(3, v);
+ Expect.isTrue('$e'.contains('3'), '<<$e>> contains "3"');
+ return;
+ }
+ Expect.fail('Expected assert to throw');
+}
+
+bool get checkedMode {
+ bool b = false;
+ assert((b = true));
+ return b;
+}
+
+main() {
+ if (!checkedMode) return;
+
+ test1();
+ test2();
+ test3();
+ test4();
+ testTypeErrors();
+ testMessageEffect1();
+ testMessageEffect2();
+ testMessageEffect3();
+}
« no previous file with comments | « tests/compiler/dart2js/type_inference7_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698