lacolaco
7/11/2014 - 1:21 PM

Dartのいろんなオブジェクトの真偽値としての振る舞い

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);
      }
    });
  });
}