package Ġio . github . deb op . fl as ht ext Ċ Ċ import Ġio . github . deb op . ah oc or as ick . trie . T rie Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġmu . K Logging Ċ import Ġorg . am sh ove . k lu ent . shouldBe EqualTo Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ /** Ċ Ġ* ĠKeyword Processor Test Ċ Ġ* Ġ@ author Ġdeb op Ġ( Sun gh you k ĠB ae ) Ċ Ġ*/ Ċ class ĠKeyword Processor Test Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject : ĠK Logging () ĊĊĠĠĠ Ġval Ġtrie Ġ= ĠT rie . builder () ĊĠĠĠĠĠĠĠ Ġ. add Keywords (" NY C ") ĊĠĠĠĠĠĠĠ Ġ. add Keywords (" AP PL ") ĊĠĠĠĠĠĠĠ Ġ. add Keywords (" java _ 2 e ", Ġ" java Ġprogramming ") ĊĠĠĠĠĠĠĠ Ġ. add Keywords (" PM ", Ġ" product Ġmanager ") ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġval Ġtext Ġ= Ġ" I Ġam Ġa ĠPM Ġfor Ġa Ġjava _ 2 e Ġplatform Ġworking Ġfrom ĠAP PL , ĠNY C " ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` extract Ġkeywords `() Ġ= Ġrun Blocking < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemits Ġ= Ġtrie . parse Text ( text ) ĊĠĠĠĠĠĠĠ Ġlogger . debug Ġ{ Ġ" em its =$ em its " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` tokenize Ġkeywords `() Ġ= Ġrun Blocking < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtokens Ġ= Ġtrie . tokenize ( text ) ĊĠĠĠĠĠĠĠ Ġlogger . debug Ġ{ Ġ" tokens =$ tokens " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` replace Ġkeywords `() Ġ= Ġrun Blocking < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmap Of (" AP PL " Ġto Ġ" Apple ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" NY C " Ġto Ġ" New Ġy ork ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" java _ 2 e " Ġto Ġ" java Ġprogramming ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" PM " Ġto Ġ" product Ġmanager ") ĊĊĠĠĠĠĠĠĠ Ġval Ġreplaced Ġ= Ġtrie . replace ( text , Ġmap ) ĊĊĠĠĠĠĠĠĠ Ġreplaced ĠshouldBe EqualTo Ġ" I Ġam Ġa Ġproduct Ġmanager Ġfor Ġa Ġjava Ġprogramming Ġplatform Ġworking Ġfrom ĠApple , ĠNew Ġy ork " ĊĠĠĠ Ġ} Ċ }