// 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 breakCounts = {}; for (const locale of ["en", "fr", "ja", "zh", "ko"]) { for (const lineBreakStyle of ["strict", "normal", "loose"]) { const seg = new Intl.Segmenter( [locale], {granularity: "line", lineBreakStyle: lineBreakStyle}); let opportunity = 0; for (const text of [ // We know the following data caused different line break results between // different modes. // https://www.w3.org/TR/css-text-3/#propdef-line-break // Japanese small kana or the Katakana-Hiragana prolonged sound mark "あぁーぃーあーいーぁーぃー", // hyphens: // ‐ U+2010, – U+2013, 〜 U+301C, ゠ U+30A0 "ABC‐DEF–GHI〜JKL゠MNO", // iteration marks: // 々 U+3005, 〻 U+303B, ゝ U+309D, ゞ U+309E, ヽ U+30FD, ヾ U+30FE "あ々あ〻あゝあゞあヽあヾあ", // centered punctuation marks: // ・ U+30FB, : U+FF1A, ; U+FF1B, ・ U+FF65, ‼ U+203C "ABC・DEF:GHI;JKL・MNO‼PQR", // centered punctuation marks: // ⁇ U+2047, ⁈ U+2048, ⁉ U+2049, ! U+FF01, ? U+FF1F "ABC⁇DEF⁈GHI⁉JKL!MNO?PQR", ]) { const iter = seg.segment(text); while (!iter.following()) { opportunity++; } } breakCounts[locale + "-" + lineBreakStyle] = opportunity; } } // In Japanese // Just test the break count in loose mode is greater than normal mode. assertTrue(breakCounts["ja-loose"] > breakCounts["ja-normal"]); // and test the break count in normal mode is greater than strict mode. assertTrue(breakCounts["ja-normal"] > breakCounts["ja-strict"]); // In Chinese // Just test the break count in loose mode is greater than normal mode. assertTrue(breakCounts["zh-loose"] > breakCounts["zh-normal"]); // and test the break count in normal mode is greater than strict mode. assertTrue(breakCounts["zh-normal"] > breakCounts["zh-strict"]); // In English, French and Korean assertEquals(breakCounts["en-loose"], breakCounts["en-normal"]); assertEquals(breakCounts["fr-loose"], breakCounts["fr-normal"]); assertEquals(breakCounts["ko-loose"], breakCounts["ko-normal"]); // and test the break count in normal mode is greater than strict mode. assertTrue(breakCounts["en-normal"] > breakCounts["en-strict"]); assertTrue(breakCounts["fr-normal"] > breakCounts["fr-strict"]); assertTrue(breakCounts["ko-normal"] > breakCounts["ko-strict"]);