mirror of
				https://github.com/tc39/test262.git
				synced 2025-10-31 03:34:08 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			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));
 |