package Ġio . kom mon s . design patterns . state Ċ Ċ import Ġio . kom mon s . junit . jupiter . output . InMemory Appender Ċ import Ġio . kom mon s . logging . K Logging Ċ import Ġorg . am sh ove . k lu ent . shouldBe EqualTo Ċ import Ġorg . am sh ove . k lu ent . should Equal Ċ import Ġorg . am sh ove . k lu ent . should EqualTo Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ class ĠM am month Test Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject : ĠK Logging () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġapp ender : ĠIn Memory Appender ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġapp ender Ġ= ĠIn Memory Appender () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun Ġcleanup () Ġ{ ĊĠĠĠĠĠĠĠ Ġapp ender . stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` run Ġtime P asses `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm am mo th Ġ= ĠM am mo th () ĊĊĠĠĠĠĠĠĠ Ġm am mo th . observe () ĊĠĠĠĠĠĠĠ Ġapp ender . last Message Ġshould Equal Ġ" The Ġm am mo th Ġis Ġcal m Ġand Ġpe ace ful ." ĊĠĠĠĠĠĠĠ Ġapp ender . size Ġshould EqualTo Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġm am mo th . time passes () ĊĠĠĠĠĠĠĠ Ġapp ender . last Message Ġshould Equal Ġ" The Ġm am mo th Ġgets Ġan gry !" ĊĠĠĠĠĠĠĠ Ġapp ender . size Ġshould EqualTo Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġm am mo th . observe () ĊĠĠĠĠĠĠĠ Ġapp ender . last Message Ġshould Equal Ġ" The Ġm am mo th Ġis Ġf ur ious !" ĊĠĠĠĠĠĠĠ Ġapp ender . size Ġshould EqualTo Ġ 3 ĊĊĠĠĠĠĠĠĠ Ġm am mo th . time passes () ĊĠĠĠĠĠĠĠ Ġapp ender . last Message Ġshould Equal Ġ" The Ġm am mo th Ġcal ms Ġdown ." ĊĠĠĠĠĠĠĠ Ġapp ender . size Ġshould EqualTo Ġ 4 ĊĊĠĠĠĠĠĠĠ Ġm am mo th . observe () ĊĠĠĠĠĠĠĠ Ġapp ender . last Message Ġshould Equal Ġ" The Ġm am mo th Ġis Ġcal m Ġand Ġpe ace ful ." ĊĠĠĠĠĠĠĠ Ġapp ender . size Ġshould EqualTo Ġ 5 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify ĠtoString `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtoString Ġ= ĠM am mo th (). toString () ĊĠĠĠĠĠĠĠ ĠtoString ĠshouldBe EqualTo Ġ" The Ġm am mo th " ĊĠĠĠ Ġ} Ċ }