| // Copyright (c) 2016, 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"; | |
| main() { | |
| var assertsEnabled = false; | |
| assert((assertsEnabled = true)); | |
| if (!assertsEnabled) return; | |
| // TODO(rnystrom): Test cases where the first argument to assert() is a | |
| // function. | |
| testAssertFails(); | |
| testAssertDoesNotFail(); | |
| testNullMessage(); | |
| testDoesNotEvaluateMessageIfAssertSucceeds(); | |
| testMessageExpressionThatThrows(); | |
| testCallsToStringOnMessageLazily(); | |
| } | |
| /// A class with a custom toString() that tracks when it is called. | |
| class ToString { | |
| bool calledToString = false; | |
| String toString() { | |
| calledToString = true; | |
| return "toString!"; | |
| } | |
| } | |
| testAssertFails() { | |
| try { | |
| assert(false, "Oops"); | |
| Expect.fail("Assert should throw."); | |
| } catch (e) { | |
| Expect.isTrue(e.toString().contains("Oops")); | |
| } | |
| } | |
| testAssertDoesNotFail() { | |
| try { | |
| assert(true, "Oops"); | |
| } catch (e) { | |
| Expect.fail("Assert should not throw."); | |
| } | |
| } | |
| testNullMessage() { | |
| try { | |
| assert(false, null); | |
| Expect.fail("Assert should throw."); | |
| } catch (e) { | |
| Expect.isTrue(e.toString().contains("is not true")); | |
| } | |
| } | |
| testDoesNotEvaluateMessageIfAssertSucceeds() { | |
| try { | |
| var evaluated = false; | |
| assert(true, evaluated = true); | |
| Expect.isFalse(evaluated); | |
| } catch (e) { | |
| Expect.fail("Assert should not throw."); | |
| } | |
| } | |
| testMessageExpressionThatThrows() { | |
| try { | |
| assert(false, throw "dang"); | |
| Expect.fail("Should throw"); | |
| } catch (e) { | |
| Expect.equals(e, "dang"); | |
| } | |
| } | |
| testCallsToStringOnMessageLazily() { | |
| var toString = new ToString(); | |
| try { | |
| assert(false, toString); | |
| Expect.fail("Assert should throw."); | |
| } catch (e) { | |
| Expect.isFalse(toString.calledToString); | |
| Expect.type<AssertionError>(e); | |
| e as AssertionError; | |
| Expect.identical(toString, e.message); | |
| Expect.isFalse(toString.calledToString); | |
| } | |
| } |