// Copyright (c) 2011, 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 test program for testing comparison operators.

class Helper {
  static bool STRICT_EQ(a, b) {
    return identical(a, b);
  }

  static bool STRICT_NE(a, b) {
    return !identical(a, b);
  }

  static bool EQ(a, b) {
    return a == b;
  }

  static bool NE(a, b) {
    return a != b;
  }

  static bool LT(a, b) {
    return a < b;
  }

  static bool LE(a,b) {
    return a <= b;
  }

  static bool GT(a, b) {
    return a > b;
  }

  static bool GE(a, b) {
    return a >= b;
  }
}

class A {
  var b;

  A(x) : b = x { }
}

class ComparisonTest {
  static testMain() {
    var a = new A(0);
    var b = new A(1);
    Expect.isTrue(Helper.STRICT_EQ(a, a));
    Expect.isFalse(Helper.STRICT_EQ(a, b));
    Expect.isFalse(Helper.STRICT_EQ(b, a));
    Expect.isTrue(Helper.STRICT_EQ(b, b));

    Expect.isFalse(Helper.STRICT_NE(a, a));
    Expect.isTrue(Helper.STRICT_NE(a, b));
    Expect.isTrue(Helper.STRICT_NE(b, a));
    Expect.isFalse(Helper.STRICT_NE(b, b));

    Expect.isTrue(Helper.STRICT_EQ(false, false));
    Expect.isFalse(Helper.STRICT_EQ(false, true));
    Expect.isFalse(Helper.STRICT_EQ(true, false));
    Expect.isTrue(Helper.STRICT_EQ(true, true));

    Expect.isFalse(Helper.STRICT_NE(false, false));
    Expect.isTrue(Helper.STRICT_NE(false, true));
    Expect.isTrue(Helper.STRICT_NE(true, false));
    Expect.isFalse(Helper.STRICT_NE(true, true));

    Expect.isTrue(Helper.STRICT_EQ(false, false));
    Expect.isFalse(Helper.STRICT_EQ(false, true));
    Expect.isFalse(Helper.STRICT_EQ(true, false));
    Expect.isTrue(Helper.STRICT_EQ(true, true));

    Expect.isFalse(Helper.STRICT_NE(false, false));
    Expect.isTrue(Helper.STRICT_NE(false, true));
    Expect.isTrue(Helper.STRICT_NE(true, false));
    Expect.isFalse(Helper.STRICT_NE(true, true));

    Expect.isTrue(Helper.EQ(false, false));
    Expect.isFalse(Helper.EQ(false, true));
    Expect.isFalse(Helper.EQ(true, false));
    Expect.isTrue(Helper.EQ(true, true));

    Expect.isFalse(Helper.NE(false, false));
    Expect.isTrue(Helper.NE(false, true));
    Expect.isTrue(Helper.NE(true, false));
    Expect.isFalse(Helper.NE(true, true));

    Expect.isTrue(Helper.STRICT_EQ(-1, -1));
    Expect.isTrue(Helper.STRICT_EQ(0, 0));
    Expect.isTrue(Helper.STRICT_EQ(1, 1));
    Expect.isFalse(Helper.STRICT_EQ(-1, 0));
    Expect.isFalse(Helper.STRICT_EQ(-1, 1));
    Expect.isFalse(Helper.STRICT_EQ(0, 1));

    Expect.isFalse(Helper.STRICT_NE(-1, -1));
    Expect.isFalse(Helper.STRICT_NE(0, 0));
    Expect.isFalse(Helper.STRICT_NE(1, 1));
    Expect.isTrue(Helper.STRICT_NE(-1, 0));
    Expect.isTrue(Helper.STRICT_NE(-1, 1));
    Expect.isTrue(Helper.STRICT_NE(0, 1));

    Expect.isTrue(Helper.EQ(-1, -1));
    Expect.isTrue(Helper.EQ(0, 0));
    Expect.isTrue(Helper.EQ(1, 1));
    Expect.isFalse(Helper.EQ(-1, 0));
    Expect.isFalse(Helper.EQ(-1, 1));
    Expect.isFalse(Helper.EQ(0, 1));

    Expect.isFalse(Helper.NE(-1, -1));
    Expect.isFalse(Helper.NE(0, 0));
    Expect.isFalse(Helper.NE(1, 1));
    Expect.isTrue(Helper.NE(-1, 0));
    Expect.isTrue(Helper.NE(-1, 1));
    Expect.isTrue(Helper.NE(0, 1));

    Expect.isFalse(Helper.LT(-1, -1));
    Expect.isFalse(Helper.LT(0, 0));
    Expect.isFalse(Helper.LT(1, 1));
    Expect.isTrue(Helper.LT(-1, 0));
    Expect.isTrue(Helper.LT(-1, 1));
    Expect.isTrue(Helper.LT(0, 1));
    Expect.isFalse(Helper.LT(0, -1));
    Expect.isFalse(Helper.LT(1, -1));
    Expect.isFalse(Helper.LT(1, 0));

    Expect.isTrue(Helper.LE(-1, -1));
    Expect.isTrue(Helper.LE(0, 0));
    Expect.isTrue(Helper.LE(1, 1));
    Expect.isTrue(Helper.LE(-1, 0));
    Expect.isTrue(Helper.LE(-1, 1));
    Expect.isTrue(Helper.LE(0, 1));
    Expect.isFalse(Helper.LE(0, -1));
    Expect.isFalse(Helper.LE(1, -1));
    Expect.isFalse(Helper.LE(1, 0));

    Expect.isFalse(Helper.GT(-1, -1));
    Expect.isFalse(Helper.GT(0, 0));
    Expect.isFalse(Helper.GT(1, 1));
    Expect.isFalse(Helper.GT(-1, 0));
    Expect.isFalse(Helper.GT(-1, 1));
    Expect.isFalse(Helper.GT(0, 1));
    Expect.isTrue(Helper.GT(0, -1));
    Expect.isTrue(Helper.GT(1, -1));
    Expect.isTrue(Helper.GT(1, 0));

    Expect.isTrue(Helper.GE(-1, -1));
    Expect.isTrue(Helper.GE(0, 0));
    Expect.isTrue(Helper.GE(1, 1));
    Expect.isFalse(Helper.GE(-1, 0));
    Expect.isFalse(Helper.GE(-1, 1));
    Expect.isFalse(Helper.GE(0, 1));
    Expect.isTrue(Helper.GE(0, -1));
    Expect.isTrue(Helper.GE(1, -1));
    Expect.isTrue(Helper.GE(1, 0));

    Expect.isTrue(Helper.STRICT_EQ(-1.0, -1.0));
    Expect.isTrue(Helper.STRICT_EQ(0.0, 0.0));
    Expect.isTrue(Helper.STRICT_EQ(1.0, 1.0));
    Expect.isFalse(Helper.STRICT_EQ(-1.0, 0.0));
    Expect.isFalse(Helper.STRICT_EQ(-1.0, 1.0));
    Expect.isFalse(Helper.STRICT_EQ(0.0, 1.0));

    Expect.isFalse(Helper.STRICT_NE(-1.0, -1.0));
    Expect.isFalse(Helper.STRICT_NE(0.0, 0.0));
    Expect.isFalse(Helper.STRICT_NE(1.0, 1.0));
    Expect.isTrue(Helper.STRICT_NE(-1.0, 0.0));
    Expect.isTrue(Helper.STRICT_NE(-1.0, 1.0));
    Expect.isTrue(Helper.STRICT_NE(0.0, 1.0));

    Expect.isTrue(Helper.EQ(-1.0, -1.0));
    Expect.isTrue(Helper.EQ(0.0, 0.0));
    Expect.isTrue(Helper.EQ(1.0, 1.0));
    Expect.isFalse(Helper.EQ(-1.0, 0.0));
    Expect.isFalse(Helper.EQ(-1.0, 1.0));
    Expect.isFalse(Helper.EQ(0.0, 1.0));

    Expect.isFalse(Helper.NE(-1.0, -1.0));
    Expect.isFalse(Helper.NE(0.0, 0.0));
    Expect.isFalse(Helper.NE(1.0, 1.0));
    Expect.isTrue(Helper.NE(-1.0, 0.0));
    Expect.isTrue(Helper.NE(-1.0, 1.0));
    Expect.isTrue(Helper.NE(0.0, 1.0));

    Expect.isFalse(Helper.LT(-1.0, -1.0));
    Expect.isFalse(Helper.LT(0.0, 0.0));
    Expect.isFalse(Helper.LT(1.0, 1.0));
    Expect.isTrue(Helper.LT(-1.0, 0.0));
    Expect.isTrue(Helper.LT(-1.0, 1.0));
    Expect.isTrue(Helper.LT(0.0, 1.0));
    Expect.isFalse(Helper.LT(0.0, -1.0));
    Expect.isFalse(Helper.LT(1.0, -1.0));
    Expect.isFalse(Helper.LT(1.0, 0.0));

    Expect.isTrue(Helper.LE(-1.0, -1.0));
    Expect.isTrue(Helper.LE(0.0, 0.0));
    Expect.isTrue(Helper.LE(1.0, 1.0));
    Expect.isTrue(Helper.LE(-1.0, 0.0));
    Expect.isTrue(Helper.LE(-1.0, 1.0));
    Expect.isTrue(Helper.LE(0.0, 1.0));
    Expect.isFalse(Helper.LE(0.0, -1.0));
    Expect.isFalse(Helper.LE(1.0, -1.0));
    Expect.isFalse(Helper.LE(1.0, 0.0));

    Expect.isFalse(Helper.GT(-1.0, -1.0));
    Expect.isFalse(Helper.GT(0.0, 0.0));
    Expect.isFalse(Helper.GT(1.0, 1.0));
    Expect.isFalse(Helper.GT(-1.0, 0.0));
    Expect.isFalse(Helper.GT(-1.0, 1.0));
    Expect.isFalse(Helper.GT(0.0, 1.0));
    Expect.isTrue(Helper.GT(0.0, -1.0));
    Expect.isTrue(Helper.GT(1.0, -1.0));
    Expect.isTrue(Helper.GT(1.0, 0.0));

    Expect.isTrue(Helper.GE(-1.0, -1.0));
    Expect.isTrue(Helper.GE(0.0, 0.0));
    Expect.isTrue(Helper.GE(1.0, 1.0));
    Expect.isFalse(Helper.GE(-1.0, 0.0));
    Expect.isFalse(Helper.GE(-1.0, 1.0));
    Expect.isFalse(Helper.GE(0.0, 1.0));
    Expect.isTrue(Helper.GE(0.0, -1.0));
    Expect.isTrue(Helper.GE(1.0, -1.0));
    Expect.isTrue(Helper.GE(1.0, 0.0));

    Expect.isTrue(Helper.EQ(null, null));
    Expect.isFalse(Helper.EQ(null, "Str"));
    Expect.isTrue(Helper.NE(null, 2));
    Expect.isFalse(Helper.NE(null, null));

    Expect.isTrue(Helper.STRICT_EQ(null, null));
    Expect.isFalse(Helper.STRICT_EQ(null, "Str"));
    Expect.isTrue(Helper.STRICT_NE(null, 2));
    Expect.isFalse(Helper.STRICT_NE(null, null));

    Expect.isFalse(Helper.GT(1, 1.2));
    Expect.isTrue(Helper.GT(3, 1.2));
    Expect.isTrue(Helper.GT(2.0, 1));
    Expect.isFalse(Helper.GT(3.1, 4));

    Expect.isFalse(Helper.GE(1, 1.2));
    Expect.isTrue(Helper.GE(3, 1.2));
    Expect.isTrue(Helper.GE(2.0, 1));
    Expect.isFalse(Helper.GE(3.1, 4));
    Expect.isTrue(Helper.GE(2.0, 2));
    Expect.isTrue(Helper.GE(2, 2.0));

    Expect.isTrue(Helper.LT(1, 1.2));
    Expect.isFalse(Helper.LT(3, 1.2));
    Expect.isFalse(Helper.LT(2.0, 1));
    Expect.isTrue(Helper.LT(3.1, 4));

    Expect.isTrue(Helper.LE(1, 1.2));
    Expect.isFalse(Helper.LE(3, 1.2));
    Expect.isFalse(Helper.LE(2.0, 1));
    Expect.isTrue(Helper.LE(3.1, 4));
    Expect.isTrue(Helper.LE(2.0, 2));
    Expect.isTrue(Helper.LE(2, 2.0));

    // Bignums.
    Expect.isTrue(Helper.LE(0xF00000000005, 0xF00000000006));
    Expect.isTrue(Helper.LE(0xF00000000005, 0xF00000000005));
    Expect.isFalse(Helper.LE(0xF00000000006, 0xF00000000005));
    Expect.isTrue(Helper.LE(12, 0xF00000000005));
    Expect.isTrue(Helper.LE(12.2, 0xF00000000005));

    Expect.isTrue(Helper.EQ(4294967295, 4.294967295e9));
    Expect.isTrue(Helper.EQ(4.294967295e9, 4294967295));
    Expect.isFalse(Helper.EQ(4.294967295e9, 42));
    Expect.isFalse(Helper.EQ(42, 4.294967295e9));
    Expect.isFalse(Helper.EQ(4294967295, 42));
    Expect.isFalse(Helper.EQ(42, 4294967295));

    // Fractions & mixed
    Expect.isTrue(Helper.EQ(1.0, 1));
    Expect.isTrue(Helper.EQ(1.0, 1));
    Expect.isTrue(Helper.EQ(1, 1.0));
    Expect.isTrue(Helper.EQ(1, 1.0));
    Expect.isTrue(Helper.EQ(1.1, 1.1));
    Expect.isTrue(Helper.EQ(1.1, 1.1));
    Expect.isTrue(Helper.EQ(1.1, 1.1));

    Expect.isFalse(Helper.GT(1, 1.2));
    Expect.isTrue(Helper.GT(1.2, 1));
    Expect.isTrue(Helper.GT(1.2, 1.1));
    Expect.isTrue(Helper.GT(1.2, 1.1));
    Expect.isTrue(Helper.GT(1.2, 1.1));

    Expect.isTrue(Helper.LT(1, 1.2));
    Expect.isFalse(Helper.LT(1.2, 1));
    Expect.isFalse(Helper.LT(1.2, 1.1));
    Expect.isFalse(Helper.LT(1.2, 1.1));
    Expect.isFalse(Helper.LT(1.2, 1.1));

    Expect.isFalse(Helper.GE(1.1, 1.2));
    Expect.isFalse(Helper.GE(1.1, 1.2));
    Expect.isTrue(Helper.GE(1.2, 1.2));
    Expect.isTrue(Helper.GE(1.2, 1.2));

    // With non-number classes.
    Expect.isFalse(Helper.EQ(1, "eeny"));
    Expect.isFalse(Helper.EQ("meeny", 1));
    Expect.isFalse(Helper.EQ(1.1, "miny"));
    Expect.isFalse(Helper.EQ("moe", 1.1));
    Expect.isFalse(Helper.EQ(1.1, "catch"));
    Expect.isFalse(Helper.EQ("the", 1.1));

    // With null.
    Expect.isFalse(Helper.EQ(1, null));
    Expect.isFalse(Helper.EQ(null, 1));
    Expect.isFalse(Helper.EQ(1.1, null));
    Expect.isFalse(Helper.EQ(null, 1.1));
    Expect.isFalse(Helper.EQ(1.1, null));
    Expect.isFalse(Helper.EQ(null, 1.1));

    // TODO(srdjan): Clarify behaviour of greater/less comparisons
    // between numbers and non-numbers.
  }
}

main() {
  ComparisonTest.testMain();
}
