| // Copyright (c) 2019, 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. |
| |
| // @dart = 2.7 |
| |
| // dart2jsOptions=--omit-implicit-checks |
| |
| // Note: --omit-implicit-checks causes Expect.isNull to misbehave, so we use |
| // Expect.equals(null, ...) instead. |
| |
| import 'package:expect/expect.dart'; |
| |
| void main() { |
| conditionalTest(); |
| orTest(); |
| andTest(); |
| ifTest(); |
| forTest(); |
| whileTest(); |
| doTest(); |
| notTest(); |
| ifElementTest(); |
| forElementTest(); |
| } |
| |
| void conditionalTest() { |
| bool x = null; |
| Expect.isFalse(x ? true : false); |
| } |
| |
| void orTest() { |
| bool x = null; |
| Expect.equals(null, x || x); |
| Expect.isFalse(x || false); |
| Expect.isTrue(x || true); |
| Expect.equals(null, false || x); |
| Expect.isTrue(true || x); |
| } |
| |
| void andTest() { |
| bool x = null; |
| Expect.isFalse(x && x); |
| Expect.isFalse(x && false); |
| Expect.isFalse(x && true); |
| Expect.isFalse(false && x); |
| Expect.equals(null, true && x); |
| } |
| |
| void ifTest() { |
| bool x = null; |
| Expect.isFalse(() { |
| if (x) { |
| return true; |
| } else { |
| return false; |
| } |
| }()); |
| } |
| |
| void forTest() { |
| bool x = null; |
| Expect.isFalse(() { |
| for (; x;) { |
| return true; |
| } |
| return false; |
| }()); |
| } |
| |
| void whileTest() { |
| bool x = null; |
| Expect.isFalse(() { |
| while (x) { |
| return true; |
| } |
| return false; |
| }()); |
| } |
| |
| void doTest() { |
| bool x = null; |
| Expect.equals(1, () { |
| int n = 0; |
| do { |
| n++; |
| } while (x); |
| return n; |
| }()); |
| } |
| |
| void notTest() { |
| bool x = null; |
| Expect.isTrue(!x); |
| } |
| |
| void ifElementTest() { |
| bool x = null; |
| Expect.listEquals([], [if (x) 1]); |
| } |
| |
| void forElementTest() { |
| bool x = null; |
| Expect.listEquals([], [for (var i = 0; x; i++) i]); |
| } |