package Ġcom . cur tis lb . ad vent of code . year 2 0 1 9 . day 0 4 . password Ċ Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertFalse Ċ import Ġkotlin . test . assertTrue Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ /** Ċ Ġ* ĠTests Ġ[ Non De creasing Generator ]. Ċ Ġ*/ Ċ class ĠNon De creasing Generator Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest With Empty Generator () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgenerator Ġ= ĠNon De creasing Generator () ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 ), Ġgenerator . next Digits ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest With Single Digit () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( digit Ġin Ġ 0 .. 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( digit ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (( 0 .. 9 ). filter Ġ{ Ġit Ġ>= Ġdigit Ġ}. toSet (), Ġgenerator . next Digits ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest With In creasing Digits () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġgenerator : ĠPassword Generator Ġ= ĠNon De creasing Generator (). add Digit ( 0 ). add Digit ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 1 ). add Digit ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 3 ). add Digit ( 5 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 8 ). add Digit ( 9 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 0 ). add Digit ( 9 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 0 ). add Digit ( 1 ). add Digit ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 2 ). add Digit ( 6 ). add Digit ( 7 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 7 , Ġ 8 , Ġ 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 7 ). add Digit ( 8 ). add Digit ( 9 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 0 ). add Digit ( 1 ). add Digit ( 2 ). add Digit ( 3 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 2 ). add Digit ( 4 ). add Digit ( 7 ). add Digit ( 8 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 8 , Ġ 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 6 ). add Digit ( 7 ). add Digit ( 8 ). add Digit ( 9 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 9 ), Ġgenerator . next Digits ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest With Repeated Digit () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġgenerator : ĠPassword Generator Ġ= ĠNon De creasing Generator (). add Digit ( 0 ). add Digit ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 4 ). add Digit ( 4 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 9 ). add Digit ( 9 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 0 ). add Digit ( 0 ). add Digit ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 3 ). add Digit ( 3 ). add Digit ( 3 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 9 ). add Digit ( 9 ). add Digit ( 9 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 0 ). add Digit ( 0 ). add Digit ( 0 ). add Digit ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 6 ). add Digit ( 6 ). add Digit ( 6 ). add Digit ( 6 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 6 , Ġ 7 , Ġ 8 , Ġ 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 9 ). add Digit ( 9 ). add Digit ( 9 ). add Digit ( 9 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 9 ), Ġgenerator . next Digits ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest With Non De creasing Digits () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġgenerator : ĠPassword Generator Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNon De creasing Generator (). add Digit ( 0 ). add Digit ( 0 ). add Digit ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 1 ). add Digit ( 1 ). add Digit ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 2 ). add Digit ( 2 ). add Digit ( 2 ). add Digit ( 3 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 5 ). add Digit ( 7 ). add Digit ( 7 ). add Digit ( 7 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 7 , Ġ 8 , Ġ 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 4 ). add Digit ( 5 ). add Digit ( 5 ). add Digit ( 8 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 8 , Ġ 9 ), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNon De creasing Generator (). add Digit ( 2 ). add Digit ( 4 ). add Digit ( 4 ). add Digit ( 5 ). add Digit ( 6 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( set Of ( 6 , Ġ 7 , Ġ 8 , Ġ 9 ), Ġgenerator . next Digits ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest With Non In creasing Digits () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġgenerator : ĠPassword Generator Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNon De creasing Generator (). add Digit ( 1 ). add Digit ( 0 ). add Digit ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Set (), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 2 ). add Digit ( 1 ). add Digit ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Set (), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 3 ). add Digit ( 2 ). add Digit ( 2 ). add Digit ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Set (), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 7 ). add Digit ( 7 ). add Digit ( 7 ). add Digit ( 5 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Set (), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 8 ). add Digit ( 5 ). add Digit ( 5 ). add Digit ( 4 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Set (), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNon De creasing Generator (). add Digit ( 6 ). add Digit ( 5 ). add Digit ( 4 ). add Digit ( 4 ). add Digit ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Set (), Ġgenerator . next Digits ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest With Un ordered Digits () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġgenerator : ĠPassword Generator Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNon De creasing Generator (). add Digit ( 0 ). add Digit ( 2 ). add Digit ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Set (), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 9 ). add Digit ( 7 ). add Digit ( 8 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Set (), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 1 ). add Digit ( 5 ). add Digit ( 4 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Set (), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 3 ). add Digit ( 2 ). add Digit ( 6 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Set (), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 4 ). add Digit ( 6 ). add Digit ( 6 ). add Digit ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Set (), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 9 ). add Digit ( 0 ). add Digit ( 9 ). add Digit ( 7 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Set (), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĠNon De creasing Generator (). add Digit ( 1 ). add Digit ( 3 ). add Digit ( 6 ). add Digit ( 4 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Set (), Ġgenerator . next Digits ) ĊĊĠĠĠĠĠĠĠ Ġgenerator Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNon De creasing Generator (). add Digit ( 8 ). add Digit ( 6 ). add Digit ( 8 ). add Digit ( 2 ). add Digit ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( generator . isValid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( empty Set (), Ġgenerator . next Digits ) ĊĠĠĠ Ġ} Ċ } Ċ