blob: 77b113533f843b4e4fa57c4114ad32114477a3d3 [file] [log] [blame]
// 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.
/**
* @assertion bool operator ==(Object other)
* Test whether this value is numerically equal to other.
*
* If both operands are doubles, they are equal if they have the same
* representation, except that:
*
* - zero and minus zero (0.0 and -0.0) are considered equal. They both have the
* numerical value zero.
* - NaN is not equal to anything, including NaN. If either operand is NaN,
* the result is always false.
* If one operand is a double and the other is an int, they are equal if the
* double has an integer value (finite with no fractional part) and
* identical(doubleValue.toInt(), intValue) is true.
*
* If both operands are integers, they are equal if they have the same value.
*
* Returns false if other is not a num.
*
* Notice that the behavior for NaN is non-reflexive. This means that equality
* of double values is not a proper equality relation, as is otherwise required
* of operator==. Using NaN in, e.g., a HashSet will fail to work. The behavior
* is the standard IEEE-754 equality of doubles.
*
* If you can avoid NaN values, the remaining doubles do have a proper equality
* relation, and can be used safely.
*
* Use compareTo for a comparison that distinguishes zero and minus zero, and
* that considers NaN values as equal.
* @description Check that integer values are equal if they have the same value
* @author sgrekhov@unipro.ru
*/
import "../../../Utils/expect.dart";
main() {
Expect.isTrue(0 == 0);
Expect.isTrue(2 == 2);
Expect.isTrue(2147483648 == 2147483648);
Expect.isTrue(-2147483647 == -2147483647);
Expect.isTrue(4294967296 == 4294967296);
Expect.isTrue(-4294967295 == -4294967295);
Expect.isTrue(9007199254740991 == 9007199254740991);
int x = 1;
int y = 1;
Expect.isTrue(x == y);
}