diff --git a/src/main/java/kz/edu/nu/cs/exercise/State1.java b/src/main/java/kz/edu/nu/cs/exercise/State1.java new file mode 100644 index 0000000..ee8244a --- /dev/null +++ b/src/main/java/kz/edu/nu/cs/exercise/State1.java @@ -0,0 +1,20 @@ +package kz.edu.nu.cs.exercise; + +public class State1 extends State { + + public State1(StateContext sc) { + this.sc = sc; + this.accept = false; + } + + @Override + public void actionA(){ + sc.setCurrentState(sc.state2); + } + + @Override + public void actionB(){ + sc.setCurrentState(sc.state1); + } + + } diff --git a/src/main/java/kz/edu/nu/cs/exercise/State2.java b/src/main/java/kz/edu/nu/cs/exercise/State2.java new file mode 100644 index 0000000..4ab293e --- /dev/null +++ b/src/main/java/kz/edu/nu/cs/exercise/State2.java @@ -0,0 +1,21 @@ +package kz.edu.nu.cs.exercise; + +public class State2 extends State { + + public State2(StateContext sc) { + this.sc = sc; + this.accept = false; + } + + @Override + public void actionA() { + + sc.setCurrentState(sc.state3); + } + + @Override + public void actionB() { + + sc.setCurrentState(sc.state1); + } +} diff --git a/src/main/java/kz/edu/nu/cs/exercise/State3.java b/src/main/java/kz/edu/nu/cs/exercise/State3.java new file mode 100644 index 0000000..6cc3d90 --- /dev/null +++ b/src/main/java/kz/edu/nu/cs/exercise/State3.java @@ -0,0 +1,19 @@ +package kz.edu.nu.cs.exercise; + +public class State3 extends State { + + public State3(StateContext sc) { + this.sc = sc; + this.accept = true; + } + + @Override + public void actionA() { + sc.setCurrentState(sc.state3); + } + + @Override + public void actionB() { + sc.setCurrentState(sc.state2); + } +} diff --git a/src/main/java/kz/edu/nu/cs/exercise/StateContext.java b/src/main/java/kz/edu/nu/cs/exercise/StateContext.java index 3b154c4..289e8f5 100644 --- a/src/main/java/kz/edu/nu/cs/exercise/StateContext.java +++ b/src/main/java/kz/edu/nu/cs/exercise/StateContext.java @@ -1,33 +1,35 @@ package kz.edu.nu.cs.exercise; public class StateContext { - final State state1 = new State1(this); - final State state2 = new State2(this); - final State state3 = new State3(this); + + public final State state1 = new State1(this); + public final State state2 = new State2(this); + public final State state3 = new State3(this); private State currentState; public StateContext() { + this.currentState = state1; } public void actionA() { - // complete this method by - // delegation to the current state + this.getCurrentState().actionA(); } public void actionB() { - // complete this method - // delegate to the current state + this.getCurrentState().actionB(); + } public boolean inAcceptState() { - // complete this method and return correct value - // delegate to the current state - return false; + + return this.getCurrentState().isAccept(); + } public State getCurrentState() { + return currentState; } diff --git a/src/test/java/kz/edu/nu/cs/exercise/TestStatePattern.java b/src/test/java/kz/edu/nu/cs/exercise/TestStatePattern.java index 57b01eb..1823882 100644 --- a/src/test/java/kz/edu/nu/cs/exercise/TestStatePattern.java +++ b/src/test/java/kz/edu/nu/cs/exercise/TestStatePattern.java @@ -1,5 +1,7 @@ package kz.edu.nu.cs.exercise; + + import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue;