diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..aa016c3
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+stateexercise-361
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..964e067
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..b26911b
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..4b661a5
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..04596b1
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,448 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ kz.edu.nu.cs.exercise.*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1535118363354
+
+
+ 1535118363354
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.8
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
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..674cd71
--- /dev/null
+++ b/src/main/java/kz/edu/nu/cs/exercise/State1.java
@@ -0,0 +1,22 @@
+package kz.edu.nu.cs.exercise;
+
+public class State1 extends State {
+
+ public State1(StateContext sc) {
+ this.sc = sc;
+ }
+
+ @Override
+ public void actionA() {
+ sc.setCurrentState(sc.state2);
+ }
+
+ public void actionB() {
+ sc.setCurrentState(sc.state1);
+ }
+
+ @Override
+ public boolean isAccept() {
+ return false;
+ }
+}
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..9043247
--- /dev/null
+++ b/src/main/java/kz/edu/nu/cs/exercise/State2.java
@@ -0,0 +1,22 @@
+package kz.edu.nu.cs.exercise;
+
+public class State2 extends State {
+
+ public State2(StateContext sc) {
+ this.sc = sc;
+ }
+
+ @Override
+ public void actionA() {
+ this.sc.setCurrentState(sc.state3);
+ }
+
+ public void actionB() {
+ this.sc.setCurrentState(sc.state1);
+ }
+
+ @Override
+ public boolean isAccept() {
+ return false;
+ }
+}
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..d811638
--- /dev/null
+++ b/src/main/java/kz/edu/nu/cs/exercise/State3.java
@@ -0,0 +1,24 @@
+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);
+ }
+
+ public void actionB() {
+ sc.setCurrentState(sc.state2);
+
+ }
+
+ @Override
+ public boolean isAccept() {
+ return true;
+ }
+}
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..ed32c2b 100644
--- a/src/main/java/kz/edu/nu/cs/exercise/StateContext.java
+++ b/src/main/java/kz/edu/nu/cs/exercise/StateContext.java
@@ -14,17 +14,24 @@ public StateContext() {
public void actionA() {
// complete this method by
// delegation to the current state
+ currentState.actionA();
}
public void actionB() {
// complete this method
// delegate to the current state
+ currentState.actionB();
}
public boolean inAcceptState() {
// complete this method and return correct value
// delegate to the current state
- return false;
+ if(this.currentState == state3) {
+ return true;
+ } else {
+ return false;
+ }
+
}
public State getCurrentState() {
diff --git a/src/main/main.iml b/src/main/main.iml
new file mode 100644
index 0000000..908ad4f
--- /dev/null
+++ b/src/main/main.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
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..1aea395 100644
--- a/src/test/java/kz/edu/nu/cs/exercise/TestStatePattern.java
+++ b/src/test/java/kz/edu/nu/cs/exercise/TestStatePattern.java
@@ -1,11 +1,11 @@
package kz.edu.nu.cs.exercise;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
import org.junit.Before;
import org.junit.Test;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
public class TestStatePattern {
StateContext sc;
diff --git a/src/test/test.iml b/src/test/test.iml
new file mode 100644
index 0000000..a0e49a3
--- /dev/null
+++ b/src/test/test.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file