package Ġcom . github . mp e 8 5 . gr amp a . grammar Ċ Ċ import Ġcom . github . mp e 8 5 . gr amp a . legal Code Points Ċ import Ġcom . github . mp e 8 5 . gr amp a . parser . Parser Ċ import Ġcom . ibm . icu . lang . U Character . toString Ċ import Ġio . kot est . core . spec . style . String Spec Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġio . kot est . property . Ar b Ċ import Ġio . kot est . property . ar bitrary . set Ċ import Ġio . kot est . property . check All Ċ Ċ class ĠAny Of Code Points Rule Tests Ġ: ĠString Spec ({ ĊĠĠĠ Ġfun Ġgrammar s ( code Points : ĠCollection < Int >) Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠAbstract Grammar < Unit >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġstart () Ġ= Ġany Of Code Points (* code Points . to IntArray ()) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠAbstract Grammar < Unit >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġstart () Ġ= Ġany Of Code Points ( code Points ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠAbstract Grammar < Unit >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġstart () Ġ= Ġany Of Code Points ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStringBuilder (). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Points . forEach Ġ{ Ġappend Code Point ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtoString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĠĠĠ Ġ" Any Of Code Points Ġrule Ġmatches Ġcode point Ġin Ġcollection " Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck All ( Ar b . set ( legal Code Points (), Ġ 1 .. 1 0 )) Ġ{ Ġcode Points Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrammar s ( code Points . map Ġ{ Ġit . value Ġ}). forEach Ġ{ Ġgrammar Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠParser ( grammar ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode Points . forEach Ġ{ Ġcp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( toString ( cp . value )). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatched ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatched Ent ire Input ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatched Input ĠshouldBe ĠtoString ( cp . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Of Input ĠshouldBe Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ" Any Of Code Points Ġrule Ġdoes Ġnot Ġmatch Ġcode point Ġnot Ġin Ġcollection " Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck All ( Ar b . set ( legal Code Points (), Ġ 2 .. 1 0 )) Ġ{ Ġcode Points Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrammar s ( code Points . map Ġ{ Ġit . value Ġ}. drop ( 1 )). forEach Ġ{ Ġgrammar Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠParser ( grammar ). run ( toString ( code Points . first (). value )). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatched ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatched Ent ire Input ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatched Input ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Of Input ĠshouldBe ĠtoString ( code Points . first (). value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ" Empty ĠAny Of Code Points Ġrule Ġmatches Ġno Ġcode point " Ġ{ ĊĠĠĠĠĠĠĠ Ġgrammar s ( empty Set ()). forEach Ġ{ Ġgrammar Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠParser ( grammar ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck All ( legal Code Points ()) Ġ{ Ġcp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun ( toString ( cp . value )). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatched ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatched Ent ire Input ĠshouldBe Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatched Input ĠshouldBe Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrest Of Input ĠshouldBe ĠtoString ( cp . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ