diff options
Diffstat (limited to 'deps/v8/test/intl/segmenter')
-rw-r--r-- | deps/v8/test/intl/segmenter/constructor.js | 216 | ||||
-rw-r--r-- | deps/v8/test/intl/segmenter/resolved-options.js | 299 | ||||
-rw-r--r-- | deps/v8/test/intl/segmenter/segment-iterator-following.js | 17 | ||||
-rw-r--r-- | deps/v8/test/intl/segmenter/segment-iterator-next.js | 11 | ||||
-rw-r--r-- | deps/v8/test/intl/segmenter/segment-iterator-preceding.js | 21 | ||||
-rw-r--r-- | deps/v8/test/intl/segmenter/segment-iterator.js | 13 | ||||
-rw-r--r-- | deps/v8/test/intl/segmenter/segment.js | 7 | ||||
-rw-r--r-- | deps/v8/test/intl/segmenter/supported-locale.js | 22 |
8 files changed, 606 insertions, 0 deletions
diff --git a/deps/v8/test/intl/segmenter/constructor.js b/deps/v8/test/intl/segmenter/constructor.js new file mode 100644 index 0000000000..655bb100df --- /dev/null +++ b/deps/v8/test/intl/segmenter/constructor.js @@ -0,0 +1,216 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --harmony-intl-segmenter + +// Segmenter constructor can't be called as function. +assertThrows(() => Intl.Segmenter(["sr"]), TypeError); + +// Invalid locale string. +assertThrows(() => new Intl.Segmenter(["abcdefghi"]), RangeError); + +assertDoesNotThrow(() => new Intl.Segmenter(["sr"], {}), TypeError); + +assertDoesNotThrow(() => new Intl.Segmenter([], {})); + +assertDoesNotThrow(() => new Intl.Segmenter(["fr", "ar"], {})); + +assertDoesNotThrow(() => new Intl.Segmenter({ 0: "ja", 1: "fr" }, {})); + +assertDoesNotThrow(() => new Intl.Segmenter({ 1: "ja", 2: "fr" }, {})); + +assertDoesNotThrow(() => new Intl.Segmenter(["sr"])); + +assertDoesNotThrow(() => new Intl.Segmenter()); + +assertDoesNotThrow( + () => + new Intl.Segmenter(["sr"], { + lineBreakStyle: "strict", + granularity: "grapheme" + }) +); + +assertDoesNotThrow( + () => new Intl.Segmenter(["sr"], { granularity: "sentence" }) +); + +assertDoesNotThrow(() => new Intl.Segmenter(["sr"], { granularity: "word" })); + +assertDoesNotThrow( + () => new Intl.Segmenter(["sr"], { granularity: "grapheme" }) +); + +assertDoesNotThrow(() => new Intl.Segmenter(["sr"], { granularity: "line" })); + +assertThrows( + () => new Intl.Segmenter(["sr"], { granularity: "standard" }), + RangeError +); + +assertDoesNotThrow( + () => new Intl.Segmenter(["sr"], { lineBreakStyle: "normal" }) +); + +assertDoesNotThrow( + () => new Intl.Segmenter(["sr"], { lineBreakStyle: "strict" }) +); + +assertDoesNotThrow( + () => new Intl.Segmenter(["sr"], { lineBreakStyle: "loose" }) +); + +assertThrows( + () => new Intl.Segmenter(["sr"], { lineBreakStyle: "giant" }), + RangeError +); + +assertDoesNotThrow( + () => + new Intl.Segmenter(["sr"], { + granularity: "sentence", + lineBreakStyle: "normal" + }) +); + +assertDoesNotThrow( + () => + new Intl.Segmenter(["sr"], { + granularity: "sentence", + lineBreakStyle: "strict" + }) +); + +assertDoesNotThrow( + () => + new Intl.Segmenter(["sr"], { + granularity: "sentence", + lineBreakStyle: "loose" + }) +); + +assertDoesNotThrow( + () => + new Intl.Segmenter(["sr"], { + granularity: "word", + lineBreakStyle: "normal" + }) +); + +assertDoesNotThrow( + () => + new Intl.Segmenter(["sr"], { + granularity: "word", + lineBreakStyle: "strict" + }) +); + +assertDoesNotThrow( + () => + new Intl.Segmenter(["sr"], { + granularity: "word", + lineBreakStyle: "loose" + }) +); + +assertDoesNotThrow( + () => + new Intl.Segmenter(["sr"], { + granularity: "grapheme", + lineBreakStyle: "normal" + }) +); + +assertDoesNotThrow( + () => + new Intl.Segmenter(["sr"], { + granularity: "grapheme", + lineBreakStyle: "strict" + }) +); + +assertDoesNotThrow( + () => + new Intl.Segmenter(["sr"], { + granularity: "grapheme", + lineBreakStyle: "loose" + }) +); + +assertDoesNotThrow( + () => + new Intl.Segmenter(["sr"], { + granularity: "line", + lineBreakStyle: "loose" + }) +); + +assertDoesNotThrow( + () => + new Intl.Segmenter(["sr"], { + granularity: "line", + lineBreakStyle: "normal" + }) +); + +assertDoesNotThrow( + () => + new Intl.Segmenter(["sr"], { + granularity: "line", + lineBreakStyle: "strict" + }) +); + +// propagate exception from getter +assertThrows( + () => + new Intl.Segmenter(undefined, { + get localeMatcher() { + throw new TypeError(""); + } + }), + TypeError +); +assertThrows( + () => + new Intl.Segmenter(undefined, { + get lineBreakStyle() { + throw new TypeError(""); + } + }), + TypeError +); +assertThrows( + () => + new Intl.Segmenter(undefined, { + get granularity() { + throw new TypeError(""); + } + }), + TypeError +); + +// Throws only once during construction. +// Check for all getters to prevent regression. +// Preserve the order of getter initialization. +let getCount = 0; +let localeMatcher = -1; +let lineBreakStyle = -1; +let granularity = -1; + +new Intl.Segmenter(["en-US"], { + get localeMatcher() { + localeMatcher = ++getCount; + }, + get lineBreakStyle() { + lineBreakStyle = ++getCount; + }, + get granularity() { + granularity = ++getCount; + } +}); + +assertEquals(1, localeMatcher); +assertEquals(2, lineBreakStyle); +assertEquals(3, granularity); diff --git a/deps/v8/test/intl/segmenter/resolved-options.js b/deps/v8/test/intl/segmenter/resolved-options.js new file mode 100644 index 0000000000..2e2a910ddb --- /dev/null +++ b/deps/v8/test/intl/segmenter/resolved-options.js @@ -0,0 +1,299 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --harmony-intl-segmenter + +let segmenter = new Intl.Segmenter([], { granularity: "line" }); +// The default lineBreakStyle is 'normal' +assertEquals("normal", segmenter.resolvedOptions().lineBreakStyle); + +segmenter = new Intl.Segmenter(); +assertEquals(undefined, segmenter.resolvedOptions().lineBreakStyle); + +// The default granularity is 'grapheme' +assertEquals("grapheme", segmenter.resolvedOptions().granularity); + +assertEquals( + undefined, + new Intl.Segmenter(["sr"], { lineBreakStyle: "strict" }).resolvedOptions() + .lineBreakStyle +); + +assertEquals( + "grapheme", + new Intl.Segmenter(["sr"], { lineBreakStyle: "strict" }).resolvedOptions() + .granularity +); + +assertEquals( + undefined, + new Intl.Segmenter(["sr"], { lineBreakStyle: "normal" }).resolvedOptions() + .lineBreakStyle +); + +assertEquals( + "grapheme", + new Intl.Segmenter(["sr"], { lineBreakStyle: "normal" }).resolvedOptions() + .granularity +); + +assertEquals( + undefined, + new Intl.Segmenter(["sr"], { lineBreakStyle: "loose" }).resolvedOptions() + .lineBreakStyle +); + +assertEquals( + "grapheme", + new Intl.Segmenter(["sr"], { lineBreakStyle: "loose" }).resolvedOptions() + .granularity +); + +assertEquals( + "word", + new Intl.Segmenter(["sr"], { granularity: "word" }).resolvedOptions() + .granularity +); + +assertEquals( + undefined, + new Intl.Segmenter(["sr"], { granularity: "word" }).resolvedOptions() + .lineBreakStyle +); + +assertEquals( + "grapheme", + new Intl.Segmenter(["sr"], { granularity: "grapheme" }).resolvedOptions() + .granularity +); + +assertEquals( + undefined, + new Intl.Segmenter(["sr"], { granularity: "grapheme" }).resolvedOptions() + .lineBreakStyle +); + +assertEquals( + "sentence", + new Intl.Segmenter(["sr"], { granularity: "sentence" }).resolvedOptions() + .granularity +); + +assertEquals( + undefined, + new Intl.Segmenter(["sr"], { granularity: "sentence" }).resolvedOptions() + .lineBreakStyle +); + +assertEquals( + "line", + new Intl.Segmenter(["sr"], { granularity: "line" }).resolvedOptions() + .granularity +); + +assertEquals( + "normal", + new Intl.Segmenter(["sr"], { granularity: "line" }).resolvedOptions() + .lineBreakStyle +); + +assertEquals( + "grapheme", + new Intl.Segmenter(["sr"], { + lineBreakStyle: "loose", + granularity: "grapheme" + }).resolvedOptions().granularity +); + +assertEquals( + undefined, + new Intl.Segmenter(["sr"], { + lineBreakStyle: "loose", + granularity: "grapheme" + }).resolvedOptions().lineBreakStyle +); + +assertEquals( + "grapheme", + new Intl.Segmenter(["sr"], { + lineBreakStyle: "strict", + granularity: "grapheme" + }).resolvedOptions().granularity +); + +assertEquals( + undefined, + new Intl.Segmenter(["sr"], { + lineBreakStyle: "strict", + granularity: "grapheme" + }).resolvedOptions().lineBreakStyle +); + +assertEquals( + "grapheme", + new Intl.Segmenter(["sr"], { + lineBreakStyle: "normal", + granularity: "grapheme" + }).resolvedOptions().granularity +); + +assertEquals( + undefined, + new Intl.Segmenter(["sr"], { + lineBreakStyle: "normal", + granularity: "grapheme" + }).resolvedOptions().lineBreakStyle +); + +assertEquals( + "word", + new Intl.Segmenter(["sr"], { + lineBreakStyle: "loose", + granularity: "word" + }).resolvedOptions().granularity +); + +assertEquals( + undefined, + new Intl.Segmenter(["sr"], { + lineBreakStyle: "loose", + granularity: "word" + }).resolvedOptions().lineBreakStyle +); + +assertEquals( + "word", + new Intl.Segmenter(["sr"], { + lineBreakStyle: "strict", + granularity: "word" + }).resolvedOptions().granularity +); + +assertEquals( + undefined, + new Intl.Segmenter(["sr"], { + lineBreakStyle: "strict", + granularity: "word" + }).resolvedOptions().lineBreakStyle +); + +assertEquals( + "word", + new Intl.Segmenter(["sr"], { + lineBreakStyle: "normal", + granularity: "word" + }).resolvedOptions().granularity +); + +assertEquals( + undefined, + new Intl.Segmenter(["sr"], { + lineBreakStyle: "normal", + granularity: "word" + }).resolvedOptions().lineBreakStyle +); + +assertEquals( + "sentence", + new Intl.Segmenter(["sr"], { + lineBreakStyle: "loose", + granularity: "sentence" + }).resolvedOptions().granularity +); + +assertEquals( + undefined, + new Intl.Segmenter(["sr"], { + lineBreakStyle: "loose", + granularity: "sentence" + }).resolvedOptions().lineBreakStyle +); + +assertEquals( + "sentence", + new Intl.Segmenter(["sr"], { + lineBreakStyle: "strict", + granularity: "sentence" + }).resolvedOptions().granularity +); + +assertEquals( + undefined, + new Intl.Segmenter(["sr"], { + lineBreakStyle: "strict", + granularity: "sentence" + }).resolvedOptions().lineBreakStyle +); + +assertEquals( + "sentence", + new Intl.Segmenter(["sr"], { + lineBreakStyle: "normal", + granularity: "sentence" + }).resolvedOptions().granularity +); + +assertEquals( + "normal", + new Intl.Segmenter(["sr"], { + lineBreakStyle: "normal", + granularity: "line" + }).resolvedOptions().lineBreakStyle +); + +assertEquals( + "line", + new Intl.Segmenter(["sr"], { + lineBreakStyle: "loose", + granularity: "line" + }).resolvedOptions().granularity +); + +assertEquals( + "loose", + new Intl.Segmenter(["sr"], { + lineBreakStyle: "loose", + granularity: "line" + }).resolvedOptions().lineBreakStyle +); + +assertEquals( + "line", + new Intl.Segmenter(["sr"], { + lineBreakStyle: "strict", + granularity: "line" + }).resolvedOptions().granularity +); + +assertEquals( + "strict", + new Intl.Segmenter(["sr"], { + lineBreakStyle: "strict", + granularity: "line" + }).resolvedOptions().lineBreakStyle +); + +assertEquals( + "line", + new Intl.Segmenter(["sr"], { + lineBreakStyle: "normal", + granularity: "line" + }).resolvedOptions().granularity +); + +assertEquals( + "normal", + new Intl.Segmenter(["sr"], { + lineBreakStyle: "normal", + granularity: "line" + }).resolvedOptions().lineBreakStyle +); + +assertEquals("ar", new Intl.Segmenter(["ar"]).resolvedOptions().locale); + +assertEquals("ar", new Intl.Segmenter(["ar", "en"]).resolvedOptions().locale); + +assertEquals("fr", new Intl.Segmenter(["fr", "en"]).resolvedOptions().locale); + +assertEquals("ar", new Intl.Segmenter(["xyz", "ar"]).resolvedOptions().locale); diff --git a/deps/v8/test/intl/segmenter/segment-iterator-following.js b/deps/v8/test/intl/segmenter/segment-iterator-following.js new file mode 100644 index 0000000000..a28d6c31d1 --- /dev/null +++ b/deps/v8/test/intl/segmenter/segment-iterator-following.js @@ -0,0 +1,17 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --harmony-intl-segmenter + +const segmenter = new Intl.Segmenter(); +const text = "Hello World, Test 123! Foo Bar. How are you?"; +const iter = segmenter.segment(text); + +assertEquals("function", typeof iter.following); + +// 1.5.3.2 %SegmentIteratorPrototype%.following( [ from ] ) +// 3.b If from >= iterator.[[SegmentIteratorString]], throw a RangeError exception. +assertDoesNotThrow(() => iter.following(text.length - 1)); +assertThrows(() => iter.following(text.length), RangeError); +assertThrows(() => iter.following(text.length + 1), RangeError); diff --git a/deps/v8/test/intl/segmenter/segment-iterator-next.js b/deps/v8/test/intl/segmenter/segment-iterator-next.js new file mode 100644 index 0000000000..9aa40494ca --- /dev/null +++ b/deps/v8/test/intl/segmenter/segment-iterator-next.js @@ -0,0 +1,11 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --harmony-intl-segmenter + +const segmenter = new Intl.Segmenter(); +const text = "Hello World, Test 123! Foo Bar. How are you?"; +const iter = segmenter.segment(text); + +assertEquals("function", typeof iter.next); diff --git a/deps/v8/test/intl/segmenter/segment-iterator-preceding.js b/deps/v8/test/intl/segmenter/segment-iterator-preceding.js new file mode 100644 index 0000000000..07d73376f2 --- /dev/null +++ b/deps/v8/test/intl/segmenter/segment-iterator-preceding.js @@ -0,0 +1,21 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --harmony-intl-segmenter + +const segmenter = new Intl.Segmenter(); +const text = "Hello World, Test 123! Foo Bar. How are you?"; +const iter = segmenter.segment(text); + +assertEquals("function", typeof iter.preceding); + +// 1.5.3.3 %SegmentIteratorPrototype%.preceding( [ from ] ) +// 3.b If ... from = 0, throw a RangeError exception. +assertThrows(() => iter.preceding(0), RangeError); + +// 1.5.3.3 %SegmentIteratorPrototype%.preceding( [ from ] ) +// 3.b If from > iterator.[[SegmentIteratorString]] ... , throw a RangeError exception. +assertDoesNotThrow(() => iter.preceding(text.length - 1)); +assertDoesNotThrow(() => iter.preceding(text.length)); +assertThrows(() => iter.preceding(text.length + 1), RangeError); diff --git a/deps/v8/test/intl/segmenter/segment-iterator.js b/deps/v8/test/intl/segmenter/segment-iterator.js new file mode 100644 index 0000000000..0d0c31b405 --- /dev/null +++ b/deps/v8/test/intl/segmenter/segment-iterator.js @@ -0,0 +1,13 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --harmony-intl-segmenter + +const segmenter = new Intl.Segmenter(); +const text = "Hello World, Test 123! Foo Bar. How are you?"; +const iter = segmenter.segment(text); + +assertEquals("number", typeof iter.position); +assertEquals(0, iter.position); +assertEquals("strig", typeof iter.breakType); diff --git a/deps/v8/test/intl/segmenter/segment.js b/deps/v8/test/intl/segmenter/segment.js new file mode 100644 index 0000000000..ca17c5040d --- /dev/null +++ b/deps/v8/test/intl/segmenter/segment.js @@ -0,0 +1,7 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --harmony-intl-segmenter + +assertEquals("function", typeof Intl.Segmenter.prototype.segment); diff --git a/deps/v8/test/intl/segmenter/supported-locale.js b/deps/v8/test/intl/segmenter/supported-locale.js new file mode 100644 index 0000000000..24825a2759 --- /dev/null +++ b/deps/v8/test/intl/segmenter/supported-locale.js @@ -0,0 +1,22 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --harmony-intl-segmenter +assertEquals( + typeof Intl.Segmenter.supportedLocalesOf, + "function", + "Intl.Segmenter.supportedLocalesOf should be a function" +); + +var undef = Intl.Segmenter.supportedLocalesOf(); +assertEquals([], undef); + +var empty = Intl.Segmenter.supportedLocalesOf([]); +assertEquals([], empty); + +var strLocale = Intl.Segmenter.supportedLocalesOf("sr"); +assertEquals("sr", strLocale[0]); + +var multiLocale = ["sr-Thai-RS", "de", "zh-CN"]; +assertEquals(multiLocale, Intl.Segmenter.supportedLocalesOf(multiLocale)); |