Skip to content

Commit 25453c6

Browse files
committed
Memento: improved example, migrated to test
1 parent e1b9d85 commit 25453c6

File tree

1 file changed

+23
-17
lines changed

1 file changed

+23
-17
lines changed

patterns/src/test/kotlin/Memento.kt

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import org.assertj.core.api.Assertions.assertThat
2+
import org.junit.jupiter.api.Test
3+
14
data class Memento(val state: String)
25

36
class Originator(var state: String) {
@@ -23,25 +26,28 @@ class CareTaker {
2326
}
2427
}
2528

26-
fun main(args: Array<String>) {
27-
val originator = Originator("initial state")
28-
val careTaker = CareTaker()
29-
careTaker.saveState(originator.createMemento())
29+
class MementoTest {
30+
31+
@Test
32+
fun `Memento`() {
33+
val originator = Originator("initial state")
34+
val careTaker = CareTaker()
35+
careTaker.saveState(originator.createMemento())
3036

31-
originator.state = "State #1"
32-
originator.state = "State #2"
33-
careTaker.saveState(originator.createMemento())
37+
originator.state = "State #1"
38+
originator.state = "State #2"
39+
careTaker.saveState(originator.createMemento())
3440

35-
originator.state = "State #3"
36-
careTaker.saveState(originator.createMemento())
41+
originator.state = "State #3"
42+
println("Current State: " + originator.state)
43+
assertThat(originator.state).isEqualTo("State #3")
3744

38-
originator.state = "State #4"
39-
println("Current State: " + originator.state)
45+
originator.restore(careTaker.restore(1))
46+
println("Second saved state: " + originator.state)
47+
assertThat(originator.state).isEqualTo("State #2")
4048

41-
originator.restore(careTaker.restore(0))
42-
println("First saved State: " + originator.state)
43-
originator.restore(careTaker.restore(1))
44-
println("Second saved State: " + originator.state)
45-
originator.restore(careTaker.restore(2))
46-
println("Second saved State: " + originator.state)
49+
originator.restore(careTaker.restore(0))
50+
println("First saved state: " + originator.state)
51+
assertThat(originator.state).isEqualTo("initial state")
52+
}
4753
}

0 commit comments

Comments
 (0)