package Ġcom . kot l ind is cord . k ord . extensions . test Ċ Ċ import Ġcom . kot l ind is cord . k ord . extensions . parser . String Parser Ċ import Ġcom . kot l ind is cord . k ord . extensions . parser . tokens . Named Argument Token Ċ import Ġcom . kot l ind is cord . k ord . extensions . parser . tokens . Position al Argument Token Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . Test Instance Ċ import Ġorg . junit . jupiter . api . parallel . Execution Ċ import Ġorg . junit . jupiter . api . parallel . Execution Mode Ċ import Ġkotlin . test . assertNull Ċ Ċ const Ġval ĠE VERY TH ING _ INPUT Ġ= Ġ" single Ġ\" with Ġquotes \" Ġ-- key Ġ\" value Ġwith Ġquotes \" Ġname = value " Ċ const Ġval ĠE VERY TH ING _ INPUT _ NAMED _ FIRST Ġ= Ġ"-- key Ġ\" value Ġwith Ġquotes \" Ġname = value Ġsingle Ġ\" with Ġquotes \" Ġ" Ċ const Ġval ĠNAME D _ INPUT Ġ= Ġ"-- one Ġone Ġtwo = two Ġ-- three Ġ\" three Ġthree \" Ġfour =\" four Ġfour \"" Ċ const Ġval ĠS INGLE _ INPUT Ġ= Ġ" one Ġtwo Ġthree Ġfour Ġfive " Ċ const Ġval ĠQU OT ED _ INPUT Ġ= Ġ"\" one Ġone \" Ġ\" two Ġtwo \" Ġ\" three Ġthree \" Ġ\" four Ġfour \" Ġ\" five Ġfive \"" Ċ Ċ const Ġval ĠNUMBER S Ġ= Ġ" 1 2 3 4 5 " Ċ Ċ @ Test Instance ( Test Instance . Lifecycle . PER _ CLASS ) Ċ class ĠString Parser Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Execution ( Execution Mode . CON CURRENT ) ĊĠĠĠ Ġfun Ġ` Consum ing Ġ- Ġeverything `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠString Parser ( NUMBER S ) ĊĠĠĠĠĠĠĠ Ġval Ġeverything Ġ= Ġparser . consume Remaining () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( NUMBER S , Ġeverything ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ("", Ġparser . consume Remaining ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( null , Ġparser . parse Next ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Execution ( Execution Mode . CON CURRENT ) ĊĠĠĠ Ġfun Ġ` Consum ing Ġ- Ġpredicates `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠString Parser ( NUMBER S ) ĊĊĠĠĠĠĠĠĠ Ġval Ġone Ġ= Ġparser . consume While Ġ{ Ġit Ġ== Ġ' 1 ' Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtwo Ġ= Ġparser . consume While Ġ{ Ġit Ġ== Ġ' 2 ' Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġparser . parse Next () ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" 1 ", Ġone ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" 2 ", Ġtwo ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( null , Ġparser . consume While Ġ{ Ġit Ġ== Ġ' 2 ' Ġ}) ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" 3 4 5 ", Ġtoken ?. data ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ("", Ġparser . consume Remaining ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( null , Ġparser . parse Next ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Execution ( Execution Mode . CON CURRENT ) ĊĠĠĠ Ġfun Ġ` Everything Ġ- Ġnatural Ġorder `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠString Parser ( E VERY TH ING _ INPUT ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnamed Tokens : ĠMutable List < Named Argument Token > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġval Ġpositional Tokens : ĠMutable List < Position al Argument Token > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠ Ġnamed Tokens . addAll ( parser . parse Named ()) ĊĊĠĠĠĠĠĠĠ Ġpositional Tokens . add ( parser . parse Next () !! ) ĊĠĠĠĠĠĠĠ Ġpositional Tokens . add ( parser . parse Next () !! ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġnamed Tokens . size ) Ġ{ Ġ" Parser Ġshould Ġfind Ġtwo Ġnamed Ġtokens " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġpositional Tokens . size ) Ġ{ Ġ" Parser Ġshould Ġfind Ġtwo Ġpositional Ġtokens " Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertNull ( parser . parse Next (), Ġ" Parser Ġshould Ġnot Ġhave Ġanything Ġelse Ġto Ġparse .") ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" key ", Ġnamed Tokens [ 0 ]. name ) Ġ{ Ġ" Named Ġ 1 : Ġname Ġ= Ġkey " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" value Ġwith Ġquotes ", Ġnamed Tokens [ 0 ]. data ) Ġ{ Ġ" Named Ġ 1 : Ġdata Ġ= Ġvalue Ġwith Ġquotes " Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" name ", Ġnamed Tokens [ 1 ]. name ) Ġ{ Ġ" Named Ġ 2 : Ġname Ġ= Ġname " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" value ", Ġnamed Tokens [ 1 ]. data ) Ġ{ Ġ" Named Ġ 2 : Ġdata Ġ= Ġvalue " Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" single ", Ġpositional Tokens [ 0 ]. data ) Ġ{ Ġ" Position al Ġ 1 : Ġdata Ġ= Ġsingle " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" with Ġquotes ", Ġpositional Tokens [ 1 ]. data ) Ġ{ Ġ" Position al Ġ 2 : Ġdata Ġ= Ġwith Ġquotes " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Execution ( Execution Mode . CON CURRENT ) ĊĠĠĠ Ġfun Ġ` Everything Ġ- Ġnamed Ġfirst `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠString Parser ( E VERY TH ING _ INPUT _ NAMED _ FIRST ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnamed Tokens : ĠMutable List < Named Argument Token > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġval Ġpositional Tokens : ĠMutable List < Position al Argument Token > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠ Ġnamed Tokens . addAll ( parser . parse Named ()) ĊĊĠĠĠĠĠĠĠ Ġpositional Tokens . add ( parser . parse Next () !! ) ĊĠĠĠĠĠĠĠ Ġpositional Tokens . add ( parser . parse Next () !! ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġnamed Tokens . size ) Ġ{ Ġ" Parser Ġshould Ġfind Ġtwo Ġnamed Ġtokens " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġpositional Tokens . size ) Ġ{ Ġ" Parser Ġshould Ġfind Ġtwo Ġpositional Ġtokens " Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertNull ( parser . parse Next (), Ġ" Parser Ġshould Ġnot Ġhave Ġanything Ġelse Ġto Ġparse .") ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" key ", Ġnamed Tokens [ 0 ]. name ) Ġ{ Ġ" Named Ġ 1 : Ġname Ġ= Ġkey " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" value Ġwith Ġquotes ", Ġnamed Tokens [ 0 ]. data ) Ġ{ Ġ" Named Ġ 1 : Ġdata Ġ= Ġvalue Ġwith Ġquotes " Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" name ", Ġnamed Tokens [ 1 ]. name ) Ġ{ Ġ" Named Ġ 2 : Ġname Ġ= Ġname " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" value ", Ġnamed Tokens [ 1 ]. data ) Ġ{ Ġ" Named Ġ 2 : Ġdata Ġ= Ġvalue " Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" single ", Ġpositional Tokens [ 0 ]. data ) Ġ{ Ġ" Position al Ġ 1 : Ġdata Ġ= Ġsingle " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" with Ġquotes ", Ġpositional Tokens [ 1 ]. data ) Ġ{ Ġ" Position al Ġ 2 : Ġdata Ġ= Ġwith Ġquotes " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Execution ( Execution Mode . CON CURRENT ) ĊĠĠĠ Ġfun Ġ` Single Ġpositional Ġarguments `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠString Parser ( SINGLE _ INPUT ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpositional Tokens : ĠMutable List < Position al Argument Token > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġparser . parse Named (). size ) Ġ{ Ġ" Parser Ġshould Ġfind Ġno Ġnamed Ġtokens " Ġ} ĊĊĠĠĠĠĠĠĠ Ġpositional Tokens . add ( parser . parse Next () !! ) ĊĠĠĠĠĠĠĠ Ġpositional Tokens . add ( parser . parse Next () !! ) ĊĠĠĠĠĠĠĠ Ġpositional Tokens . add ( parser . parse Next () !! ) ĊĠĠĠĠĠĠĠ Ġpositional Tokens . add ( parser . parse Next () !! ) ĊĠĠĠĠĠĠĠ Ġpositional Tokens . add ( parser . parse Next () !! ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" one ", Ġpositional Tokens [ 0 ]. data ) Ġ{ Ġ" Position al Ġ 1 : Ġdata Ġ= Ġone " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" two ", Ġpositional Tokens [ 1 ]. data ) Ġ{ Ġ" Position al Ġ 2 : Ġdata Ġ= Ġtwo " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" three ", Ġpositional Tokens [ 2 ]. data ) Ġ{ Ġ" Position al Ġ 3 : Ġdata Ġ= Ġthree " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" four ", Ġpositional Tokens [ 3 ]. data ) Ġ{ Ġ" Position al Ġ 4 : Ġdata Ġ= Ġfour " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" five ", Ġpositional Tokens [ 4 ]. data ) Ġ{ Ġ" Position al Ġ 5 : Ġdata Ġ= Ġfive " Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertNull ( parser . parse Next (), Ġ" Parser Ġshould Ġnot Ġhave Ġanything Ġelse Ġto Ġparse .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Execution ( Execution Mode . CON CURRENT ) ĊĠĠĠ Ġfun Ġ` Quoted Ġpositional Ġarguments `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠString Parser ( QUOT ED _ INPUT ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpositional Tokens : ĠMutable List < Position al Argument Token > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġparser . parse Named (). size ) Ġ{ Ġ" Parser Ġshould Ġfind Ġno Ġnamed Ġtokens " Ġ} ĊĊĠĠĠĠĠĠĠ Ġpositional Tokens . add ( parser . parse Next () !! ) ĊĠĠĠĠĠĠĠ Ġpositional Tokens . add ( parser . parse Next () !! ) ĊĠĠĠĠĠĠĠ Ġpositional Tokens . add ( parser . parse Next () !! ) ĊĠĠĠĠĠĠĠ Ġpositional Tokens . add ( parser . parse Next () !! ) ĊĠĠĠĠĠĠĠ Ġpositional Tokens . add ( parser . parse Next () !! ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" one Ġone ", Ġpositional Tokens [ 0 ]. data ) Ġ{ Ġ" Position al Ġ 1 : Ġdata Ġ= Ġone Ġone " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" two Ġtwo ", Ġpositional Tokens [ 1 ]. data ) Ġ{ Ġ" Position al Ġ 2 : Ġdata Ġ= Ġtwo Ġtwo " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" three Ġthree ", Ġpositional Tokens [ 2 ]. data ) Ġ{ Ġ" Position al Ġ 3 : Ġdata Ġ= Ġthree Ġthree " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" four Ġfour ", Ġpositional Tokens [ 3 ]. data ) Ġ{ Ġ" Position al Ġ 4 : Ġdata Ġ= Ġfour Ġfour " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" five Ġfive ", Ġpositional Tokens [ 4 ]. data ) Ġ{ Ġ" Position al Ġ 5 : Ġdata Ġ= Ġfive Ġfive " Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertNull ( parser . parse Next (), Ġ" Parser Ġshould Ġnot Ġhave Ġanything Ġelse Ġto Ġparse .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Execution ( Execution Mode . CON CURRENT ) ĊĠĠĠ Ġfun Ġ` Named Ġarguments Ġonly `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠString Parser ( NAMED _ INPUT ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnamed Tokens : ĠMutable List < Named Argument Token > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠ Ġnamed Tokens . addAll ( parser . parse Named ()) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġnamed Tokens . size ) Ġ{ Ġ" Parser Ġshould Ġfind Ġfour Ġnamed Ġtokens " Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" one ", Ġnamed Tokens [ 0 ]. name ) Ġ{ Ġ" Token Ġ 1 : Ġname Ġ= Ġone " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" one ", Ġnamed Tokens [ 0 ]. data ) Ġ{ Ġ" Token Ġ 1 : Ġdata Ġ= Ġone " Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" two ", Ġnamed Tokens [ 1 ]. name ) Ġ{ Ġ" Token Ġ 2 : Ġname Ġ= Ġtwo " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" two ", Ġnamed Tokens [ 1 ]. data ) Ġ{ Ġ" Token Ġ 2 : Ġdata Ġ= Ġtwo " Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" three ", Ġnamed Tokens [ 2 ]. name ) Ġ{ Ġ" Token Ġ 3 : Ġname Ġ= Ġthree " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" three Ġthree ", Ġnamed Tokens [ 2 ]. data ) Ġ{ Ġ" Token Ġ 3 : Ġdata Ġ= Ġthree Ġthree " Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertEquals (" four ", Ġnamed Tokens [ 3 ]. name ) Ġ{ Ġ" Token Ġ 4 : Ġname Ġ= Ġfour " Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" four Ġfour ", Ġnamed Tokens [ 3 ]. data ) Ġ{ Ġ" Token Ġ 4 : Ġdata Ġ= Ġfour Ġfour " Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertNull ( parser . parse Next (), Ġ" Parser Ġshould Ġnot Ġhave Ġanything Ġelse Ġto Ġparse .") ĊĠĠĠ Ġ} Ċ } Ċ