blob: d095a4868c4aba4e6e54b8db6e64df9fc7fd6834 [file] [log] [blame]
// Copyright (c) 2022, 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.
//
// This complements corelib/double_hash_code_test.dart and verifies hash code
// values of doubles that are not representable as integers.
//
// VMOptions=--use_sse41
// VMOptions=--no_use_sse41
import 'package:expect/expect.dart';
import 'isolates/fast_object_copy_timeline_test.dart' show slotSize;
void main() {
// On 32-bit and 64-bit-compressed modes double.hashCode is different for
// non-integer doubles.
// NaN values are not being tested because bit patterns for NaN, used for
// hash code calculations are platform and toolchain dependent.
if (slotSize == 4) {
Expect.equals(1072693248, double.infinity.hashCode);
Expect.equals(1048576, double.maxFinite.hashCode);
Expect.equals(1, double.minPositive.hashCode);
Expect.equals(1072693248, double.negativeInfinity.hashCode);
} else {
Expect.equals(4607182420946452480, double.infinity.hashCode);
Expect.equals(4607182416653582336, double.maxFinite.hashCode);
Expect.equals(1, double.minPositive.hashCode);
Expect.equals(4607182423093936128, double.negativeInfinity.hashCode);
}
}