import Ġorg . junit . jupiter . api . assert Throws Ċ import Ġorg . junit . jupiter . params . Parameterized Test Ċ import Ġorg . junit . jupiter . params . provider . Value Source Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertFalse Ċ import Ġkotlin . test . assertTrue Ċ Ċ internal Ġclass ĠS anta Pass Kt Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġincrement Ġpass `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals (" abcd ff aa ", ĠS anta Pass (). generate Next Pass (" abcdefgh ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġincrement Ġanother Ġpass `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals (" gh ja ab cc ", ĠS anta Pass (). generate Next Pass (" gh ijkl mn ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġincrement Ġpass Ġmultiple Ġtimes `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf (" abcd ff aa ", Ġ" abcd ff bb ", Ġ" abcd ff cc "), ĠS anta Pass (). generate Next Password s (" abcdefgh ", Ġ 3 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġfail Ġon Ġempty Ġstring `() Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġy Ġ= Ġ"" ĊĠĠĠĠĠĠĠ ĠassertThrows < IllegalStateException > Ġ{ Ġy ++ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Value Source ( chars Ġ= Ġ[' A ', Ġ' G ', Ġ' J ', Ġ' L ', Ġ' N ', Ġ' P ', Ġ' T ', Ġ' U ', Ġ' V ', Ġ' W ', Ġ' Z ']) ĊĠĠĠ Ġfun Ġ` should Ġbe Ġillegal Ġto Ġincrement Ġchars Ġoutside Ġa - z Ġrange `( char : ĠChar ) Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThrows < IllegalStateException > Ġ{ Ġchar . increment With C arry () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Value Source ( chars Ġ= Ġ[' @ ', Ġ' !', Ġ'$ ', Ġ'% ', Ġ'^ ', Ġ'& ', Ġ'*', Ġ'+', Ġ'\\ ', Ġ'<', Ġ'. ']) ĊĠĠĠ Ġfun Ġ` should Ġbe Ġillegal Ġto Ġincrement Ġnon - lower - case Ġletters `( char : ĠChar ) Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThrows < IllegalStateException > Ġ{ Ġchar . increment With C arry () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Value Source ( chars Ġ= Ġ[' a ', Ġ' g ', Ġ' j ', Ġ' l ', Ġ' n ', Ġ' p ', Ġ' t ', Ġ' u ', Ġ' v ', Ġ' w ']) ĊĠĠĠ Ġfun Ġ` should Ġincrement Ġnon - z Ġletter `( input Char : ĠChar ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( carry , Ġincrement ed Char ) Ġ= Ġinput Char . increment With C arry () ĊĠĠĠĠĠĠĠ ĠassertFalse Ġ{ Ġincrement ed Char Ġ== Ġinput Char Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( input Char . inc (), Ġincrement ed Char ) ĊĠĠĠĠĠĠĠ ĠassertFalse Ġ{ Ġcarry Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġincrement Ġz Ġletter `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( carry , Ġincrement ed Char ) Ġ= Ġ' z '. increment With C arry () ĊĠĠĠĠĠĠĠ ĠassertEquals (' a ', Ġincrement ed Char ) ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġcarry Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġincrement Ġa Ġstring `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals (" b ", Ġ" a ". inc ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġincrement Ġa Ġbit Ġlonger Ġstring `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals (" ab ", Ġ" aa ". inc ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġincrement Ġa Ġbit Ġbit Ġlonger Ġstring `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals (" abb ", Ġ" aba ". inc ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġincrement Ġstring Ġwith Ġa Ġsingle Ġcarry `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals (" ba ", Ġ" az ". inc ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġincrement Ġlonger Ġstring Ġwith Ġa Ġsingle Ġcarry `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals (" aaa aba ", Ġ" aaaa az ". inc ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġincrement Ġlonger Ġstring Ġwith Ġa Ġmulti Ġcarry `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals (" aa ab aa ", Ġ" aaa azz ". inc ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġmake Ġthe Ġreturn Ġlonger Ġif Ġfr st Ġletter Ġwith Ġcarry `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals (" aa ", Ġ" z ". inc ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` should Ġincrement Ġlots Ġof Ġz ees `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals (" aaaa aaa ", Ġ" zzzz zz ". inc ()) ĊĠĠĠ Ġ} Ċ } Ċ