| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // @dart = 2.6 |
| import 'package:test/test.dart'; |
| import 'package:ui/ui.dart'; |
| |
| // The biggest integer value that can be represented in JavaScript is 1 << 53. |
| // However, the 1 << 53 expression cannot be used in JavaScript because that |
| // would apply the bitwise shift to a "number" (i.e. float64), which is |
| // meaningless. Instead, a decimal literal is used here. |
| const int _kBiggestExactJavaScriptInt = 9007199254740992; |
| |
| void main() { |
| test('hashValues can hash lots of huge values effectively', () { |
| expect( |
| hashValues( |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| ), |
| 496984395, |
| ); |
| // Hash a slightly smaller number to verify that the hash code is different. |
| expect( |
| hashValues( |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt - 1, |
| ), |
| 455584273, |
| ); |
| }); |
| |
| test('hashList can hash lots of huge values effectively', () { |
| expect( |
| hashList(<int>[ |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| ]), |
| 496984395, |
| ); |
| // Hash a slightly smaller number to verify that the hash code is different. |
| expect( |
| hashList(<int>[ |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt, |
| _kBiggestExactJavaScriptInt - 1, |
| ]), |
| 455584273, |
| ); |
| }); |
| } |