| // 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" }) |
| ); |
| |
| assertThrows(() => new Intl.Segmenter(["sr"], { granularity: "line" }), RangeError); |
| |
| 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" }) |
| ); |
| |
| assertDoesNotThrow( |
| () => new Intl.Segmenter(["sr"], { lineBreakStyle: "giant" }) |
| ); |
| |
| 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" |
| }) |
| ); |
| |
| assertThrows( |
| () => |
| new Intl.Segmenter(["sr"], { |
| granularity: "line", |
| lineBreakStyle: "loose" |
| }), RangeError |
| ); |
| |
| assertThrows( |
| () => |
| new Intl.Segmenter(["sr"], { |
| granularity: "line", |
| lineBreakStyle: "normal" |
| }), RangeError |
| ); |
| |
| assertThrows( |
| () => |
| new Intl.Segmenter(["sr"], { |
| granularity: "line", |
| lineBreakStyle: "strict" |
| }), RangeError |
| ); |
| |
| // propagate exception from getter |
| assertThrows( |
| () => |
| new Intl.Segmenter(undefined, { |
| get localeMatcher() { |
| throw new TypeError(""); |
| } |
| }), |
| TypeError |
| ); |
| assertDoesNotThrow( |
| () => |
| new Intl.Segmenter(undefined, { |
| get lineBreakStyle() { |
| throw new TypeError(""); |
| } |
| }) |
| ); |
| assertThrows( |
| () => |
| new Intl.Segmenter(undefined, { |
| get granularity() { |
| throw new TypeError(""); |
| } |
| }), |
| TypeError |
| ); |