Skip to content
Topaz6.0 · Before release
Download

Search documentation

Specification 6.0 · Not released · Tested product 5.21.3

Use arrow keys to choose a result. Press Enter to open.

Type an API name, diagnostic number, rule, or project topic.

    Library · Strings

    string.graphemes

    Return Unicode 16 extended grapheme clusters in source order.

    graphemes() -> Array<string>
    Module
    Strings
    Receiver
    string
    Minimum arity
    0
    Maximum arity
    0

    Declaration and parameters

    Link

    Availability

    Included by default: yes

    These types are provided by the language. No module import is required.

    The declarations below describe the standard operations on built-in values.

    Receiver

    string

    Parameter constraints

    string.graphemes() is a receiver call with no arguments and returns Array<string>. It needs no module import.

    Boundaries follow Unicode 16.0.0 and UAX #29 revision 45, conformance clause UAX29-C1-1. Use the default extended grapheme cluster rules, including GB9a, GB9b, and GB9c, without locale or script tailoring.

    The Unicode version is part of this API contract. The host locale and a newer host Unicode database do not select different boundaries.

    Each returned string is nonempty and appears in source order. Empty input returns an empty array. Joining with an empty separator recovers the input scalar sequence and UTF-8 bytes exactly.

    Segmentation does not normalize, reorder, compose, or decompose stored scalars. Canonically equivalent inputs retain their distinct original spellings.

    Use the returned array's length, indexing, and iteration operations for grapheme counts and access. Existing scalars(), scalar indexing, and byteLength() retain their own units. Direct string iteration remains rejected.

    Grapheme boundaries identify text segments for operations such as selection and deletion. Glyph shaping, physical advances, and line-break opportunities have separate contracts.

    Result

    The declared result type is Array<string>.

    Effects

    Failures

    Result and effects

    Link

    Apply the Unicode 16.0.0 default extended grapheme boundary rules from UAX #29 revision 45. Return nonempty string segments without tailoring or normalization. Empty text returns an empty array.

    Why

    Link

    An explicit text unit supports editing while retaining scalar algorithms. Returning Array<string> reuses array counting, indexing, and iteration.

    Related entries

    Link

    Strings

    Choose Unicode grapheme clusters explicitly

    Link
    Ruletopaz.stdlib.contract.string-graphemes.rule

    Choose Unicode grapheme clusters explicitly

    string.graphemes() is a receiver call with no arguments and returns Array<string>. It needs no module import.

    Boundaries follow Unicode 16.0.0 and UAX #29 revision 45, conformance clause UAX29-C1-1. Use the default extended grapheme cluster rules, including GB9a, GB9b, and GB9c, without locale or script tailoring.

    The Unicode version is part of this API contract. The host locale and a newer host Unicode database do not select different boundaries.

    Each returned string is nonempty and appears in source order. Empty input returns an empty array. Joining with an empty separator recovers the input scalar sequence and UTF-8 bytes exactly.

    Segmentation does not normalize, reorder, compose, or decompose stored scalars. Canonically equivalent inputs retain their distinct original spellings.

    Use the returned array's length, indexing, and iteration operations for grapheme counts and access. Existing scalars(), scalar indexing, and byteLength() retain their own units. Direct string iteration remains rejected.

    Grapheme boundaries identify text segments for operations such as selection and deletion. Glyph shaping, physical advances, and line-break opportunities have separate contracts.

    Why

    Scalars and grapheme clusters serve different text operations. Explicit segmentation keeps one spelling for each unit and supports editing across combining marks, Hangul, and emoji. A pinned Unicode version gives programs the same boundaries on every host. Array<string> reuses the language's counting, indexing, and iteration rules.

    Source evidence

    Segment combining text, Hangul, and emoji

    Link
    main.tpzSegment combining text, Hangul, and emojiOpen in Playground
    1. import std.io
    2. let text = "é가👩‍💻🇰🇷"
    3. let clusters: Array<string> = text.graphemes()
    4. io.writeLine("{text.scalars().length}:{clusters.length}")
    5. io.writeLine(clusters.join("|"))
    6. io.writeLine("{clusters.join("") == text}")
    Expected outputexit 0
    9:4
    é|가|👩‍💻|🇰🇷
    true
    
    $ topaz run main.tpz · target product 5.21.3
    Expected result

    Expected result

    Execution completes. Exit code 0.

    Expected stdout
    1. 9:4
    2. é|가|👩‍💻|🇰🇷
    3. true
    Source evidence

    Keep empty text, CRLF, leading marks, and odd regional indicators distinct

    Link
    main.tpzKeep empty text, CRLF, leading marks, and odd regional indicators distinctOpen in Playground
    1. import std.io
    2. for text in (["", "\r\n", "̈́A", "🇰🇷🇯"]) {
    3. let clusters = text.graphemes()
    4. io.writeLine("{clusters.length}:{clusters.join("") == text}")
    5. }
    Expected outputexit 0
    0:true
    1:true
    2:true
    2:true
    
    $ topaz run main.tpz · target product 5.21.3
    Expected result

    Expected result

    Execution completes. Exit code 0.

    Expected stdout
    1. 0:true
    2. 1:true
    3. 2:true
    4. 2:true
    Source evidence

    Preserve decomposed and precomposed text exactly

    Link
    main.tpzPreserve decomposed and precomposed text exactlyOpen in Playground
    1. import std.io
    2. let decomposed = "é"
    3. let precomposed = "é"
    4. let text = decomposed + precomposed
    5. let clusters = text.graphemes()
    6. io.writeLine("{clusters.length}")
    7. io.writeLine("{clusters[0] == decomposed}")
    8. io.writeLine("{clusters[1] == precomposed}")
    9. io.writeLine("{clusters.join("") == text}")
    10. io.writeLine("{decomposed == precomposed}")
    Expected outputexit 0
    2
    true
    true
    true
    false
    
    $ topaz run main.tpz · target product 5.21.3
    Expected result

    Expected result

    Execution completes. Exit code 0.

    Expected stdout
    1. 2
    2. true
    3. true
    4. true
    5. false
    Source evidence

    Apply extended and Unicode 16 conjoining rules

    Link
    main.tpzApply extended and Unicode 16 conjoining rulesOpen in Playground
    1. import std.io
    2. for text in (["؀A", "कि", "क्ष", "𖵩", "A‍B"]) {
    3. let clusters = text.graphemes()
    4. io.writeLine("{clusters.length}:{clusters.join("") == text}")
    5. }
    Expected outputexit 0
    1:true
    1:true
    1:true
    1:true
    2:true
    
    $ topaz run main.tpz · target product 5.21.3
    Expected result

    Expected result

    Execution completes. Exit code 0.

    Expected stdout
    1. 1:true
    2. 1:true
    3. 1:true
    4. 1:true
    5. 2:true

    The inputs cover Prepend, SpacingMark, Indic conjunct linking, Unicode 16 Kirat Rai conjoining vowels, and a ZWJ without pictographic neighbors.

    Source evidence

    Retain scalar and UTF-8 byte observations

    Link
    main.tpzRetain scalar and UTF-8 byte observationsOpen in Playground
    1. import std.io
    2. let text = "é"
    3. io.writeLine("{text.scalars().length}")
    4. io.writeLine("{text.byteLength()}")
    Expected outputexit 0
    2
    3
    
    $ topaz run main.tpz · target product 5.21.3
    Expected result

    Expected result

    Execution completes. Exit code 0.

    Expected stdout
    1. 2
    2. 3
    Source evidence

    Check every published Unicode 16 grapheme test row

    Link
    main.tpzCheck every published Unicode 16 grapheme test rowOpen in Playground
    1. import std.io
    2. import graphemecases0
    3. import graphemecases1
    4. import graphemecases2
    5. import graphemecases3
    6. import graphemecases4
    7. import graphemecases5
    8. import graphemecases6
    9. import graphemecases7
    10. import graphemecases8
    11. import graphemecases9
    12. import graphemecases10
    13. import graphemecases11
    14. import graphemecases12
    15. import graphemecases13
    16. import graphemecases14
    17. import graphemecases15
    18. import graphemecases16
    19. import graphemecases17
    20. let mut failures = 0
    21. failures += graphemecases0.run()
    22. failures += graphemecases1.run()
    23. failures += graphemecases2.run()
    24. failures += graphemecases3.run()
    25. failures += graphemecases4.run()
    26. failures += graphemecases5.run()
    27. failures += graphemecases6.run()
    28. failures += graphemecases7.run()
    29. failures += graphemecases8.run()
    30. failures += graphemecases9.run()
    31. failures += graphemecases10.run()
    32. failures += graphemecases11.run()
    33. failures += graphemecases12.run()
    34. failures += graphemecases13.run()
    35. failures += graphemecases14.run()
    36. failures += graphemecases15.run()
    37. failures += graphemecases16.run()
    38. failures += graphemecases17.run()
    39. if (failures == 0) { io.writeLine("Unicode 16.0.0 grapheme corpus passed") }
    Expected outputexit 0
    Unicode 16.0.0 grapheme corpus passed
    
    $ topaz run main.tpz · target product 5.21.3
    graphemesupport.tpzCheck every published Unicode 16 grapheme test rowOpen in Playground
    1. import std.io
    2. function agrees(input: string, expected: Array<string>) -> bool {
    3. let actual: Array<string> = input.graphemes()
    4. if (actual.length != expected.length) { return false }
    5. if (actual.join("") != input) { return false }
    6. for index in (0..<expected.length) {
    7. if (actual[index] != expected[index]) { return false }
    8. }
    9. true
    10. }
    11. export function checkCase(line: int, input: string, expected: Array<string>) -> int {
    12. if (agrees(input, expected)) { return 0 }
    13. io.writeLine("GraphemeBreakTest line {line} failed")
    14. 1
    15. }
    graphemecases0.tpzCheck every published Unicode 16 grapheme test rowOpen in Playground
    1. import graphemesupport { checkCase }
    2. export function run() -> int {
    3. let mut failures = 0
    4. failures += checkCase(25, " ", [" ", " "])
    5. failures += checkCase(26, " ̈ ", [" ̈", " "])
    6. failures += checkCase(27, " \r", [" ", "\r"])
    7. failures += checkCase(28, " ̈\r", [" ̈", "\r"])
    8. failures += checkCase(29, " \n", [" ", "\n"])
    9. failures += checkCase(30, " ̈\n", [" ̈", "\n"])
    10. failures += checkCase(31, " ", [" ", ""])
    11. failures += checkCase(32, " ̈", [" ̈", ""])
    12. failures += checkCase(33, " ‌", [" ‌"])
    13. failures += checkCase(34, " ̈‌", [" ̈‌"])
    14. failures += checkCase(35, " 🇦", [" ", "🇦"])
    15. failures += checkCase(36, " ̈🇦", [" ̈", "🇦"])
    16. failures += checkCase(37, " ؀", [" ", "؀"])
    17. failures += checkCase(38, " ̈؀", [" ̈", "؀"])
    18. failures += checkCase(39, " ਃ", [" ਃ"])
    19. failures += checkCase(40, " ̈ਃ", [" ̈ਃ"])
    20. failures += checkCase(41, " ᄀ", [" ", "ᄀ"])
    21. failures += checkCase(42, " ̈ᄀ", [" ̈", "ᄀ"])
    22. failures += checkCase(43, " ᅠ", [" ", "ᅠ"])
    23. failures += checkCase(44, " ̈ᅠ", [" ̈", "ᅠ"])
    24. failures += checkCase(45, " ᆨ", [" ", "ᆨ"])
    25. failures += checkCase(46, " ̈ᆨ", [" ̈", "ᆨ"])
    26. failures += checkCase(47, " 가", [" ", "가"])
    27. failures += checkCase(48, " ̈가", [" ̈", "가"])
    28. failures += checkCase(49, " 각", [" ", "각"])
    29. failures += checkCase(50, " ̈각", [" ̈", "각"])
    30. failures += checkCase(51, " ः", [" ः"])
    31. failures += checkCase(52, " ̈ः", [" ̈ः"])
    32. failures += checkCase(53, " ऄ", [" ", "ऄ"])
    33. failures += checkCase(54, " ̈ऄ", [" ̈", "ऄ"])
    34. failures += checkCase(55, " ൎ", [" ", "ൎ"])
    35. failures += checkCase(56, " ̈ൎ", [" ̈", "ൎ"])
    36. failures += checkCase(57, " क", [" ", "क"])
    37. failures += checkCase(58, " ̈क", [" ̈", "क"])
    38. failures += checkCase(59, " ⌚", [" ", "⌚"])
    39. failures += checkCase(60, " ̈⌚", [" ̈", "⌚"])
    40. failures += checkCase(61, " ̀", [" ̀"])
    41. failures += checkCase(62, " ̈̀", [" ̈̀"])
    42. failures += checkCase(63, " ऀ", [" ऀ"])
    43. failures += checkCase(64, " ̈ऀ", [" ̈ऀ"])
    44. failures += checkCase(65, " ्", [" ्"])
    45. failures += checkCase(66, " ्̈", [" ्̈"])
    46. failures += checkCase(67, " ‍", [" ‍"])
    47. failures += checkCase(68, " ̈‍", [" ̈‍"])
    48. failures += checkCase(69, " ͸", [" ", "͸"])
    49. failures += checkCase(70, " ̈͸", [" ̈", "͸"])
    50. failures += checkCase(71, "\r ", ["\r", " "])
    51. failures += checkCase(72, "\r̈ ", ["\r", "̈", " "])
    52. failures += checkCase(73, "\r\r", ["\r", "\r"])
    53. failures += checkCase(74, "\r̈\r", ["\r", "̈", "\r"])
    54. failures += checkCase(75, "\r\n", ["\r\n"])
    55. failures += checkCase(76, "\r̈\n", ["\r", "̈", "\n"])
    56. failures += checkCase(77, "\r", ["\r", ""])
    57. failures += checkCase(78, "\r̈", ["\r", "̈", ""])
    58. failures += checkCase(79, "\r‌", ["\r", "‌"])
    59. failures += checkCase(80, "\r̈‌", ["\r", "̈‌"])
    60. failures += checkCase(81, "\r🇦", ["\r", "🇦"])
    61. failures += checkCase(82, "\r̈🇦", ["\r", "̈", "🇦"])
    62. failures += checkCase(83, "\r؀", ["\r", "؀"])
    63. failures += checkCase(84, "\r̈؀", ["\r", "̈", "؀"])
    64. failures += checkCase(85, "\rਃ", ["\r", "ਃ"])
    65. failures += checkCase(86, "\r̈ਃ", ["\r", "̈ਃ"])
    66. failures += checkCase(87, "\rᄀ", ["\r", "ᄀ"])
    67. failures += checkCase(88, "\r̈ᄀ", ["\r", "̈", "ᄀ"])
    68. failures
    69. }
    graphemecases1.tpzCheck every published Unicode 16 grapheme test rowOpen in Playground
    1. import graphemesupport { checkCase }
    2. export function run() -> int {
    3. let mut failures = 0
    4. failures += checkCase(89, "\rᅠ", ["\r", "ᅠ"])
    5. failures += checkCase(90, "\r̈ᅠ", ["\r", "̈", "ᅠ"])
    6. failures += checkCase(91, "\rᆨ", ["\r", "ᆨ"])
    7. failures += checkCase(92, "\r̈ᆨ", ["\r", "̈", "ᆨ"])
    8. failures += checkCase(93, "\r가", ["\r", "가"])
    9. failures += checkCase(94, "\r̈가", ["\r", "̈", "가"])
    10. failures += checkCase(95, "\r각", ["\r", "각"])
    11. failures += checkCase(96, "\r̈각", ["\r", "̈", "각"])
    12. failures += checkCase(97, "\rः", ["\r", "ः"])
    13. failures += checkCase(98, "\r̈ः", ["\r", "̈ः"])
    14. failures += checkCase(99, "\rऄ", ["\r", "ऄ"])
    15. failures += checkCase(100, "\r̈ऄ", ["\r", "̈", "ऄ"])
    16. failures += checkCase(101, "\rൎ", ["\r", "ൎ"])
    17. failures += checkCase(102, "\r̈ൎ", ["\r", "̈", "ൎ"])
    18. failures += checkCase(103, "\rक", ["\r", "क"])
    19. failures += checkCase(104, "\r̈क", ["\r", "̈", "क"])
    20. failures += checkCase(105, "\r⌚", ["\r", "⌚"])
    21. failures += checkCase(106, "\r̈⌚", ["\r", "̈", "⌚"])
    22. failures += checkCase(107, "\r̀", ["\r", "̀"])
    23. failures += checkCase(108, "\r̈̀", ["\r", "̈̀"])
    24. failures += checkCase(109, "\rऀ", ["\r", "ऀ"])
    25. failures += checkCase(110, "\r̈ऀ", ["\r", "̈ऀ"])
    26. failures += checkCase(111, "\r्", ["\r", "्"])
    27. failures += checkCase(112, "\r्̈", ["\r", "्̈"])
    28. failures += checkCase(113, "\r‍", ["\r", "‍"])
    29. failures += checkCase(114, "\r̈‍", ["\r", "̈‍"])
    30. failures += checkCase(115, "\r͸", ["\r", "͸"])
    31. failures += checkCase(116, "\r̈͸", ["\r", "̈", "͸"])
    32. failures += checkCase(117, "\n ", ["\n", " "])
    33. failures += checkCase(118, "\n̈ ", ["\n", "̈", " "])
    34. failures += checkCase(119, "\n\r", ["\n", "\r"])
    35. failures += checkCase(120, "\n̈\r", ["\n", "̈", "\r"])
    36. failures += checkCase(121, "\n\n", ["\n", "\n"])
    37. failures += checkCase(122, "\n̈\n", ["\n", "̈", "\n"])
    38. failures += checkCase(123, "\n", ["\n", ""])
    39. failures += checkCase(124, "\n̈", ["\n", "̈", ""])
    40. failures += checkCase(125, "\n‌", ["\n", "‌"])
    41. failures += checkCase(126, "\n̈‌", ["\n", "̈‌"])
    42. failures += checkCase(127, "\n🇦", ["\n", "🇦"])
    43. failures += checkCase(128, "\n̈🇦", ["\n", "̈", "🇦"])
    44. failures += checkCase(129, "\n؀", ["\n", "؀"])
    45. failures += checkCase(130, "\n̈؀", ["\n", "̈", "؀"])
    46. failures += checkCase(131, "\nਃ", ["\n", "ਃ"])
    47. failures += checkCase(132, "\n̈ਃ", ["\n", "̈ਃ"])
    48. failures += checkCase(133, "\nᄀ", ["\n", "ᄀ"])
    49. failures += checkCase(134, "\n̈ᄀ", ["\n", "̈", "ᄀ"])
    50. failures += checkCase(135, "\nᅠ", ["\n", "ᅠ"])
    51. failures += checkCase(136, "\n̈ᅠ", ["\n", "̈", "ᅠ"])
    52. failures += checkCase(137, "\nᆨ", ["\n", "ᆨ"])
    53. failures += checkCase(138, "\n̈ᆨ", ["\n", "̈", "ᆨ"])
    54. failures += checkCase(139, "\n가", ["\n", "가"])
    55. failures += checkCase(140, "\n̈가", ["\n", "̈", "가"])
    56. failures += checkCase(141, "\n각", ["\n", "각"])
    57. failures += checkCase(142, "\n̈각", ["\n", "̈", "각"])
    58. failures += checkCase(143, "\nः", ["\n", "ः"])
    59. failures += checkCase(144, "\n̈ः", ["\n", "̈ः"])
    60. failures += checkCase(145, "\nऄ", ["\n", "ऄ"])
    61. failures += checkCase(146, "\n̈ऄ", ["\n", "̈", "ऄ"])
    62. failures += checkCase(147, "\nൎ", ["\n", "ൎ"])
    63. failures += checkCase(148, "\n̈ൎ", ["\n", "̈", "ൎ"])
    64. failures += checkCase(149, "\nक", ["\n", "क"])
    65. failures += checkCase(150, "\n̈क", ["\n", "̈", "क"])
    66. failures += checkCase(151, "\n⌚", ["\n", "⌚"])
    67. failures += checkCase(152, "\n̈⌚", ["\n", "̈", "⌚"])
    68. failures
    69. }
    graphemecases2.tpzCheck every published Unicode 16 grapheme test rowOpen in Playground
    1. import graphemesupport { checkCase }
    2. export function run() -> int {
    3. let mut failures = 0
    4. failures += checkCase(153, "\ǹ", ["\n", "̀"])
    5. failures += checkCase(154, "\n̈̀", ["\n", "̈̀"])
    6. failures += checkCase(155, "\nऀ", ["\n", "ऀ"])
    7. failures += checkCase(156, "\n̈ऀ", ["\n", "̈ऀ"])
    8. failures += checkCase(157, "\n्", ["\n", "्"])
    9. failures += checkCase(158, "\n्̈", ["\n", "्̈"])
    10. failures += checkCase(159, "\n‍", ["\n", "‍"])
    11. failures += checkCase(160, "\n̈‍", ["\n", "̈‍"])
    12. failures += checkCase(161, "\n͸", ["\n", "͸"])
    13. failures += checkCase(162, "\n̈͸", ["\n", "̈", "͸"])
    14. failures += checkCase(163, " ", ["", " "])
    15. failures += checkCase(164, "̈ ", ["", "̈", " "])
    16. failures += checkCase(165, "\r", ["", "\r"])
    17. failures += checkCase(166, "̈\r", ["", "̈", "\r"])
    18. failures += checkCase(167, "\n", ["", "\n"])
    19. failures += checkCase(168, "̈\n", ["", "̈", "\n"])
    20. failures += checkCase(169, "", ["", ""])
    21. failures += checkCase(170, "̈", ["", "̈", ""])
    22. failures += checkCase(171, "‌", ["", "‌"])
    23. failures += checkCase(172, "̈‌", ["", "̈‌"])
    24. failures += checkCase(173, "🇦", ["", "🇦"])
    25. failures += checkCase(174, "̈🇦", ["", "̈", "🇦"])
    26. failures += checkCase(175, "؀", ["", "؀"])
    27. failures += checkCase(176, "̈؀", ["", "̈", "؀"])
    28. failures += checkCase(177, "ਃ", ["", "ਃ"])
    29. failures += checkCase(178, "̈ਃ", ["", "̈ਃ"])
    30. failures += checkCase(179, "ᄀ", ["", "ᄀ"])
    31. failures += checkCase(180, "̈ᄀ", ["", "̈", "ᄀ"])
    32. failures += checkCase(181, "ᅠ", ["", "ᅠ"])
    33. failures += checkCase(182, "̈ᅠ", ["", "̈", "ᅠ"])
    34. failures += checkCase(183, "ᆨ", ["", "ᆨ"])
    35. failures += checkCase(184, "̈ᆨ", ["", "̈", "ᆨ"])
    36. failures += checkCase(185, "가", ["", "가"])
    37. failures += checkCase(186, "̈가", ["", "̈", "가"])
    38. failures += checkCase(187, "각", ["", "각"])
    39. failures += checkCase(188, "̈각", ["", "̈", "각"])
    40. failures += checkCase(189, "ः", ["", "ः"])
    41. failures += checkCase(190, "̈ः", ["", "̈ः"])
    42. failures += checkCase(191, "ऄ", ["", "ऄ"])
    43. failures += checkCase(192, "̈ऄ", ["", "̈", "ऄ"])
    44. failures += checkCase(193, "ൎ", ["", "ൎ"])
    45. failures += checkCase(194, "̈ൎ", ["", "̈", "ൎ"])
    46. failures += checkCase(195, "क", ["", "क"])
    47. failures += checkCase(196, "̈क", ["", "̈", "क"])
    48. failures += checkCase(197, "⌚", ["", "⌚"])
    49. failures += checkCase(198, "̈⌚", ["", "̈", "⌚"])
    50. failures += checkCase(199, "̀", ["", "̀"])
    51. failures += checkCase(200, "̈̀", ["", "̈̀"])
    52. failures += checkCase(201, "ऀ", ["", "ऀ"])
    53. failures += checkCase(202, "̈ऀ", ["", "̈ऀ"])
    54. failures += checkCase(203, "्", ["", "्"])
    55. failures += checkCase(204, "्̈", ["", "्̈"])
    56. failures += checkCase(205, "‍", ["", "‍"])
    57. failures += checkCase(206, "̈‍", ["", "̈‍"])
    58. failures += checkCase(207, "͸", ["", "͸"])
    59. failures += checkCase(208, "̈͸", ["", "̈", "͸"])
    60. failures += checkCase(209, "‌ ", ["‌", " "])
    61. failures += checkCase(210, "‌̈ ", ["‌̈", " "])
    62. failures += checkCase(211, "‌\r", ["‌", "\r"])
    63. failures += checkCase(212, "‌̈\r", ["‌̈", "\r"])
    64. failures += checkCase(213, "‌\n", ["‌", "\n"])
    65. failures += checkCase(214, "‌̈\n", ["‌̈", "\n"])
    66. failures += checkCase(215, "‌", ["‌", ""])
    67. failures += checkCase(216, "‌̈", ["‌̈", ""])
    68. failures
    69. }
    graphemecases3.tpzCheck every published Unicode 16 grapheme test rowOpen in Playground
    1. import graphemesupport { checkCase }
    2. export function run() -> int {
    3. let mut failures = 0
    4. failures += checkCase(217, "‌‌", ["‌‌"])
    5. failures += checkCase(218, "‌̈‌", ["‌̈‌"])
    6. failures += checkCase(219, "‌🇦", ["‌", "🇦"])
    7. failures += checkCase(220, "‌̈🇦", ["‌̈", "🇦"])
    8. failures += checkCase(221, "‌؀", ["‌", "؀"])
    9. failures += checkCase(222, "‌̈؀", ["‌̈", "؀"])
    10. failures += checkCase(223, "‌ਃ", ["‌ਃ"])
    11. failures += checkCase(224, "‌̈ਃ", ["‌̈ਃ"])
    12. failures += checkCase(225, "‌ᄀ", ["‌", "ᄀ"])
    13. failures += checkCase(226, "‌̈ᄀ", ["‌̈", "ᄀ"])
    14. failures += checkCase(227, "‌ᅠ", ["‌", "ᅠ"])
    15. failures += checkCase(228, "‌̈ᅠ", ["‌̈", "ᅠ"])
    16. failures += checkCase(229, "‌ᆨ", ["‌", "ᆨ"])
    17. failures += checkCase(230, "‌̈ᆨ", ["‌̈", "ᆨ"])
    18. failures += checkCase(231, "‌가", ["‌", "가"])
    19. failures += checkCase(232, "‌̈가", ["‌̈", "가"])
    20. failures += checkCase(233, "‌각", ["‌", "각"])
    21. failures += checkCase(234, "‌̈각", ["‌̈", "각"])
    22. failures += checkCase(235, "‌ः", ["‌ः"])
    23. failures += checkCase(236, "‌̈ः", ["‌̈ः"])
    24. failures += checkCase(237, "‌ऄ", ["‌", "ऄ"])
    25. failures += checkCase(238, "‌̈ऄ", ["‌̈", "ऄ"])
    26. failures += checkCase(239, "‌ൎ", ["‌", "ൎ"])
    27. failures += checkCase(240, "‌̈ൎ", ["‌̈", "ൎ"])
    28. failures += checkCase(241, "‌क", ["‌", "क"])
    29. failures += checkCase(242, "‌̈क", ["‌̈", "क"])
    30. failures += checkCase(243, "‌⌚", ["‌", "⌚"])
    31. failures += checkCase(244, "‌̈⌚", ["‌̈", "⌚"])
    32. failures += checkCase(245, "‌̀", ["‌̀"])
    33. failures += checkCase(246, "‌̈̀", ["‌̈̀"])
    34. failures += checkCase(247, "‌ऀ", ["‌ऀ"])
    35. failures += checkCase(248, "‌̈ऀ", ["‌̈ऀ"])
    36. failures += checkCase(249, "‌्", ["‌्"])
    37. failures += checkCase(250, "‌्̈", ["‌्̈"])
    38. failures += checkCase(251, "‌‍", ["‌‍"])
    39. failures += checkCase(252, "‌̈‍", ["‌̈‍"])
    40. failures += checkCase(253, "‌͸", ["‌", "͸"])
    41. failures += checkCase(254, "‌̈͸", ["‌̈", "͸"])
    42. failures += checkCase(255, "🇦 ", ["🇦", " "])
    43. failures += checkCase(256, "🇦̈ ", ["🇦̈", " "])
    44. failures += checkCase(257, "🇦\r", ["🇦", "\r"])
    45. failures += checkCase(258, "🇦̈\r", ["🇦̈", "\r"])
    46. failures += checkCase(259, "🇦\n", ["🇦", "\n"])
    47. failures += checkCase(260, "🇦̈\n", ["🇦̈", "\n"])
    48. failures += checkCase(261, "🇦", ["🇦", ""])
    49. failures += checkCase(262, "🇦̈", ["🇦̈", ""])
    50. failures += checkCase(263, "🇦‌", ["🇦‌"])
    51. failures += checkCase(264, "🇦̈‌", ["🇦̈‌"])
    52. failures += checkCase(265, "🇦🇦", ["🇦🇦"])
    53. failures += checkCase(266, "🇦̈🇦", ["🇦̈", "🇦"])
    54. failures += checkCase(267, "🇦؀", ["🇦", "؀"])
    55. failures += checkCase(268, "🇦̈؀", ["🇦̈", "؀"])
    56. failures += checkCase(269, "🇦ਃ", ["🇦ਃ"])
    57. failures += checkCase(270, "🇦̈ਃ", ["🇦̈ਃ"])
    58. failures += checkCase(271, "🇦ᄀ", ["🇦", "ᄀ"])
    59. failures += checkCase(272, "🇦̈ᄀ", ["🇦̈", "ᄀ"])
    60. failures += checkCase(273, "🇦ᅠ", ["🇦", "ᅠ"])
    61. failures += checkCase(274, "🇦̈ᅠ", ["🇦̈", "ᅠ"])
    62. failures += checkCase(275, "🇦ᆨ", ["🇦", "ᆨ"])
    63. failures += checkCase(276, "🇦̈ᆨ", ["🇦̈", "ᆨ"])
    64. failures += checkCase(277, "🇦가", ["🇦", "가"])
    65. failures += checkCase(278, "🇦̈가", ["🇦̈", "가"])
    66. failures += checkCase(279, "🇦각", ["🇦", "각"])
    67. failures += checkCase(280, "🇦̈각", ["🇦̈", "각"])
    68. failures
    69. }
    graphemecases4.tpzCheck every published Unicode 16 grapheme test rowOpen in Playground
    1. import graphemesupport { checkCase }
    2. export function run() -> int {
    3. let mut failures = 0
    4. failures += checkCase(281, "🇦ः", ["🇦ः"])
    5. failures += checkCase(282, "🇦̈ः", ["🇦̈ः"])
    6. failures += checkCase(283, "🇦ऄ", ["🇦", "ऄ"])
    7. failures += checkCase(284, "🇦̈ऄ", ["🇦̈", "ऄ"])
    8. failures += checkCase(285, "🇦ൎ", ["🇦", "ൎ"])
    9. failures += checkCase(286, "🇦̈ൎ", ["🇦̈", "ൎ"])
    10. failures += checkCase(287, "🇦क", ["🇦", "क"])
    11. failures += checkCase(288, "🇦̈क", ["🇦̈", "क"])
    12. failures += checkCase(289, "🇦⌚", ["🇦", "⌚"])
    13. failures += checkCase(290, "🇦̈⌚", ["🇦̈", "⌚"])
    14. failures += checkCase(291, "🇦̀", ["🇦̀"])
    15. failures += checkCase(292, "🇦̈̀", ["🇦̈̀"])
    16. failures += checkCase(293, "🇦ऀ", ["🇦ऀ"])
    17. failures += checkCase(294, "🇦̈ऀ", ["🇦̈ऀ"])
    18. failures += checkCase(295, "🇦्", ["🇦्"])
    19. failures += checkCase(296, "🇦्̈", ["🇦्̈"])
    20. failures += checkCase(297, "🇦‍", ["🇦‍"])
    21. failures += checkCase(298, "🇦̈‍", ["🇦̈‍"])
    22. failures += checkCase(299, "🇦͸", ["🇦", "͸"])
    23. failures += checkCase(300, "🇦̈͸", ["🇦̈", "͸"])
    24. failures += checkCase(301, "؀ ", ["؀ "])
    25. failures += checkCase(302, "؀̈ ", ["؀̈", " "])
    26. failures += checkCase(303, "؀\r", ["؀", "\r"])
    27. failures += checkCase(304, "؀̈\r", ["؀̈", "\r"])
    28. failures += checkCase(305, "؀\n", ["؀", "\n"])
    29. failures += checkCase(306, "؀̈\n", ["؀̈", "\n"])
    30. failures += checkCase(307, "؀", ["؀", ""])
    31. failures += checkCase(308, "؀̈", ["؀̈", ""])
    32. failures += checkCase(309, "؀‌", ["؀‌"])
    33. failures += checkCase(310, "؀̈‌", ["؀̈‌"])
    34. failures += checkCase(311, "؀🇦", ["؀🇦"])
    35. failures += checkCase(312, "؀̈🇦", ["؀̈", "🇦"])
    36. failures += checkCase(313, "؀؀", ["؀؀"])
    37. failures += checkCase(314, "؀̈؀", ["؀̈", "؀"])
    38. failures += checkCase(315, "؀ਃ", ["؀ਃ"])
    39. failures += checkCase(316, "؀̈ਃ", ["؀̈ਃ"])
    40. failures += checkCase(317, "؀ᄀ", ["؀ᄀ"])
    41. failures += checkCase(318, "؀̈ᄀ", ["؀̈", "ᄀ"])
    42. failures += checkCase(319, "؀ᅠ", ["؀ᅠ"])
    43. failures += checkCase(320, "؀̈ᅠ", ["؀̈", "ᅠ"])
    44. failures += checkCase(321, "؀ᆨ", ["؀ᆨ"])
    45. failures += checkCase(322, "؀̈ᆨ", ["؀̈", "ᆨ"])
    46. failures += checkCase(323, "؀가", ["؀가"])
    47. failures += checkCase(324, "؀̈가", ["؀̈", "가"])
    48. failures += checkCase(325, "؀각", ["؀각"])
    49. failures += checkCase(326, "؀̈각", ["؀̈", "각"])
    50. failures += checkCase(327, "؀ः", ["؀ः"])
    51. failures += checkCase(328, "؀̈ः", ["؀̈ः"])
    52. failures += checkCase(329, "؀ऄ", ["؀ऄ"])
    53. failures += checkCase(330, "؀̈ऄ", ["؀̈", "ऄ"])
    54. failures += checkCase(331, "؀ൎ", ["؀ൎ"])
    55. failures += checkCase(332, "؀̈ൎ", ["؀̈", "ൎ"])
    56. failures += checkCase(333, "؀क", ["؀क"])
    57. failures += checkCase(334, "؀̈क", ["؀̈", "क"])
    58. failures += checkCase(335, "؀⌚", ["؀⌚"])
    59. failures += checkCase(336, "؀̈⌚", ["؀̈", "⌚"])
    60. failures += checkCase(337, "؀̀", ["؀̀"])
    61. failures += checkCase(338, "؀̈̀", ["؀̈̀"])
    62. failures += checkCase(339, "؀ऀ", ["؀ऀ"])
    63. failures += checkCase(340, "؀̈ऀ", ["؀̈ऀ"])
    64. failures += checkCase(341, "؀्", ["؀्"])
    65. failures += checkCase(342, "؀्̈", ["؀्̈"])
    66. failures += checkCase(343, "؀‍", ["؀‍"])
    67. failures += checkCase(344, "؀̈‍", ["؀̈‍"])
    68. failures
    69. }
    graphemecases5.tpzCheck every published Unicode 16 grapheme test rowOpen in Playground
    1. import graphemesupport { checkCase }
    2. export function run() -> int {
    3. let mut failures = 0
    4. failures += checkCase(345, "؀͸", ["؀͸"])
    5. failures += checkCase(346, "؀̈͸", ["؀̈", "͸"])
    6. failures += checkCase(347, "ਃ ", ["ਃ", " "])
    7. failures += checkCase(348, "ਃ̈ ", ["ਃ̈", " "])
    8. failures += checkCase(349, "ਃ\r", ["ਃ", "\r"])
    9. failures += checkCase(350, "ਃ̈\r", ["ਃ̈", "\r"])
    10. failures += checkCase(351, "ਃ\n", ["ਃ", "\n"])
    11. failures += checkCase(352, "ਃ̈\n", ["ਃ̈", "\n"])
    12. failures += checkCase(353, "ਃ", ["ਃ", ""])
    13. failures += checkCase(354, "ਃ̈", ["ਃ̈", ""])
    14. failures += checkCase(355, "ਃ‌", ["ਃ‌"])
    15. failures += checkCase(356, "ਃ̈‌", ["ਃ̈‌"])
    16. failures += checkCase(357, "ਃ🇦", ["ਃ", "🇦"])
    17. failures += checkCase(358, "ਃ̈🇦", ["ਃ̈", "🇦"])
    18. failures += checkCase(359, "ਃ؀", ["ਃ", "؀"])
    19. failures += checkCase(360, "ਃ̈؀", ["ਃ̈", "؀"])
    20. failures += checkCase(361, "ਃਃ", ["ਃਃ"])
    21. failures += checkCase(362, "ਃ̈ਃ", ["ਃ̈ਃ"])
    22. failures += checkCase(363, "ਃᄀ", ["ਃ", "ᄀ"])
    23. failures += checkCase(364, "ਃ̈ᄀ", ["ਃ̈", "ᄀ"])
    24. failures += checkCase(365, "ਃᅠ", ["ਃ", "ᅠ"])
    25. failures += checkCase(366, "ਃ̈ᅠ", ["ਃ̈", "ᅠ"])
    26. failures += checkCase(367, "ਃᆨ", ["ਃ", "ᆨ"])
    27. failures += checkCase(368, "ਃ̈ᆨ", ["ਃ̈", "ᆨ"])
    28. failures += checkCase(369, "ਃ가", ["ਃ", "가"])
    29. failures += checkCase(370, "ਃ̈가", ["ਃ̈", "가"])
    30. failures += checkCase(371, "ਃ각", ["ਃ", "각"])
    31. failures += checkCase(372, "ਃ̈각", ["ਃ̈", "각"])
    32. failures += checkCase(373, "ਃः", ["ਃः"])
    33. failures += checkCase(374, "ਃ̈ः", ["ਃ̈ः"])
    34. failures += checkCase(375, "ਃऄ", ["ਃ", "ऄ"])
    35. failures += checkCase(376, "ਃ̈ऄ", ["ਃ̈", "ऄ"])
    36. failures += checkCase(377, "ਃൎ", ["ਃ", "ൎ"])
    37. failures += checkCase(378, "ਃ̈ൎ", ["ਃ̈", "ൎ"])
    38. failures += checkCase(379, "ਃक", ["ਃ", "क"])
    39. failures += checkCase(380, "ਃ̈क", ["ਃ̈", "क"])
    40. failures += checkCase(381, "ਃ⌚", ["ਃ", "⌚"])
    41. failures += checkCase(382, "ਃ̈⌚", ["ਃ̈", "⌚"])
    42. failures += checkCase(383, "ਃ̀", ["ਃ̀"])
    43. failures += checkCase(384, "ਃ̈̀", ["ਃ̈̀"])
    44. failures += checkCase(385, "ਃऀ", ["ਃऀ"])
    45. failures += checkCase(386, "ਃ̈ऀ", ["ਃ̈ऀ"])
    46. failures += checkCase(387, "ਃ्", ["ਃ्"])
    47. failures += checkCase(388, "ਃ्̈", ["ਃ्̈"])
    48. failures += checkCase(389, "ਃ‍", ["ਃ‍"])
    49. failures += checkCase(390, "ਃ̈‍", ["ਃ̈‍"])
    50. failures += checkCase(391, "ਃ͸", ["ਃ", "͸"])
    51. failures += checkCase(392, "ਃ̈͸", ["ਃ̈", "͸"])
    52. failures += checkCase(393, "ᄀ ", ["ᄀ", " "])
    53. failures += checkCase(394, "ᄀ̈ ", ["ᄀ̈", " "])
    54. failures += checkCase(395, "ᄀ\r", ["ᄀ", "\r"])
    55. failures += checkCase(396, "ᄀ̈\r", ["ᄀ̈", "\r"])
    56. failures += checkCase(397, "ᄀ\n", ["ᄀ", "\n"])
    57. failures += checkCase(398, "ᄀ̈\n", ["ᄀ̈", "\n"])
    58. failures += checkCase(399, "ᄀ", ["ᄀ", ""])
    59. failures += checkCase(400, "ᄀ̈", ["ᄀ̈", ""])
    60. failures += checkCase(401, "ᄀ‌", ["ᄀ‌"])
    61. failures += checkCase(402, "ᄀ̈‌", ["ᄀ̈‌"])
    62. failures += checkCase(403, "ᄀ🇦", ["ᄀ", "🇦"])
    63. failures += checkCase(404, "ᄀ̈🇦", ["ᄀ̈", "🇦"])
    64. failures += checkCase(405, "ᄀ؀", ["ᄀ", "؀"])
    65. failures += checkCase(406, "ᄀ̈؀", ["ᄀ̈", "؀"])
    66. failures += checkCase(407, "ᄀਃ", ["ᄀਃ"])
    67. failures += checkCase(408, "ᄀ̈ਃ", ["ᄀ̈ਃ"])
    68. failures
    69. }
    graphemecases6.tpzCheck every published Unicode 16 grapheme test rowOpen in Playground
    1. import graphemesupport { checkCase }
    2. export function run() -> int {
    3. let mut failures = 0
    4. failures += checkCase(409, "ᄀᄀ", ["ᄀᄀ"])
    5. failures += checkCase(410, "ᄀ̈ᄀ", ["ᄀ̈", "ᄀ"])
    6. failures += checkCase(411, "ᄀᅠ", ["ᄀᅠ"])
    7. failures += checkCase(412, "ᄀ̈ᅠ", ["ᄀ̈", "ᅠ"])
    8. failures += checkCase(413, "ᄀᆨ", ["ᄀ", "ᆨ"])
    9. failures += checkCase(414, "ᄀ̈ᆨ", ["ᄀ̈", "ᆨ"])
    10. failures += checkCase(415, "ᄀ가", ["ᄀ가"])
    11. failures += checkCase(416, "ᄀ̈가", ["ᄀ̈", "가"])
    12. failures += checkCase(417, "ᄀ각", ["ᄀ각"])
    13. failures += checkCase(418, "ᄀ̈각", ["ᄀ̈", "각"])
    14. failures += checkCase(419, "ᄀः", ["ᄀः"])
    15. failures += checkCase(420, "ᄀ̈ः", ["ᄀ̈ः"])
    16. failures += checkCase(421, "ᄀऄ", ["ᄀ", "ऄ"])
    17. failures += checkCase(422, "ᄀ̈ऄ", ["ᄀ̈", "ऄ"])
    18. failures += checkCase(423, "ᄀൎ", ["ᄀ", "ൎ"])
    19. failures += checkCase(424, "ᄀ̈ൎ", ["ᄀ̈", "ൎ"])
    20. failures += checkCase(425, "ᄀक", ["ᄀ", "क"])
    21. failures += checkCase(426, "ᄀ̈क", ["ᄀ̈", "क"])
    22. failures += checkCase(427, "ᄀ⌚", ["ᄀ", "⌚"])
    23. failures += checkCase(428, "ᄀ̈⌚", ["ᄀ̈", "⌚"])
    24. failures += checkCase(429, "ᄀ̀", ["ᄀ̀"])
    25. failures += checkCase(430, "ᄀ̈̀", ["ᄀ̈̀"])
    26. failures += checkCase(431, "ᄀऀ", ["ᄀऀ"])
    27. failures += checkCase(432, "ᄀ̈ऀ", ["ᄀ̈ऀ"])
    28. failures += checkCase(433, "ᄀ्", ["ᄀ्"])
    29. failures += checkCase(434, "ᄀ्̈", ["ᄀ्̈"])
    30. failures += checkCase(435, "ᄀ‍", ["ᄀ‍"])
    31. failures += checkCase(436, "ᄀ̈‍", ["ᄀ̈‍"])
    32. failures += checkCase(437, "ᄀ͸", ["ᄀ", "͸"])
    33. failures += checkCase(438, "ᄀ̈͸", ["ᄀ̈", "͸"])
    34. failures += checkCase(439, "ᅠ ", ["ᅠ", " "])
    35. failures += checkCase(440, "ᅠ̈ ", ["ᅠ̈", " "])
    36. failures += checkCase(441, "ᅠ\r", ["ᅠ", "\r"])
    37. failures += checkCase(442, "ᅠ̈\r", ["ᅠ̈", "\r"])
    38. failures += checkCase(443, "ᅠ\n", ["ᅠ", "\n"])
    39. failures += checkCase(444, "ᅠ̈\n", ["ᅠ̈", "\n"])
    40. failures += checkCase(445, "ᅠ", ["ᅠ", ""])
    41. failures += checkCase(446, "ᅠ̈", ["ᅠ̈", ""])
    42. failures += checkCase(447, "ᅠ‌", ["ᅠ‌"])
    43. failures += checkCase(448, "ᅠ̈‌", ["ᅠ̈‌"])
    44. failures += checkCase(449, "ᅠ🇦", ["ᅠ", "🇦"])
    45. failures += checkCase(450, "ᅠ̈🇦", ["ᅠ̈", "🇦"])
    46. failures += checkCase(451, "ᅠ؀", ["ᅠ", "؀"])
    47. failures += checkCase(452, "ᅠ̈؀", ["ᅠ̈", "؀"])
    48. failures += checkCase(453, "ᅠਃ", ["ᅠਃ"])
    49. failures += checkCase(454, "ᅠ̈ਃ", ["ᅠ̈ਃ"])
    50. failures += checkCase(455, "ᅠᄀ", ["ᅠ", "ᄀ"])
    51. failures += checkCase(456, "ᅠ̈ᄀ", ["ᅠ̈", "ᄀ"])
    52. failures += checkCase(457, "ᅠᅠ", ["ᅠᅠ"])
    53. failures += checkCase(458, "ᅠ̈ᅠ", ["ᅠ̈", "ᅠ"])
    54. failures += checkCase(459, "ᅠᆨ", ["ᅠᆨ"])
    55. failures += checkCase(460, "ᅠ̈ᆨ", ["ᅠ̈", "ᆨ"])
    56. failures += checkCase(461, "ᅠ가", ["ᅠ", "가"])
    57. failures += checkCase(462, "ᅠ̈가", ["ᅠ̈", "가"])
    58. failures += checkCase(463, "ᅠ각", ["ᅠ", "각"])
    59. failures += checkCase(464, "ᅠ̈각", ["ᅠ̈", "각"])
    60. failures += checkCase(465, "ᅠः", ["ᅠः"])
    61. failures += checkCase(466, "ᅠ̈ः", ["ᅠ̈ः"])
    62. failures += checkCase(467, "ᅠऄ", ["ᅠ", "ऄ"])
    63. failures += checkCase(468, "ᅠ̈ऄ", ["ᅠ̈", "ऄ"])
    64. failures += checkCase(469, "ᅠൎ", ["ᅠ", "ൎ"])
    65. failures += checkCase(470, "ᅠ̈ൎ", ["ᅠ̈", "ൎ"])
    66. failures += checkCase(471, "ᅠक", ["ᅠ", "क"])
    67. failures += checkCase(472, "ᅠ̈क", ["ᅠ̈", "क"])
    68. failures
    69. }
    graphemecases7.tpzCheck every published Unicode 16 grapheme test rowOpen in Playground
    1. import graphemesupport { checkCase }
    2. export function run() -> int {
    3. let mut failures = 0
    4. failures += checkCase(473, "ᅠ⌚", ["ᅠ", "⌚"])
    5. failures += checkCase(474, "ᅠ̈⌚", ["ᅠ̈", "⌚"])
    6. failures += checkCase(475, "ᅠ̀", ["ᅠ̀"])
    7. failures += checkCase(476, "ᅠ̈̀", ["ᅠ̈̀"])
    8. failures += checkCase(477, "ᅠऀ", ["ᅠऀ"])
    9. failures += checkCase(478, "ᅠ̈ऀ", ["ᅠ̈ऀ"])
    10. failures += checkCase(479, "ᅠ्", ["ᅠ्"])
    11. failures += checkCase(480, "ᅠ्̈", ["ᅠ्̈"])
    12. failures += checkCase(481, "ᅠ‍", ["ᅠ‍"])
    13. failures += checkCase(482, "ᅠ̈‍", ["ᅠ̈‍"])
    14. failures += checkCase(483, "ᅠ͸", ["ᅠ", "͸"])
    15. failures += checkCase(484, "ᅠ̈͸", ["ᅠ̈", "͸"])
    16. failures += checkCase(485, "ᆨ ", ["ᆨ", " "])
    17. failures += checkCase(486, "ᆨ̈ ", ["ᆨ̈", " "])
    18. failures += checkCase(487, "ᆨ\r", ["ᆨ", "\r"])
    19. failures += checkCase(488, "ᆨ̈\r", ["ᆨ̈", "\r"])
    20. failures += checkCase(489, "ᆨ\n", ["ᆨ", "\n"])
    21. failures += checkCase(490, "ᆨ̈\n", ["ᆨ̈", "\n"])
    22. failures += checkCase(491, "ᆨ", ["ᆨ", ""])
    23. failures += checkCase(492, "ᆨ̈", ["ᆨ̈", ""])
    24. failures += checkCase(493, "ᆨ‌", ["ᆨ‌"])
    25. failures += checkCase(494, "ᆨ̈‌", ["ᆨ̈‌"])
    26. failures += checkCase(495, "ᆨ🇦", ["ᆨ", "🇦"])
    27. failures += checkCase(496, "ᆨ̈🇦", ["ᆨ̈", "🇦"])
    28. failures += checkCase(497, "ᆨ؀", ["ᆨ", "؀"])
    29. failures += checkCase(498, "ᆨ̈؀", ["ᆨ̈", "؀"])
    30. failures += checkCase(499, "ᆨਃ", ["ᆨਃ"])
    31. failures += checkCase(500, "ᆨ̈ਃ", ["ᆨ̈ਃ"])
    32. failures += checkCase(501, "ᆨᄀ", ["ᆨ", "ᄀ"])
    33. failures += checkCase(502, "ᆨ̈ᄀ", ["ᆨ̈", "ᄀ"])
    34. failures += checkCase(503, "ᆨᅠ", ["ᆨ", "ᅠ"])
    35. failures += checkCase(504, "ᆨ̈ᅠ", ["ᆨ̈", "ᅠ"])
    36. failures += checkCase(505, "ᆨᆨ", ["ᆨᆨ"])
    37. failures += checkCase(506, "ᆨ̈ᆨ", ["ᆨ̈", "ᆨ"])
    38. failures += checkCase(507, "ᆨ가", ["ᆨ", "가"])
    39. failures += checkCase(508, "ᆨ̈가", ["ᆨ̈", "가"])
    40. failures += checkCase(509, "ᆨ각", ["ᆨ", "각"])
    41. failures += checkCase(510, "ᆨ̈각", ["ᆨ̈", "각"])
    42. failures += checkCase(511, "ᆨः", ["ᆨः"])
    43. failures += checkCase(512, "ᆨ̈ः", ["ᆨ̈ः"])
    44. failures += checkCase(513, "ᆨऄ", ["ᆨ", "ऄ"])
    45. failures += checkCase(514, "ᆨ̈ऄ", ["ᆨ̈", "ऄ"])
    46. failures += checkCase(515, "ᆨൎ", ["ᆨ", "ൎ"])
    47. failures += checkCase(516, "ᆨ̈ൎ", ["ᆨ̈", "ൎ"])
    48. failures += checkCase(517, "ᆨक", ["ᆨ", "क"])
    49. failures += checkCase(518, "ᆨ̈क", ["ᆨ̈", "क"])
    50. failures += checkCase(519, "ᆨ⌚", ["ᆨ", "⌚"])
    51. failures += checkCase(520, "ᆨ̈⌚", ["ᆨ̈", "⌚"])
    52. failures += checkCase(521, "ᆨ̀", ["ᆨ̀"])
    53. failures += checkCase(522, "ᆨ̈̀", ["ᆨ̈̀"])
    54. failures += checkCase(523, "ᆨऀ", ["ᆨऀ"])
    55. failures += checkCase(524, "ᆨ̈ऀ", ["ᆨ̈ऀ"])
    56. failures += checkCase(525, "ᆨ्", ["ᆨ्"])
    57. failures += checkCase(526, "ᆨ्̈", ["ᆨ्̈"])
    58. failures += checkCase(527, "ᆨ‍", ["ᆨ‍"])
    59. failures += checkCase(528, "ᆨ̈‍", ["ᆨ̈‍"])
    60. failures += checkCase(529, "ᆨ͸", ["ᆨ", "͸"])
    61. failures += checkCase(530, "ᆨ̈͸", ["ᆨ̈", "͸"])
    62. failures += checkCase(531, "가 ", ["가", " "])
    63. failures += checkCase(532, "가̈ ", ["가̈", " "])
    64. failures += checkCase(533, "가\r", ["가", "\r"])
    65. failures += checkCase(534, "가̈\r", ["가̈", "\r"])
    66. failures += checkCase(535, "가\n", ["가", "\n"])
    67. failures += checkCase(536, "가̈\n", ["가̈", "\n"])
    68. failures
    69. }
    graphemecases8.tpzCheck every published Unicode 16 grapheme test rowOpen in Playground
    1. import graphemesupport { checkCase }
    2. export function run() -> int {
    3. let mut failures = 0
    4. failures += checkCase(537, "가", ["가", ""])
    5. failures += checkCase(538, "가̈", ["가̈", ""])
    6. failures += checkCase(539, "가‌", ["가‌"])
    7. failures += checkCase(540, "가̈‌", ["가̈‌"])
    8. failures += checkCase(541, "가🇦", ["가", "🇦"])
    9. failures += checkCase(542, "가̈🇦", ["가̈", "🇦"])
    10. failures += checkCase(543, "가؀", ["가", "؀"])
    11. failures += checkCase(544, "가̈؀", ["가̈", "؀"])
    12. failures += checkCase(545, "가ਃ", ["가ਃ"])
    13. failures += checkCase(546, "가̈ਃ", ["가̈ਃ"])
    14. failures += checkCase(547, "가ᄀ", ["가", "ᄀ"])
    15. failures += checkCase(548, "가̈ᄀ", ["가̈", "ᄀ"])
    16. failures += checkCase(549, "가ᅠ", ["가ᅠ"])
    17. failures += checkCase(550, "가̈ᅠ", ["가̈", "ᅠ"])
    18. failures += checkCase(551, "각", ["각"])
    19. failures += checkCase(552, "가̈ᆨ", ["가̈", "ᆨ"])
    20. failures += checkCase(553, "가가", ["가", "가"])
    21. failures += checkCase(554, "가̈가", ["가̈", "가"])
    22. failures += checkCase(555, "가각", ["가", "각"])
    23. failures += checkCase(556, "가̈각", ["가̈", "각"])
    24. failures += checkCase(557, "가ः", ["가ः"])
    25. failures += checkCase(558, "가̈ः", ["가̈ः"])
    26. failures += checkCase(559, "가ऄ", ["가", "ऄ"])
    27. failures += checkCase(560, "가̈ऄ", ["가̈", "ऄ"])
    28. failures += checkCase(561, "가ൎ", ["가", "ൎ"])
    29. failures += checkCase(562, "가̈ൎ", ["가̈", "ൎ"])
    30. failures += checkCase(563, "가क", ["가", "क"])
    31. failures += checkCase(564, "가̈क", ["가̈", "क"])
    32. failures += checkCase(565, "가⌚", ["가", "⌚"])
    33. failures += checkCase(566, "가̈⌚", ["가̈", "⌚"])
    34. failures += checkCase(567, "가̀", ["가̀"])
    35. failures += checkCase(568, "가̈̀", ["가̈̀"])
    36. failures += checkCase(569, "가ऀ", ["가ऀ"])
    37. failures += checkCase(570, "가̈ऀ", ["가̈ऀ"])
    38. failures += checkCase(571, "가्", ["가्"])
    39. failures += checkCase(572, "가्̈", ["가्̈"])
    40. failures += checkCase(573, "가‍", ["가‍"])
    41. failures += checkCase(574, "가̈‍", ["가̈‍"])
    42. failures += checkCase(575, "가͸", ["가", "͸"])
    43. failures += checkCase(576, "가̈͸", ["가̈", "͸"])
    44. failures += checkCase(577, "각 ", ["각", " "])
    45. failures += checkCase(578, "각̈ ", ["각̈", " "])
    46. failures += checkCase(579, "각\r", ["각", "\r"])
    47. failures += checkCase(580, "각̈\r", ["각̈", "\r"])
    48. failures += checkCase(581, "각\n", ["각", "\n"])
    49. failures += checkCase(582, "각̈\n", ["각̈", "\n"])
    50. failures += checkCase(583, "각", ["각", ""])
    51. failures += checkCase(584, "각̈", ["각̈", ""])
    52. failures += checkCase(585, "각‌", ["각‌"])
    53. failures += checkCase(586, "각̈‌", ["각̈‌"])
    54. failures += checkCase(587, "각🇦", ["각", "🇦"])
    55. failures += checkCase(588, "각̈🇦", ["각̈", "🇦"])
    56. failures += checkCase(589, "각؀", ["각", "؀"])
    57. failures += checkCase(590, "각̈؀", ["각̈", "؀"])
    58. failures += checkCase(591, "각ਃ", ["각ਃ"])
    59. failures += checkCase(592, "각̈ਃ", ["각̈ਃ"])
    60. failures += checkCase(593, "각ᄀ", ["각", "ᄀ"])
    61. failures += checkCase(594, "각̈ᄀ", ["각̈", "ᄀ"])
    62. failures += checkCase(595, "각ᅠ", ["각", "ᅠ"])
    63. failures += checkCase(596, "각̈ᅠ", ["각̈", "ᅠ"])
    64. failures += checkCase(597, "각ᆨ", ["각ᆨ"])
    65. failures += checkCase(598, "각̈ᆨ", ["각̈", "ᆨ"])
    66. failures += checkCase(599, "각가", ["각", "가"])
    67. failures += checkCase(600, "각̈가", ["각̈", "가"])
    68. failures
    69. }
    graphemecases9.tpzCheck every published Unicode 16 grapheme test rowOpen in Playground
    1. import graphemesupport { checkCase }
    2. export function run() -> int {
    3. let mut failures = 0
    4. failures += checkCase(601, "각각", ["각", "각"])
    5. failures += checkCase(602, "각̈각", ["각̈", "각"])
    6. failures += checkCase(603, "각ः", ["각ः"])
    7. failures += checkCase(604, "각̈ः", ["각̈ः"])
    8. failures += checkCase(605, "각ऄ", ["각", "ऄ"])
    9. failures += checkCase(606, "각̈ऄ", ["각̈", "ऄ"])
    10. failures += checkCase(607, "각ൎ", ["각", "ൎ"])
    11. failures += checkCase(608, "각̈ൎ", ["각̈", "ൎ"])
    12. failures += checkCase(609, "각क", ["각", "क"])
    13. failures += checkCase(610, "각̈क", ["각̈", "क"])
    14. failures += checkCase(611, "각⌚", ["각", "⌚"])
    15. failures += checkCase(612, "각̈⌚", ["각̈", "⌚"])
    16. failures += checkCase(613, "각̀", ["각̀"])
    17. failures += checkCase(614, "각̈̀", ["각̈̀"])
    18. failures += checkCase(615, "각ऀ", ["각ऀ"])
    19. failures += checkCase(616, "각̈ऀ", ["각̈ऀ"])
    20. failures += checkCase(617, "각्", ["각्"])
    21. failures += checkCase(618, "각्̈", ["각्̈"])
    22. failures += checkCase(619, "각‍", ["각‍"])
    23. failures += checkCase(620, "각̈‍", ["각̈‍"])
    24. failures += checkCase(621, "각͸", ["각", "͸"])
    25. failures += checkCase(622, "각̈͸", ["각̈", "͸"])
    26. failures += checkCase(623, "ः ", ["ः", " "])
    27. failures += checkCase(624, "ः̈ ", ["ः̈", " "])
    28. failures += checkCase(625, "ः\r", ["ः", "\r"])
    29. failures += checkCase(626, "ः̈\r", ["ः̈", "\r"])
    30. failures += checkCase(627, "ः\n", ["ः", "\n"])
    31. failures += checkCase(628, "ः̈\n", ["ः̈", "\n"])
    32. failures += checkCase(629, "ः", ["ः", ""])
    33. failures += checkCase(630, "ः̈", ["ः̈", ""])
    34. failures += checkCase(631, "ः‌", ["ः‌"])
    35. failures += checkCase(632, "ः̈‌", ["ः̈‌"])
    36. failures += checkCase(633, "ः🇦", ["ः", "🇦"])
    37. failures += checkCase(634, "ः̈🇦", ["ः̈", "🇦"])
    38. failures += checkCase(635, "ः؀", ["ः", "؀"])
    39. failures += checkCase(636, "ः̈؀", ["ः̈", "؀"])
    40. failures += checkCase(637, "ःਃ", ["ःਃ"])
    41. failures += checkCase(638, "ः̈ਃ", ["ः̈ਃ"])
    42. failures += checkCase(639, "ःᄀ", ["ः", "ᄀ"])
    43. failures += checkCase(640, "ः̈ᄀ", ["ः̈", "ᄀ"])
    44. failures += checkCase(641, "ःᅠ", ["ः", "ᅠ"])
    45. failures += checkCase(642, "ः̈ᅠ", ["ः̈", "ᅠ"])
    46. failures += checkCase(643, "ःᆨ", ["ः", "ᆨ"])
    47. failures += checkCase(644, "ः̈ᆨ", ["ः̈", "ᆨ"])
    48. failures += checkCase(645, "ः가", ["ः", "가"])
    49. failures += checkCase(646, "ः̈가", ["ः̈", "가"])
    50. failures += checkCase(647, "ः각", ["ः", "각"])
    51. failures += checkCase(648, "ः̈각", ["ः̈", "각"])
    52. failures += checkCase(649, "ःः", ["ःः"])
    53. failures += checkCase(650, "ः̈ः", ["ः̈ः"])
    54. failures += checkCase(651, "ःऄ", ["ः", "ऄ"])
    55. failures += checkCase(652, "ः̈ऄ", ["ः̈", "ऄ"])
    56. failures += checkCase(653, "ःൎ", ["ः", "ൎ"])
    57. failures += checkCase(654, "ः̈ൎ", ["ः̈", "ൎ"])
    58. failures += checkCase(655, "ःक", ["ः", "क"])
    59. failures += checkCase(656, "ः̈क", ["ः̈", "क"])
    60. failures += checkCase(657, "ः⌚", ["ः", "⌚"])
    61. failures += checkCase(658, "ः̈⌚", ["ः̈", "⌚"])
    62. failures += checkCase(659, "ः̀", ["ः̀"])
    63. failures += checkCase(660, "ः̈̀", ["ः̈̀"])
    64. failures += checkCase(661, "ःऀ", ["ःऀ"])
    65. failures += checkCase(662, "ः̈ऀ", ["ः̈ऀ"])
    66. failures += checkCase(663, "ः्", ["ः्"])
    67. failures += checkCase(664, "ः्̈", ["ः्̈"])
    68. failures
    69. }
    graphemecases10.tpzCheck every published Unicode 16 grapheme test rowOpen in Playground
    1. import graphemesupport { checkCase }
    2. export function run() -> int {
    3. let mut failures = 0
    4. failures += checkCase(665, "ः‍", ["ः‍"])
    5. failures += checkCase(666, "ः̈‍", ["ः̈‍"])
    6. failures += checkCase(667, "ः͸", ["ः", "͸"])
    7. failures += checkCase(668, "ः̈͸", ["ः̈", "͸"])
    8. failures += checkCase(669, "ऄ ", ["ऄ", " "])
    9. failures += checkCase(670, "ऄ̈ ", ["ऄ̈", " "])
    10. failures += checkCase(671, "ऄ\r", ["ऄ", "\r"])
    11. failures += checkCase(672, "ऄ̈\r", ["ऄ̈", "\r"])
    12. failures += checkCase(673, "ऄ\n", ["ऄ", "\n"])
    13. failures += checkCase(674, "ऄ̈\n", ["ऄ̈", "\n"])
    14. failures += checkCase(675, "ऄ", ["ऄ", ""])
    15. failures += checkCase(676, "ऄ̈", ["ऄ̈", ""])
    16. failures += checkCase(677, "ऄ‌", ["ऄ‌"])
    17. failures += checkCase(678, "ऄ̈‌", ["ऄ̈‌"])
    18. failures += checkCase(679, "ऄ🇦", ["ऄ", "🇦"])
    19. failures += checkCase(680, "ऄ̈🇦", ["ऄ̈", "🇦"])
    20. failures += checkCase(681, "ऄ؀", ["ऄ", "؀"])
    21. failures += checkCase(682, "ऄ̈؀", ["ऄ̈", "؀"])
    22. failures += checkCase(683, "ऄਃ", ["ऄਃ"])
    23. failures += checkCase(684, "ऄ̈ਃ", ["ऄ̈ਃ"])
    24. failures += checkCase(685, "ऄᄀ", ["ऄ", "ᄀ"])
    25. failures += checkCase(686, "ऄ̈ᄀ", ["ऄ̈", "ᄀ"])
    26. failures += checkCase(687, "ऄᅠ", ["ऄ", "ᅠ"])
    27. failures += checkCase(688, "ऄ̈ᅠ", ["ऄ̈", "ᅠ"])
    28. failures += checkCase(689, "ऄᆨ", ["ऄ", "ᆨ"])
    29. failures += checkCase(690, "ऄ̈ᆨ", ["ऄ̈", "ᆨ"])
    30. failures += checkCase(691, "ऄ가", ["ऄ", "가"])
    31. failures += checkCase(692, "ऄ̈가", ["ऄ̈", "가"])
    32. failures += checkCase(693, "ऄ각", ["ऄ", "각"])
    33. failures += checkCase(694, "ऄ̈각", ["ऄ̈", "각"])
    34. failures += checkCase(695, "ऄः", ["ऄः"])
    35. failures += checkCase(696, "ऄ̈ः", ["ऄ̈ः"])
    36. failures += checkCase(697, "ऄऄ", ["ऄ", "ऄ"])
    37. failures += checkCase(698, "ऄ̈ऄ", ["ऄ̈", "ऄ"])
    38. failures += checkCase(699, "ऄൎ", ["ऄ", "ൎ"])
    39. failures += checkCase(700, "ऄ̈ൎ", ["ऄ̈", "ൎ"])
    40. failures += checkCase(701, "ऄक", ["ऄ", "क"])
    41. failures += checkCase(702, "ऄ̈क", ["ऄ̈", "क"])
    42. failures += checkCase(703, "ऄ⌚", ["ऄ", "⌚"])
    43. failures += checkCase(704, "ऄ̈⌚", ["ऄ̈", "⌚"])
    44. failures += checkCase(705, "ऄ̀", ["ऄ̀"])
    45. failures += checkCase(706, "ऄ̈̀", ["ऄ̈̀"])
    46. failures += checkCase(707, "ऄऀ", ["ऄऀ"])
    47. failures += checkCase(708, "ऄ̈ऀ", ["ऄ̈ऀ"])
    48. failures += checkCase(709, "ऄ्", ["ऄ्"])
    49. failures += checkCase(710, "ऄ्̈", ["ऄ्̈"])
    50. failures += checkCase(711, "ऄ‍", ["ऄ‍"])
    51. failures += checkCase(712, "ऄ̈‍", ["ऄ̈‍"])
    52. failures += checkCase(713, "ऄ͸", ["ऄ", "͸"])
    53. failures += checkCase(714, "ऄ̈͸", ["ऄ̈", "͸"])
    54. failures += checkCase(715, "ൎ ", ["ൎ "])
    55. failures += checkCase(716, "ൎ̈ ", ["ൎ̈", " "])
    56. failures += checkCase(717, "ൎ\r", ["ൎ", "\r"])
    57. failures += checkCase(718, "ൎ̈\r", ["ൎ̈", "\r"])
    58. failures += checkCase(719, "ൎ\n", ["ൎ", "\n"])
    59. failures += checkCase(720, "ൎ̈\n", ["ൎ̈", "\n"])
    60. failures += checkCase(721, "ൎ", ["ൎ", ""])
    61. failures += checkCase(722, "ൎ̈", ["ൎ̈", ""])
    62. failures += checkCase(723, "ൎ‌", ["ൎ‌"])
    63. failures += checkCase(724, "ൎ̈‌", ["ൎ̈‌"])
    64. failures += checkCase(725, "ൎ🇦", ["ൎ🇦"])
    65. failures += checkCase(726, "ൎ̈🇦", ["ൎ̈", "🇦"])
    66. failures += checkCase(727, "ൎ؀", ["ൎ؀"])
    67. failures += checkCase(728, "ൎ̈؀", ["ൎ̈", "؀"])
    68. failures
    69. }
    graphemecases11.tpzCheck every published Unicode 16 grapheme test rowOpen in Playground
    1. import graphemesupport { checkCase }
    2. export function run() -> int {
    3. let mut failures = 0
    4. failures += checkCase(729, "ൎਃ", ["ൎਃ"])
    5. failures += checkCase(730, "ൎ̈ਃ", ["ൎ̈ਃ"])
    6. failures += checkCase(731, "ൎᄀ", ["ൎᄀ"])
    7. failures += checkCase(732, "ൎ̈ᄀ", ["ൎ̈", "ᄀ"])
    8. failures += checkCase(733, "ൎᅠ", ["ൎᅠ"])
    9. failures += checkCase(734, "ൎ̈ᅠ", ["ൎ̈", "ᅠ"])
    10. failures += checkCase(735, "ൎᆨ", ["ൎᆨ"])
    11. failures += checkCase(736, "ൎ̈ᆨ", ["ൎ̈", "ᆨ"])
    12. failures += checkCase(737, "ൎ가", ["ൎ가"])
    13. failures += checkCase(738, "ൎ̈가", ["ൎ̈", "가"])
    14. failures += checkCase(739, "ൎ각", ["ൎ각"])
    15. failures += checkCase(740, "ൎ̈각", ["ൎ̈", "각"])
    16. failures += checkCase(741, "ൎः", ["ൎः"])
    17. failures += checkCase(742, "ൎ̈ः", ["ൎ̈ः"])
    18. failures += checkCase(743, "ൎऄ", ["ൎऄ"])
    19. failures += checkCase(744, "ൎ̈ऄ", ["ൎ̈", "ऄ"])
    20. failures += checkCase(745, "ൎൎ", ["ൎൎ"])
    21. failures += checkCase(746, "ൎ̈ൎ", ["ൎ̈", "ൎ"])
    22. failures += checkCase(747, "ൎक", ["ൎक"])
    23. failures += checkCase(748, "ൎ̈क", ["ൎ̈", "क"])
    24. failures += checkCase(749, "ൎ⌚", ["ൎ⌚"])
    25. failures += checkCase(750, "ൎ̈⌚", ["ൎ̈", "⌚"])
    26. failures += checkCase(751, "ൎ̀", ["ൎ̀"])
    27. failures += checkCase(752, "ൎ̈̀", ["ൎ̈̀"])
    28. failures += checkCase(753, "ൎऀ", ["ൎऀ"])
    29. failures += checkCase(754, "ൎ̈ऀ", ["ൎ̈ऀ"])
    30. failures += checkCase(755, "ൎ्", ["ൎ्"])
    31. failures += checkCase(756, "ൎ्̈", ["ൎ्̈"])
    32. failures += checkCase(757, "ൎ‍", ["ൎ‍"])
    33. failures += checkCase(758, "ൎ̈‍", ["ൎ̈‍"])
    34. failures += checkCase(759, "ൎ͸", ["ൎ͸"])
    35. failures += checkCase(760, "ൎ̈͸", ["ൎ̈", "͸"])
    36. failures += checkCase(761, "क ", ["क", " "])
    37. failures += checkCase(762, "क̈ ", ["क̈", " "])
    38. failures += checkCase(763, "क\r", ["क", "\r"])
    39. failures += checkCase(764, "क̈\r", ["क̈", "\r"])
    40. failures += checkCase(765, "क\n", ["क", "\n"])
    41. failures += checkCase(766, "क̈\n", ["क̈", "\n"])
    42. failures += checkCase(767, "क", ["क", ""])
    43. failures += checkCase(768, "क̈", ["क̈", ""])
    44. failures += checkCase(769, "क‌", ["क‌"])
    45. failures += checkCase(770, "क̈‌", ["क̈‌"])
    46. failures += checkCase(771, "क🇦", ["क", "🇦"])
    47. failures += checkCase(772, "क̈🇦", ["क̈", "🇦"])
    48. failures += checkCase(773, "क؀", ["क", "؀"])
    49. failures += checkCase(774, "क̈؀", ["क̈", "؀"])
    50. failures += checkCase(775, "कਃ", ["कਃ"])
    51. failures += checkCase(776, "क̈ਃ", ["क̈ਃ"])
    52. failures += checkCase(777, "कᄀ", ["क", "ᄀ"])
    53. failures += checkCase(778, "क̈ᄀ", ["क̈", "ᄀ"])
    54. failures += checkCase(779, "कᅠ", ["क", "ᅠ"])
    55. failures += checkCase(780, "क̈ᅠ", ["क̈", "ᅠ"])
    56. failures += checkCase(781, "कᆨ", ["क", "ᆨ"])
    57. failures += checkCase(782, "क̈ᆨ", ["क̈", "ᆨ"])
    58. failures += checkCase(783, "क가", ["क", "가"])
    59. failures += checkCase(784, "क̈가", ["क̈", "가"])
    60. failures += checkCase(785, "क각", ["क", "각"])
    61. failures += checkCase(786, "क̈각", ["क̈", "각"])
    62. failures += checkCase(787, "कः", ["कः"])
    63. failures += checkCase(788, "क̈ः", ["क̈ः"])
    64. failures += checkCase(789, "कऄ", ["क", "ऄ"])
    65. failures += checkCase(790, "क̈ऄ", ["क̈", "ऄ"])
    66. failures += checkCase(791, "कൎ", ["क", "ൎ"])
    67. failures += checkCase(792, "क̈ൎ", ["क̈", "ൎ"])
    68. failures
    69. }
    graphemecases12.tpzCheck every published Unicode 16 grapheme test rowOpen in Playground
    1. import graphemesupport { checkCase }
    2. export function run() -> int {
    3. let mut failures = 0
    4. failures += checkCase(793, "कक", ["क", "क"])
    5. failures += checkCase(794, "क̈क", ["क̈", "क"])
    6. failures += checkCase(795, "क⌚", ["क", "⌚"])
    7. failures += checkCase(796, "क̈⌚", ["क̈", "⌚"])
    8. failures += checkCase(797, "क̀", ["क̀"])
    9. failures += checkCase(798, "क̈̀", ["क̈̀"])
    10. failures += checkCase(799, "कऀ", ["कऀ"])
    11. failures += checkCase(800, "क̈ऀ", ["क̈ऀ"])
    12. failures += checkCase(801, "क्", ["क्"])
    13. failures += checkCase(802, "क्̈", ["क्̈"])
    14. failures += checkCase(803, "क‍", ["क‍"])
    15. failures += checkCase(804, "क̈‍", ["क̈‍"])
    16. failures += checkCase(805, "क͸", ["क", "͸"])
    17. failures += checkCase(806, "क̈͸", ["क̈", "͸"])
    18. failures += checkCase(807, "⌚ ", ["⌚", " "])
    19. failures += checkCase(808, "⌚̈ ", ["⌚̈", " "])
    20. failures += checkCase(809, "⌚\r", ["⌚", "\r"])
    21. failures += checkCase(810, "⌚̈\r", ["⌚̈", "\r"])
    22. failures += checkCase(811, "⌚\n", ["⌚", "\n"])
    23. failures += checkCase(812, "⌚̈\n", ["⌚̈", "\n"])
    24. failures += checkCase(813, "⌚", ["⌚", ""])
    25. failures += checkCase(814, "⌚̈", ["⌚̈", ""])
    26. failures += checkCase(815, "⌚‌", ["⌚‌"])
    27. failures += checkCase(816, "⌚̈‌", ["⌚̈‌"])
    28. failures += checkCase(817, "⌚🇦", ["⌚", "🇦"])
    29. failures += checkCase(818, "⌚̈🇦", ["⌚̈", "🇦"])
    30. failures += checkCase(819, "⌚؀", ["⌚", "؀"])
    31. failures += checkCase(820, "⌚̈؀", ["⌚̈", "؀"])
    32. failures += checkCase(821, "⌚ਃ", ["⌚ਃ"])
    33. failures += checkCase(822, "⌚̈ਃ", ["⌚̈ਃ"])
    34. failures += checkCase(823, "⌚ᄀ", ["⌚", "ᄀ"])
    35. failures += checkCase(824, "⌚̈ᄀ", ["⌚̈", "ᄀ"])
    36. failures += checkCase(825, "⌚ᅠ", ["⌚", "ᅠ"])
    37. failures += checkCase(826, "⌚̈ᅠ", ["⌚̈", "ᅠ"])
    38. failures += checkCase(827, "⌚ᆨ", ["⌚", "ᆨ"])
    39. failures += checkCase(828, "⌚̈ᆨ", ["⌚̈", "ᆨ"])
    40. failures += checkCase(829, "⌚가", ["⌚", "가"])
    41. failures += checkCase(830, "⌚̈가", ["⌚̈", "가"])
    42. failures += checkCase(831, "⌚각", ["⌚", "각"])
    43. failures += checkCase(832, "⌚̈각", ["⌚̈", "각"])
    44. failures += checkCase(833, "⌚ः", ["⌚ः"])
    45. failures += checkCase(834, "⌚̈ः", ["⌚̈ः"])
    46. failures += checkCase(835, "⌚ऄ", ["⌚", "ऄ"])
    47. failures += checkCase(836, "⌚̈ऄ", ["⌚̈", "ऄ"])
    48. failures += checkCase(837, "⌚ൎ", ["⌚", "ൎ"])
    49. failures += checkCase(838, "⌚̈ൎ", ["⌚̈", "ൎ"])
    50. failures += checkCase(839, "⌚क", ["⌚", "क"])
    51. failures += checkCase(840, "⌚̈क", ["⌚̈", "क"])
    52. failures += checkCase(841, "⌚⌚", ["⌚", "⌚"])
    53. failures += checkCase(842, "⌚̈⌚", ["⌚̈", "⌚"])
    54. failures += checkCase(843, "⌚̀", ["⌚̀"])
    55. failures += checkCase(844, "⌚̈̀", ["⌚̈̀"])
    56. failures += checkCase(845, "⌚ऀ", ["⌚ऀ"])
    57. failures += checkCase(846, "⌚̈ऀ", ["⌚̈ऀ"])
    58. failures += checkCase(847, "⌚्", ["⌚्"])
    59. failures += checkCase(848, "⌚्̈", ["⌚्̈"])
    60. failures += checkCase(849, "⌚‍", ["⌚‍"])
    61. failures += checkCase(850, "⌚̈‍", ["⌚̈‍"])
    62. failures += checkCase(851, "⌚͸", ["⌚", "͸"])
    63. failures += checkCase(852, "⌚̈͸", ["⌚̈", "͸"])
    64. failures += checkCase(853, "̀ ", ["̀", " "])
    65. failures += checkCase(854, "̀̈ ", ["̀̈", " "])
    66. failures += checkCase(855, "̀\r", ["̀", "\r"])
    67. failures += checkCase(856, "̀̈\r", ["̀̈", "\r"])
    68. failures
    69. }
    graphemecases13.tpzCheck every published Unicode 16 grapheme test rowOpen in Playground
    1. import graphemesupport { checkCase }
    2. export function run() -> int {
    3. let mut failures = 0
    4. failures += checkCase(857, "̀\n", ["̀", "\n"])
    5. failures += checkCase(858, "̀̈\n", ["̀̈", "\n"])
    6. failures += checkCase(859, "̀", ["̀", ""])
    7. failures += checkCase(860, "̀̈", ["̀̈", ""])
    8. failures += checkCase(861, "̀‌", ["̀‌"])
    9. failures += checkCase(862, "̀̈‌", ["̀̈‌"])
    10. failures += checkCase(863, "̀🇦", ["̀", "🇦"])
    11. failures += checkCase(864, "̀̈🇦", ["̀̈", "🇦"])
    12. failures += checkCase(865, "̀؀", ["̀", "؀"])
    13. failures += checkCase(866, "̀̈؀", ["̀̈", "؀"])
    14. failures += checkCase(867, "̀ਃ", ["̀ਃ"])
    15. failures += checkCase(868, "̀̈ਃ", ["̀̈ਃ"])
    16. failures += checkCase(869, "̀ᄀ", ["̀", "ᄀ"])
    17. failures += checkCase(870, "̀̈ᄀ", ["̀̈", "ᄀ"])
    18. failures += checkCase(871, "̀ᅠ", ["̀", "ᅠ"])
    19. failures += checkCase(872, "̀̈ᅠ", ["̀̈", "ᅠ"])
    20. failures += checkCase(873, "̀ᆨ", ["̀", "ᆨ"])
    21. failures += checkCase(874, "̀̈ᆨ", ["̀̈", "ᆨ"])
    22. failures += checkCase(875, "̀가", ["̀", "가"])
    23. failures += checkCase(876, "̀̈가", ["̀̈", "가"])
    24. failures += checkCase(877, "̀각", ["̀", "각"])
    25. failures += checkCase(878, "̀̈각", ["̀̈", "각"])
    26. failures += checkCase(879, "̀ः", ["̀ः"])
    27. failures += checkCase(880, "̀̈ः", ["̀̈ः"])
    28. failures += checkCase(881, "̀ऄ", ["̀", "ऄ"])
    29. failures += checkCase(882, "̀̈ऄ", ["̀̈", "ऄ"])
    30. failures += checkCase(883, "̀ൎ", ["̀", "ൎ"])
    31. failures += checkCase(884, "̀̈ൎ", ["̀̈", "ൎ"])
    32. failures += checkCase(885, "̀क", ["̀", "क"])
    33. failures += checkCase(886, "̀̈क", ["̀̈", "क"])
    34. failures += checkCase(887, "̀⌚", ["̀", "⌚"])
    35. failures += checkCase(888, "̀̈⌚", ["̀̈", "⌚"])
    36. failures += checkCase(889, "̀̀", ["̀̀"])
    37. failures += checkCase(890, "̀̈̀", ["̀̈̀"])
    38. failures += checkCase(891, "̀ऀ", ["̀ऀ"])
    39. failures += checkCase(892, "̀̈ऀ", ["̀̈ऀ"])
    40. failures += checkCase(893, "्̀", ["्̀"])
    41. failures += checkCase(894, "्̀̈", ["्̀̈"])
    42. failures += checkCase(895, "̀‍", ["̀‍"])
    43. failures += checkCase(896, "̀̈‍", ["̀̈‍"])
    44. failures += checkCase(897, "̀͸", ["̀", "͸"])
    45. failures += checkCase(898, "̀̈͸", ["̀̈", "͸"])
    46. failures += checkCase(899, "ऀ ", ["ऀ", " "])
    47. failures += checkCase(900, "ऀ̈ ", ["ऀ̈", " "])
    48. failures += checkCase(901, "ऀ\r", ["ऀ", "\r"])
    49. failures += checkCase(902, "ऀ̈\r", ["ऀ̈", "\r"])
    50. failures += checkCase(903, "ऀ\n", ["ऀ", "\n"])
    51. failures += checkCase(904, "ऀ̈\n", ["ऀ̈", "\n"])
    52. failures += checkCase(905, "ऀ", ["ऀ", ""])
    53. failures += checkCase(906, "ऀ̈", ["ऀ̈", ""])
    54. failures += checkCase(907, "ऀ‌", ["ऀ‌"])
    55. failures += checkCase(908, "ऀ̈‌", ["ऀ̈‌"])
    56. failures += checkCase(909, "ऀ🇦", ["ऀ", "🇦"])
    57. failures += checkCase(910, "ऀ̈🇦", ["ऀ̈", "🇦"])
    58. failures += checkCase(911, "ऀ؀", ["ऀ", "؀"])
    59. failures += checkCase(912, "ऀ̈؀", ["ऀ̈", "؀"])
    60. failures += checkCase(913, "ऀਃ", ["ऀਃ"])
    61. failures += checkCase(914, "ऀ̈ਃ", ["ऀ̈ਃ"])
    62. failures += checkCase(915, "ऀᄀ", ["ऀ", "ᄀ"])
    63. failures += checkCase(916, "ऀ̈ᄀ", ["ऀ̈", "ᄀ"])
    64. failures += checkCase(917, "ऀᅠ", ["ऀ", "ᅠ"])
    65. failures += checkCase(918, "ऀ̈ᅠ", ["ऀ̈", "ᅠ"])
    66. failures += checkCase(919, "ऀᆨ", ["ऀ", "ᆨ"])
    67. failures += checkCase(920, "ऀ̈ᆨ", ["ऀ̈", "ᆨ"])
    68. failures
    69. }
    graphemecases14.tpzCheck every published Unicode 16 grapheme test rowOpen in Playground
    1. import graphemesupport { checkCase }
    2. export function run() -> int {
    3. let mut failures = 0
    4. failures += checkCase(921, "ऀ가", ["ऀ", "가"])
    5. failures += checkCase(922, "ऀ̈가", ["ऀ̈", "가"])
    6. failures += checkCase(923, "ऀ각", ["ऀ", "각"])
    7. failures += checkCase(924, "ऀ̈각", ["ऀ̈", "각"])
    8. failures += checkCase(925, "ऀः", ["ऀः"])
    9. failures += checkCase(926, "ऀ̈ः", ["ऀ̈ः"])
    10. failures += checkCase(927, "ऀऄ", ["ऀ", "ऄ"])
    11. failures += checkCase(928, "ऀ̈ऄ", ["ऀ̈", "ऄ"])
    12. failures += checkCase(929, "ऀൎ", ["ऀ", "ൎ"])
    13. failures += checkCase(930, "ऀ̈ൎ", ["ऀ̈", "ൎ"])
    14. failures += checkCase(931, "ऀक", ["ऀ", "क"])
    15. failures += checkCase(932, "ऀ̈क", ["ऀ̈", "क"])
    16. failures += checkCase(933, "ऀ⌚", ["ऀ", "⌚"])
    17. failures += checkCase(934, "ऀ̈⌚", ["ऀ̈", "⌚"])
    18. failures += checkCase(935, "ऀ̀", ["ऀ̀"])
    19. failures += checkCase(936, "ऀ̈̀", ["ऀ̈̀"])
    20. failures += checkCase(937, "ऀऀ", ["ऀऀ"])
    21. failures += checkCase(938, "ऀ̈ऀ", ["ऀ̈ऀ"])
    22. failures += checkCase(939, "ऀ्", ["ऀ्"])
    23. failures += checkCase(940, "ऀ्̈", ["ऀ्̈"])
    24. failures += checkCase(941, "ऀ‍", ["ऀ‍"])
    25. failures += checkCase(942, "ऀ̈‍", ["ऀ̈‍"])
    26. failures += checkCase(943, "ऀ͸", ["ऀ", "͸"])
    27. failures += checkCase(944, "ऀ̈͸", ["ऀ̈", "͸"])
    28. failures += checkCase(945, "् ", ["्", " "])
    29. failures += checkCase(946, "्̈ ", ["्̈", " "])
    30. failures += checkCase(947, "्\r", ["्", "\r"])
    31. failures += checkCase(948, "्̈\r", ["्̈", "\r"])
    32. failures += checkCase(949, "्\n", ["्", "\n"])
    33. failures += checkCase(950, "्̈\n", ["्̈", "\n"])
    34. failures += checkCase(951, "्", ["्", ""])
    35. failures += checkCase(952, "्̈", ["्̈", ""])
    36. failures += checkCase(953, "्‌", ["्‌"])
    37. failures += checkCase(954, "्̈‌", ["्̈‌"])
    38. failures += checkCase(955, "्🇦", ["्", "🇦"])
    39. failures += checkCase(956, "्̈🇦", ["्̈", "🇦"])
    40. failures += checkCase(957, "्؀", ["्", "؀"])
    41. failures += checkCase(958, "्̈؀", ["्̈", "؀"])
    42. failures += checkCase(959, "्ਃ", ["्ਃ"])
    43. failures += checkCase(960, "्̈ਃ", ["्̈ਃ"])
    44. failures += checkCase(961, "्ᄀ", ["्", "ᄀ"])
    45. failures += checkCase(962, "्̈ᄀ", ["्̈", "ᄀ"])
    46. failures += checkCase(963, "्ᅠ", ["्", "ᅠ"])
    47. failures += checkCase(964, "्̈ᅠ", ["्̈", "ᅠ"])
    48. failures += checkCase(965, "्ᆨ", ["्", "ᆨ"])
    49. failures += checkCase(966, "्̈ᆨ", ["्̈", "ᆨ"])
    50. failures += checkCase(967, "्가", ["्", "가"])
    51. failures += checkCase(968, "्̈가", ["्̈", "가"])
    52. failures += checkCase(969, "्각", ["्", "각"])
    53. failures += checkCase(970, "्̈각", ["्̈", "각"])
    54. failures += checkCase(971, "्ः", ["्ः"])
    55. failures += checkCase(972, "्̈ः", ["्̈ः"])
    56. failures += checkCase(973, "्ऄ", ["्", "ऄ"])
    57. failures += checkCase(974, "्̈ऄ", ["्̈", "ऄ"])
    58. failures += checkCase(975, "्ൎ", ["्", "ൎ"])
    59. failures += checkCase(976, "्̈ൎ", ["्̈", "ൎ"])
    60. failures += checkCase(977, "्क", ["्", "क"])
    61. failures += checkCase(978, "्̈क", ["्̈", "क"])
    62. failures += checkCase(979, "्⌚", ["्", "⌚"])
    63. failures += checkCase(980, "्̈⌚", ["्̈", "⌚"])
    64. failures += checkCase(981, "्̀", ["्̀"])
    65. failures += checkCase(982, "्̈̀", ["्̈̀"])
    66. failures += checkCase(983, "्ऀ", ["्ऀ"])
    67. failures += checkCase(984, "्̈ऀ", ["्̈ऀ"])
    68. failures
    69. }
    graphemecases15.tpzCheck every published Unicode 16 grapheme test rowOpen in Playground
    1. import graphemesupport { checkCase }
    2. export function run() -> int {
    3. let mut failures = 0
    4. failures += checkCase(985, "््", ["््"])
    5. failures += checkCase(986, "््̈", ["््̈"])
    6. failures += checkCase(987, "्‍", ["्‍"])
    7. failures += checkCase(988, "्̈‍", ["्̈‍"])
    8. failures += checkCase(989, "्͸", ["्", "͸"])
    9. failures += checkCase(990, "्̈͸", ["्̈", "͸"])
    10. failures += checkCase(991, "‍ ", ["‍", " "])
    11. failures += checkCase(992, "‍̈ ", ["‍̈", " "])
    12. failures += checkCase(993, "‍\r", ["‍", "\r"])
    13. failures += checkCase(994, "‍̈\r", ["‍̈", "\r"])
    14. failures += checkCase(995, "‍\n", ["‍", "\n"])
    15. failures += checkCase(996, "‍̈\n", ["‍̈", "\n"])
    16. failures += checkCase(997, "‍", ["‍", ""])
    17. failures += checkCase(998, "‍̈", ["‍̈", ""])
    18. failures += checkCase(999, "‍‌", ["‍‌"])
    19. failures += checkCase(1000, "‍̈‌", ["‍̈‌"])
    20. failures += checkCase(1001, "‍🇦", ["‍", "🇦"])
    21. failures += checkCase(1002, "‍̈🇦", ["‍̈", "🇦"])
    22. failures += checkCase(1003, "‍؀", ["‍", "؀"])
    23. failures += checkCase(1004, "‍̈؀", ["‍̈", "؀"])
    24. failures += checkCase(1005, "‍ਃ", ["‍ਃ"])
    25. failures += checkCase(1006, "‍̈ਃ", ["‍̈ਃ"])
    26. failures += checkCase(1007, "‍ᄀ", ["‍", "ᄀ"])
    27. failures += checkCase(1008, "‍̈ᄀ", ["‍̈", "ᄀ"])
    28. failures += checkCase(1009, "‍ᅠ", ["‍", "ᅠ"])
    29. failures += checkCase(1010, "‍̈ᅠ", ["‍̈", "ᅠ"])
    30. failures += checkCase(1011, "‍ᆨ", ["‍", "ᆨ"])
    31. failures += checkCase(1012, "‍̈ᆨ", ["‍̈", "ᆨ"])
    32. failures += checkCase(1013, "‍가", ["‍", "가"])
    33. failures += checkCase(1014, "‍̈가", ["‍̈", "가"])
    34. failures += checkCase(1015, "‍각", ["‍", "각"])
    35. failures += checkCase(1016, "‍̈각", ["‍̈", "각"])
    36. failures += checkCase(1017, "‍ः", ["‍ः"])
    37. failures += checkCase(1018, "‍̈ः", ["‍̈ः"])
    38. failures += checkCase(1019, "‍ऄ", ["‍", "ऄ"])
    39. failures += checkCase(1020, "‍̈ऄ", ["‍̈", "ऄ"])
    40. failures += checkCase(1021, "‍ൎ", ["‍", "ൎ"])
    41. failures += checkCase(1022, "‍̈ൎ", ["‍̈", "ൎ"])
    42. failures += checkCase(1023, "‍क", ["‍", "क"])
    43. failures += checkCase(1024, "‍̈क", ["‍̈", "क"])
    44. failures += checkCase(1025, "‍⌚", ["‍", "⌚"])
    45. failures += checkCase(1026, "‍̈⌚", ["‍̈", "⌚"])
    46. failures += checkCase(1027, "‍̀", ["‍̀"])
    47. failures += checkCase(1028, "‍̈̀", ["‍̈̀"])
    48. failures += checkCase(1029, "‍ऀ", ["‍ऀ"])
    49. failures += checkCase(1030, "‍̈ऀ", ["‍̈ऀ"])
    50. failures += checkCase(1031, "‍्", ["‍्"])
    51. failures += checkCase(1032, "‍्̈", ["‍्̈"])
    52. failures += checkCase(1033, "‍‍", ["‍‍"])
    53. failures += checkCase(1034, "‍̈‍", ["‍̈‍"])
    54. failures += checkCase(1035, "‍͸", ["‍", "͸"])
    55. failures += checkCase(1036, "‍̈͸", ["‍̈", "͸"])
    56. failures += checkCase(1037, "͸ ", ["͸", " "])
    57. failures += checkCase(1038, "͸̈ ", ["͸̈", " "])
    58. failures += checkCase(1039, "͸\r", ["͸", "\r"])
    59. failures += checkCase(1040, "͸̈\r", ["͸̈", "\r"])
    60. failures += checkCase(1041, "͸\n", ["͸", "\n"])
    61. failures += checkCase(1042, "͸̈\n", ["͸̈", "\n"])
    62. failures += checkCase(1043, "͸", ["͸", ""])
    63. failures += checkCase(1044, "͸̈", ["͸̈", ""])
    64. failures += checkCase(1045, "͸‌", ["͸‌"])
    65. failures += checkCase(1046, "͸̈‌", ["͸̈‌"])
    66. failures += checkCase(1047, "͸🇦", ["͸", "🇦"])
    67. failures += checkCase(1048, "͸̈🇦", ["͸̈", "🇦"])
    68. failures
    69. }
    graphemecases16.tpzCheck every published Unicode 16 grapheme test rowOpen in Playground
    1. import graphemesupport { checkCase }
    2. export function run() -> int {
    3. let mut failures = 0
    4. failures += checkCase(1049, "͸؀", ["͸", "؀"])
    5. failures += checkCase(1050, "͸̈؀", ["͸̈", "؀"])
    6. failures += checkCase(1051, "͸ਃ", ["͸ਃ"])
    7. failures += checkCase(1052, "͸̈ਃ", ["͸̈ਃ"])
    8. failures += checkCase(1053, "͸ᄀ", ["͸", "ᄀ"])
    9. failures += checkCase(1054, "͸̈ᄀ", ["͸̈", "ᄀ"])
    10. failures += checkCase(1055, "͸ᅠ", ["͸", "ᅠ"])
    11. failures += checkCase(1056, "͸̈ᅠ", ["͸̈", "ᅠ"])
    12. failures += checkCase(1057, "͸ᆨ", ["͸", "ᆨ"])
    13. failures += checkCase(1058, "͸̈ᆨ", ["͸̈", "ᆨ"])
    14. failures += checkCase(1059, "͸가", ["͸", "가"])
    15. failures += checkCase(1060, "͸̈가", ["͸̈", "가"])
    16. failures += checkCase(1061, "͸각", ["͸", "각"])
    17. failures += checkCase(1062, "͸̈각", ["͸̈", "각"])
    18. failures += checkCase(1063, "͸ः", ["͸ः"])
    19. failures += checkCase(1064, "͸̈ः", ["͸̈ः"])
    20. failures += checkCase(1065, "͸ऄ", ["͸", "ऄ"])
    21. failures += checkCase(1066, "͸̈ऄ", ["͸̈", "ऄ"])
    22. failures += checkCase(1067, "͸ൎ", ["͸", "ൎ"])
    23. failures += checkCase(1068, "͸̈ൎ", ["͸̈", "ൎ"])
    24. failures += checkCase(1069, "͸क", ["͸", "क"])
    25. failures += checkCase(1070, "͸̈क", ["͸̈", "क"])
    26. failures += checkCase(1071, "͸⌚", ["͸", "⌚"])
    27. failures += checkCase(1072, "͸̈⌚", ["͸̈", "⌚"])
    28. failures += checkCase(1073, "͸̀", ["͸̀"])
    29. failures += checkCase(1074, "͸̈̀", ["͸̈̀"])
    30. failures += checkCase(1075, "͸ऀ", ["͸ऀ"])
    31. failures += checkCase(1076, "͸̈ऀ", ["͸̈ऀ"])
    32. failures += checkCase(1077, "͸्", ["͸्"])
    33. failures += checkCase(1078, "͸्̈", ["͸्̈"])
    34. failures += checkCase(1079, "͸‍", ["͸‍"])
    35. failures += checkCase(1080, "͸̈‍", ["͸̈‍"])
    36. failures += checkCase(1081, "͸͸", ["͸", "͸"])
    37. failures += checkCase(1082, "͸̈͸", ["͸̈", "͸"])
    38. failures += checkCase(1083, "\r\na\n̈", ["\r\n", "a", "\n", "̈"])
    39. failures += checkCase(1084, "ä", ["ä"])
    40. failures += checkCase(1085, " ‍ن", [" ‍", "ن"])
    41. failures += checkCase(1086, "ن‍ ", ["ن‍", " "])
    42. failures += checkCase(1087, "ᄀᄀ", ["ᄀᄀ"])
    43. failures += checkCase(1088, "각ᄀ", ["각", "ᄀ"])
    44. failures += checkCase(1089, "각ᆨᄀ", ["각ᆨ", "ᄀ"])
    45. failures += checkCase(1090, "🇦🇧🇨b", ["🇦🇧", "🇨", "b"])
    46. failures += checkCase(1091, "a🇦🇧🇨b", ["a", "🇦🇧", "🇨", "b"])
    47. failures += checkCase(1092, "a🇦🇧‍🇨b", ["a", "🇦🇧‍", "🇨", "b"])
    48. failures += checkCase(1093, "a🇦‍🇧🇨b", ["a", "🇦‍", "🇧🇨", "b"])
    49. failures += checkCase(1094, "a🇦🇧🇨🇩b", ["a", "🇦🇧", "🇨🇩", "b"])
    50. failures += checkCase(1095, "a‍", ["a‍"])
    51. failures += checkCase(1096, "äb", ["ä", "b"])
    52. failures += checkCase(1097, "aःb", ["aः", "b"])
    53. failures += checkCase(1098, "a؀b", ["a", "؀b"])
    54. failures += checkCase(1099, "👶🏿👶", ["👶🏿", "👶"])
    55. failures += checkCase(1100, "a🏿👶", ["a🏿", "👶"])
    56. failures += checkCase(1101, "a🏿👶‍🛑", ["a🏿", "👶‍🛑"])
    57. failures += checkCase(1102, "👶🏿̈‍👶🏿", ["👶🏿̈‍👶🏿"])
    58. failures += checkCase(1103, "🛑‍🛑", ["🛑‍🛑"])
    59. failures += checkCase(1104, "a‍🛑", ["a‍", "🛑"])
    60. failures += checkCase(1105, "✁‍✁", ["✁‍✁"])
    61. failures += checkCase(1106, "a‍✁", ["a‍", "✁"])
    62. failures += checkCase(1107, "कत", ["क", "त"])
    63. failures += checkCase(1108, "क्त", ["क्त"])
    64. failures += checkCase(1109, "क््त", ["क््त"])
    65. failures += checkCase(1110, "क्‍त", ["क्‍त"])
    66. failures += checkCase(1111, "क़‍्त", ["क़‍्त"])
    67. failures += checkCase(1112, "क़्‍त", ["क़्‍त"])
    68. failures
    69. }
    graphemecases17.tpzCheck every published Unicode 16 grapheme test rowOpen in Playground
    1. import graphemesupport { checkCase }
    2. export function run() -> int {
    3. let mut failures = 0
    4. failures += checkCase(1113, "क्त्य", ["क्त्य"])
    5. failures += checkCase(1114, "क्a", ["क्", "a"])
    6. failures += checkCase(1115, "a्त", ["a्", "त"])
    7. failures += checkCase(1116, "?्त", ["?्", "त"])
    8. failures += checkCase(1117, "क््त", ["क््त"])
    9. failures
    10. }
    Expected result

    Expected result

    Execution completes. Exit code 0.

    Expected stdout
    1. Unicode 16.0.0 grapheme corpus passed

    The composer reads every data row of the pinned GraphemeBreakTest.txt. Each row checks cluster boundaries, exact string contents, and reconstruction of the original input. Failure output identifies the source line. The published corpus samples property combinations and sequences rather than every possible string.

    Source evidence

    Menu

    Download