| // Copyright (c) 2013, 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 RuneIterator.at(String string, int index) |
| /// A moveNext will use the rune starting at [index] the current value, and a |
| /// movePrevious |
| /// will use the rune ending just before [index] as the current value. |
| /// @description Checks that moveNext and movePrevious set [current] correctly. |
| /// @author msyabro |
| |
| import "../../../Utils/expect.dart"; |
| |
| check(string, pos, current, prev) { |
| var it = new RuneIterator.at(string, pos); |
| it.moveNext(); |
| Expect.equals(current, it.current); |
| |
| it = new RuneIterator.at(string, pos); |
| it.movePrevious(); |
| Expect.equals(prev, it.current); |
| } |
| |
| main() { |
| check('', 0, -1, -1); |
| check('a', 1, -1, 0x61); |
| check('\u{10000}', 0, 0x10000, -1); |
| check('\u{10000}\u{10001}\x01', 2, 0x10001, 0x10000); |
| check('\u{10000}\u{10001}\x01', 4, 0x01, 0x10001); |
| check('string', 2, 0x72, 0x74); |
| check('string', 3, 0x69, 0x72); |
| } |