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