Dartのいろんなオブジェクトの真偽値としての振る舞い
import 'package:unittest/unittest.dart';
main() {
/// NoSuchMethodError: method not found 'get:obj'
test("undefined", () {
if (obj) {
expect(true, isFalse);
} else {
expect(false, isFalse);
}
});
/// Passed : null => false
test("null", () {
var obj;
if (obj) {
expect(true, isFalse);
} else {
expect(false, isFalse);
}
});
group("number", () {
/// Passed : 0 => false
test("0", () {
if (0) {
expect(true, isFalse);
} else {
expect(false, isFalse);
}
});
/// Passed : -0 => false
test("-0", () {
if (-0) {
expect(true, isFalse);
} else {
expect(false, isFalse);
}
});
/// Failed : -1 => false
test("-1", () {
if (-1) {
expect(true, isTrue);
} else {
expect(false, isTrue);
}
});
/// Failed : 1 => false
test("1", () {
if (1) {
expect(true, isTrue);
} else {
expect(false, isTrue);
}
});
/// Passed : NaN => false
test("NaN", () {
if (double.NAN) {
expect(true, isFalse);
} else {
expect(false, isFalse);
}
});
});
group("string", () {
/// Passed : "" => false
test("empty", () {
if ("") {
expect(true, isFalse);
} else {
expect(false, isFalse);
}
});
/// Failed : "true" => false
test("true string", () {
if ("true") {
expect(true, isTrue);
} else {
expect(false, isTrue);
}
});
});
group("object", () {
/// Passed : {} => false
test("empty object", () {
if ({
}) {
expect(true, isFalse);
} else {
expect(false, isFalse);
}
});
/// Failed : object => false
test("not empty object", () {
if ({
"name" : "laco",
"flag" : false
}) {
expect(true, isTrue);
} else {
expect(false, isTrue);
}
});
});
}