| // 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. | 
 |  | 
 | import "package:expect/expect.dart"; | 
 |  | 
 | main() { | 
 |   Expect.equals('', 'a' * -11); | 
 |   Expect.equals('', 'α' * -11); | 
 |   Expect.equals('', '∀' * -11); | 
 |  | 
 |   Expect.equals('', 'a' * 0); | 
 |   Expect.equals('', 'α' * 0); | 
 |   Expect.equals('', '∀' * 0); | 
 |  | 
 |   Expect.equals('a', 'a' * 1); | 
 |   Expect.equals('α', 'α' * 1); | 
 |   Expect.equals('∀', '∀' * 1); | 
 |  | 
 |   Expect.equals('aa', 'a' * 2); | 
 |   Expect.equals('αα', 'α' * 2); | 
 |   Expect.equals('∀∀', '∀' * 2); | 
 |  | 
 |   Expect.equals('aaa', 'a' * 3); | 
 |   Expect.equals('ααα', 'α' * 3); | 
 |   Expect.equals('∀∀∀', '∀' * 3); | 
 |  | 
 |   Expect.equals('', '' * 0x4000000000000000); | 
 |  | 
 |   Expect.throws(() => 'a' * 0x4000000000000000); | 
 |   Expect.throws(() => 'α' * 0x4000000000000000); | 
 |   Expect.throws(() => '∀' * 0x4000000000000000); | 
 |  | 
 |   for (final string in ['a', 'α', '∀', 'hello world', 'abc', 'α∀α']) { | 
 |     for (final count in [0, 1, 10, 100, 255, 256, 257, 1000, 100000]) { | 
 |       final expected = List.filled(count, string).join(); | 
 |       final actual = string * count; | 
 |       Expect.equals(expected, actual); | 
 |     } | 
 |   } | 
 |  | 
 |   // http://dartbug.com/49289 | 
 |   Expect.throws(() => 'abcd' * 0x4000000000000000); | 
 |   Expect.throws(() => 'αxyz' * 0x4000000000000000); | 
 |   Expect.throws(() => '∀pqr' * 0x4000000000000000); | 
 |  | 
 |   Expect.throws(() => 'abcd' * (0x4000000000000000 + 1)); | 
 |   Expect.throws(() => 'αxyz' * (0x4000000000000000 + 1)); | 
 |   Expect.throws(() => '∀pqr' * (0x4000000000000000 + 1)); | 
 | } |