mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 02:37:53 +00:00
40611dd611
TBR=kustermann@google.com BUG= Review URL: https://codereview.chromium.org/2454993003 .
143 lines
3.1 KiB
Dart
143 lines
3.1 KiB
Dart
// 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.
|
|
|
|
// Tests of conditional expressions and statements and negation.
|
|
|
|
import 'package:expect/expect.dart';
|
|
|
|
mkTrue() => true;
|
|
mkFalse() => false;
|
|
|
|
check(b) {
|
|
Expect.isTrue(b);
|
|
return b;
|
|
}
|
|
|
|
main() {
|
|
// Check that ?: gets the right answer.
|
|
Expect.isTrue((mkTrue() ? 0 : 1) == 0);
|
|
Expect.isTrue((mkFalse() ? 0 : 1) == 1);
|
|
// Check that it doesn't evaluate all subexpressions.
|
|
mkTrue() ? Expect.isTrue(true) : Expect.isTrue(false);
|
|
mkFalse() ? Expect.isTrue(false) : Expect.isTrue(true);
|
|
|
|
// Check that && and || get the right answers.
|
|
Expect.isTrue(mkTrue() && mkTrue());
|
|
Expect.isTrue(!(mkTrue() && mkFalse()));
|
|
Expect.isTrue(!(mkFalse() && mkTrue()));
|
|
Expect.isTrue(!(mkFalse() && mkFalse()));
|
|
Expect.isTrue(mkTrue() || mkTrue());
|
|
Expect.isTrue(mkTrue() || mkFalse());
|
|
Expect.isTrue(mkFalse() || mkTrue());
|
|
Expect.isTrue(!(mkFalse() || mkFalse()));
|
|
|
|
// Check that they don't evaluate both subexpressions.
|
|
mkTrue() && check(true);
|
|
mkFalse() && check(false);
|
|
mkTrue() || check(true);
|
|
mkFalse() || check(true);
|
|
|
|
// Check that if works.
|
|
if (mkTrue()) {
|
|
Expect.isTrue(true);
|
|
} else {
|
|
Expect.isTrue(false);
|
|
}
|
|
if (mkFalse()) {
|
|
Expect.isTrue(false);
|
|
} else {
|
|
Expect.isTrue(true);
|
|
}
|
|
if (!mkTrue()) {
|
|
Expect.isTrue(false);
|
|
} else {
|
|
Expect.isTrue(true);
|
|
}
|
|
if (!mkFalse()) {
|
|
Expect.isTrue(true);
|
|
} else {
|
|
Expect.isTrue(false);
|
|
}
|
|
|
|
// Check that ?:, &&, and || work for control flow.
|
|
if (mkTrue() ? mkTrue() : mkFalse()) {
|
|
Expect.isTrue(true);
|
|
} else {
|
|
Expect.isTrue(false);
|
|
}
|
|
if (mkTrue() ? mkFalse() : mkTrue()) {
|
|
Expect.isTrue(false);
|
|
} else {
|
|
Expect.isTrue(true);
|
|
}
|
|
if (mkFalse() ? mkTrue() : mkFalse()) {
|
|
Expect.isTrue(false);
|
|
} else {
|
|
Expect.isTrue(true);
|
|
}
|
|
if (mkFalse() ? mkFalse() : mkTrue()) {
|
|
Expect.isTrue(true);
|
|
} else {
|
|
Expect.isTrue(false);
|
|
}
|
|
if (mkTrue() && mkTrue()) {
|
|
Expect.isTrue(true);
|
|
} else {
|
|
Expect.isTrue(false);
|
|
}
|
|
if (mkTrue() && mkFalse()) {
|
|
Expect.isTrue(false);
|
|
} else {
|
|
Expect.isTrue(true);
|
|
}
|
|
if (mkFalse() && mkTrue()) {
|
|
Expect.isTrue(false);
|
|
} else {
|
|
Expect.isTrue(true);
|
|
}
|
|
if (mkFalse() && mkFalse()) {
|
|
Expect.isTrue(false);
|
|
} else {
|
|
Expect.isTrue(true);
|
|
}
|
|
if (mkTrue() || mkTrue()) {
|
|
Expect.isTrue(true);
|
|
} else {
|
|
Expect.isTrue(false);
|
|
}
|
|
if (mkTrue() || mkFalse()) {
|
|
Expect.isTrue(true);
|
|
} else {
|
|
Expect.isTrue(false);
|
|
}
|
|
if (mkFalse() || mkTrue()) {
|
|
Expect.isTrue(true);
|
|
} else {
|
|
Expect.isTrue(false);
|
|
}
|
|
if (mkFalse() || mkFalse()) {
|
|
Expect.isTrue(false);
|
|
} else {
|
|
Expect.isTrue(true);
|
|
}
|
|
|
|
// Test empty else branches.
|
|
if (mkTrue()) {
|
|
Expect.isTrue(true);
|
|
}
|
|
if (mkFalse()) {
|
|
Expect.isTrue(false);
|
|
}
|
|
|
|
var x = 0;
|
|
if (mkTrue()) {
|
|
x = 1;
|
|
}
|
|
Expect.isTrue(x == 1);
|
|
if (mkFalse()) {
|
|
x = 2;
|
|
}
|
|
Expect.isTrue(x == 1);
|
|
}
|