mirror of https://github.com/tc39/test262.git
41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
// Copyright 2018 the V8 project authors. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
|
|
/*---
|
|
esid: sec-segment-iterator-prototype
|
|
description: Verifies the behavior for the iterators.
|
|
features: [Intl.Segmenter]
|
|
---*/
|
|
|
|
const segmenter = new Intl.Segmenter();
|
|
const text = "Hello World, Test 123! Foo Bar. How are you?";
|
|
const iter = segmenter.segment(text);
|
|
|
|
assert.sameValue("function", typeof iter.following);
|
|
|
|
const tests = [
|
|
["3", 2],
|
|
[true, 0],
|
|
[1.4, 0],
|
|
[{ valueOf() { return 5; } }, 4],
|
|
[text.length - 1, text.length - 2],
|
|
[text.length, text.length - 1],
|
|
];
|
|
|
|
for (const [input, index] of tests) {
|
|
assert.sameValue(iter.preceding(input), false);
|
|
assert.sameValue(iter.index, index, String(input));
|
|
}
|
|
|
|
assert.throws(RangeError, () => iter.preceding("ABC"));
|
|
assert.throws(RangeError, () => iter.preceding(null));
|
|
assert.throws(RangeError, () => iter.preceding(-3));
|
|
|
|
// 1.5.3.3 %SegmentIteratorPrototype%.preceding( [ from ] )
|
|
// 3.b If ... from = 0, throw a RangeError exception.
|
|
assert.throws(RangeError, () => iter.preceding(0));
|
|
|
|
// 1.5.3.3 %SegmentIteratorPrototype%.preceding( [ from ] )
|
|
// 3.b If from > iterator.[[SegmentIteratorString]] ... , throw a RangeError exception.
|
|
assert.throws(RangeError, () => iter.preceding(text.length + 1));
|