package Ġi 1 8 n Ċ Ċ import Ġdev . aug u . n ino . but ter fly . i 1 8 n . I 1 8 n Language Ċ import Ġio . kot est . assertions . throw ables . should Throw Ċ import Ġio . kot est . core . spec . style . Describe Spec Ċ import Ġio . kot est . matchers . shouldBe Ċ Ċ /** Ċ Ġ* ĠTrans lates Ġto Ġthe ĠB Ġlanguage Ċ Ġ*/ Ċ internal Ġfun Ġactual BL anguage Translator ( s : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġval Ġbuilder : ĠStringBuilder Ġ= ĠStringBuilder () ĊĠĠĠ Ġfor Ġ( c Ġin Ġs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( c . is Letter ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append (' b ') ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbuilder . append ( c ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġbuilder . toString () Ċ } Ċ Ċ class ĠI 1 8 n Language Tests Ġ: ĠDescribe Spec ({ ĊĊĠĠĠ Ġdescribe (" I 1 8 n ĠLanguage ĠTests ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġthe BL anguage Ġ= ĠI 1 8 n Language ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" b ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" simple " Ġto Ġ" bs bib mb p bl be ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" two Ġwords " Ġto Ġ" b tb w bo Ġbw bo br bdb s ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" one Ġkey " Ġto Ġ" bo bn be Ġ\ ${ key }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" multiple Ġkeys " Ġto Ġ"\ ${ key 1 } Ġb mb ub lb tb ib p bl be Ġ\ ${ key 2 } Ġbk be by bs Ġ\ ${ key 3 }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġtranslate Ġsimple Ġno Ġkey Ġtests ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthe BL anguage . translate (" simple "). shouldBe ( actual BL anguage Translator (" simple ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthe BL anguage . translate (" two Ġwords "). shouldBe ( actual BL anguage Translator (" two Ġwords ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġthrow Ġon Ġinvalid Ġkey ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Throw < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthe BL anguage . translate (" what ?") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġtranslate Ġone Ġkey Ġwith Ġthe Ġkey Ġargument ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthe BL anguage . translate (" one Ġkey ", Ġmap Of (" key " Ġto Ġ" by be be bt ! ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. shouldBe ( actual BL anguage Translator (" one Ġye et ! ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġtranslate Ġmultiple Ġkeys Ġwith Ġthe Ġcorrect Ġarguments ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthe BL anguage . translate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" multiple Ġkeys ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of (" key 1 " Ġto Ġ" by be be bt ", Ġ" key 2 " Ġto Ġ" bs bib mb p bl be ", Ġ" key 3 " Ġto Ġ" br be be ?") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. shouldBe ( actual BL anguage Translator (" ye et Ġmultiple Ġsimple Ġkeys Ġre e ? ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġadd Ġtranslate Ġwith Ġ? Ġif Ġan Ġargument Ġwas Ġnot Ġful lf illed ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthe BL anguage . translate (" one Ġkey "). shouldBe ( actual BL anguage Translator (" one Ġ? ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthe BL anguage . translate (" multiple Ġkeys "). shouldBe ( actual BL anguage Translator (" ? Ġmultiple Ġ? Ġkeys Ġ? ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthe BL anguage . translate (" multiple Ġkeys ", Ġmap Of (" key 1 " Ġto Ġ"! ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. shouldBe ( actual BL anguage Translator (" ! Ġmultiple Ġ? Ġkeys Ġ? ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthe BL anguage . translate (" multiple Ġkeys ", Ġmap Of (" key 2 " Ġto Ġ" !", Ġ" key 3 " Ġto Ġ" bl bl ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. shouldBe ( actual BL anguage Translator (" ? Ġmultiple Ġ! Ġkeys Ġll ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ })