diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..62c89355
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.idea/
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index df6458d1..9eadb11f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,7 +27,6 @@
junit
junit
4.12
- test
-
+
\ No newline at end of file
diff --git a/src/main/java/edu/kis/vh/nursery/FIFORhymer.java b/src/main/java/edu/kis/vh/nursery/FIFORhymer.java
deleted file mode 100644
index 28591ada..00000000
--- a/src/main/java/edu/kis/vh/nursery/FIFORhymer.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package edu.kis.vh.nursery;
-
-public class FIFORhymer extends defaultCountingOutRhymer {
-
- public defaultCountingOutRhymer temp = new defaultCountingOutRhymer();
-
- @Override
- public int countOut() {
- while (!callCheck())
-
- temp.countIn(super.countOut());
-
- int ret = temp.countOut();
-
- while (!temp.callCheck())
-
- countIn(temp.countOut());
-
- return ret;
- }
-}
diff --git a/src/main/java/edu/kis/vh/nursery/FIFOrhymer.java b/src/main/java/edu/kis/vh/nursery/FIFOrhymer.java
new file mode 100644
index 00000000..a7bdd886
--- /dev/null
+++ b/src/main/java/edu/kis/vh/nursery/FIFOrhymer.java
@@ -0,0 +1,25 @@
+package edu.kis.vh.nursery;
+
+public class FIFOrhymer extends defaultRhymer {
+
+ private final defaultRhymer temp = new defaultRhymer();
+
+ @Override
+ protected int getPenultimateNumber() {
+ while (!check())
+
+ temp.countIn(super.getPenultimateNumber());
+
+ int ret = temp.getPenultimateNumber();
+
+ while (!temp.check())
+
+ countIn(temp.getPenultimateNumber());
+
+ return ret;
+ }
+
+ public defaultRhymer getTemp() {
+ return temp;
+ }
+}
diff --git a/src/main/java/edu/kis/vh/nursery/HanoiRhymer.java b/src/main/java/edu/kis/vh/nursery/HanoiRhymer.java
index 755b2d58..17d50962 100644
--- a/src/main/java/edu/kis/vh/nursery/HanoiRhymer.java
+++ b/src/main/java/edu/kis/vh/nursery/HanoiRhymer.java
@@ -1,17 +1,23 @@
package edu.kis.vh.nursery;
-public class HanoiRhymer extends defaultCountingOutRhymer {
+public class HanoiRhymer extends defaultRhymer {
-int totalRejected = 0;
+ private int totalRejected = 0;
- public int reportRejected() {
+ protected int RejectedReports() {
return totalRejected;
}
- public void countIn(int in) {
- if (!callCheck() && in > peekaboo())
+ protected void countIn(int in) {
+ if (!check() && in > getLastNumber())
totalRejected++;
- else
- super.countIn(in);
+ else
+ super.countIn(in);
}
+
+ public int getTotalRejected() {
+ return totalRejected;
+ }
+
+
}
diff --git a/src/main/java/edu/kis/vh/nursery/defaultCountingOutRhymer.java b/src/main/java/edu/kis/vh/nursery/defaultCountingOutRhymer.java
deleted file mode 100644
index 199abf6d..00000000
--- a/src/main/java/edu/kis/vh/nursery/defaultCountingOutRhymer.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package edu.kis.vh.nursery;
-
-public class defaultCountingOutRhymer {
-
- private int[] NUMBERS = new int[12];
-
- public int total = -1;
-
- public void countIn(int in) {
- if (!isFull())
- NUMBERS[++total] = in;
- }
-
- public boolean callCheck() {
- return total == -1;
- }
-
- public boolean isFull() {
- return total == 11;
- }
-
- protected int peekaboo() {
- if (callCheck())
- return -1;
- return NUMBERS[total];
- }
-
- public int countOut() {
- if (callCheck())
- return -1;
- return NUMBERS[total--];
- }
-
-}
diff --git a/src/main/java/edu/kis/vh/nursery/defaultRhymer.java b/src/main/java/edu/kis/vh/nursery/defaultRhymer.java
new file mode 100644
index 00000000..174c16e6
--- /dev/null
+++ b/src/main/java/edu/kis/vh/nursery/defaultRhymer.java
@@ -0,0 +1,69 @@
+package edu.kis.vh.nursery;
+
+public class defaultRhymer {
+
+ private final int[] NUMBERS = new int[12];
+ private final int STACK_IS_EMPTY = -1;
+ private int total = -1;
+
+ public int getTotal() {
+ return total;
+ }
+ /**
+ * Adds a number to the stack if it is not full.
+ *
+ * @param in - number to be added
+ */
+ protected void countIn(int in) {
+ if (!isFull())
+ NUMBERS[++total] = in;
+ }
+ /**
+ * Checks if the stack is empty.
+ *
+ * @return true if the stack is empty, false if it's not
+ */
+ protected boolean check() {
+ return total == -1;
+ }
+
+
+ /**
+ * Checks if the stack is full.
+ *
+ * @return true if the stack is full, false if it's not
+ */
+ protected boolean isFull() {
+ return total == 11;
+ }
+ /**
+ * Returns top value of the stack.
+ *
+ * @return value at the top of stack - if stack is empty returns STACK_IS_EMPTY
+ */
+ protected int getLastNumber() {
+ if (check())
+ return STACK_IS_EMPTY;
+ return NUMBERS[total];
+ }
+ /**
+ * Removes and returns the value at the top of the stack.
+ *
+ * @return value at the top of stack - if stack is empty returns STACK_IS_EMPTY
+ */
+ protected int getPenultimateNumber() {
+ if (check())
+ return STACK_IS_EMPTY;
+ return NUMBERS[total--];
+ }
+ /**
+ * Returns the current stack.
+ *
+ * @return current stack
+ */
+ public int[] getNUMBERS() {
+ return NUMBERS;
+ }
+
+
+}
diff --git a/src/main/java/edu/kis/vh/nursery/factory/DefaultRhymersFactory.java b/src/main/java/edu/kis/vh/nursery/factory/DefaultRhymersFactory.java
index 60ba2a16..d97c6d5c 100644
--- a/src/main/java/edu/kis/vh/nursery/factory/DefaultRhymersFactory.java
+++ b/src/main/java/edu/kis/vh/nursery/factory/DefaultRhymersFactory.java
@@ -1,29 +1,28 @@
package edu.kis.vh.nursery.factory;
-import edu.kis.vh.nursery.defaultCountingOutRhymer;
-import edu.kis.vh.nursery.FIFORhymer;
+import edu.kis.vh.nursery.defaultRhymer;
+import edu.kis.vh.nursery.FIFOrhymer;
import edu.kis.vh.nursery.HanoiRhymer;
-import edu.kis.vh.nursery.factory.Rhymersfactory;
public class DefaultRhymersFactory implements Rhymersfactory {
@Override
- public defaultCountingOutRhymer GetStandardRhymer() {
- return new defaultCountingOutRhymer();
+ public defaultRhymer getStandardRhymer() {
+ return new defaultRhymer();
}
@Override
- public defaultCountingOutRhymer GetFalseRhymer() {
- return new defaultCountingOutRhymer();
+ public defaultRhymer getFalseRhymer() {
+ return new defaultRhymer();
}
@Override
- public defaultCountingOutRhymer GetFIFORhymer() {
- return new FIFORhymer();
+ public defaultRhymer getFIFORhymer() {
+ return new FIFOrhymer();
}
@Override
- public defaultCountingOutRhymer GetHanoiRhymer() {
+ public defaultRhymer getHanoiRhymer() {
return new HanoiRhymer();
}
diff --git a/src/main/java/edu/kis/vh/nursery/factory/Rhymersfactory.java b/src/main/java/edu/kis/vh/nursery/factory/Rhymersfactory.java
index 033755d0..d01013f5 100644
--- a/src/main/java/edu/kis/vh/nursery/factory/Rhymersfactory.java
+++ b/src/main/java/edu/kis/vh/nursery/factory/Rhymersfactory.java
@@ -1,15 +1,20 @@
package edu.kis.vh.nursery.factory;
-import edu.kis.vh.nursery.defaultCountingOutRhymer;
+import edu.kis.vh.nursery.defaultRhymer;
public interface Rhymersfactory {
- public defaultCountingOutRhymer GetStandardRhymer();
-
- public defaultCountingOutRhymer GetFalseRhymer();
-
- public defaultCountingOutRhymer GetFIFORhymer();
-
- public defaultCountingOutRhymer GetHanoiRhymer();
-
+ public defaultRhymer getStandardRhymer();
+ // TODO: modifier 'public' needs to be deleted - redundant for interface members
+
+
+ public defaultRhymer getFalseRhymer();
+ // TODO: modifier 'public' needs to be deleted - redundant for interface members
+
+ public defaultRhymer getFIFORhymer();
+ // TODO: modifier 'public' needs to be deleted - redundant for interface members
+
+ public defaultRhymer getHanoiRhymer();
+ // TODO: modifier 'public' needs to be deleted - redundant for interface members
+
}
diff --git a/src/main/java/edu/kis/vh/nursery/list/IntLinkedList.java b/src/main/java/edu/kis/vh/nursery/list/IntLinkedList.java
index 07efc0a2..e70f9f6d 100644
--- a/src/main/java/edu/kis/vh/nursery/list/IntLinkedList.java
+++ b/src/main/java/edu/kis/vh/nursery/list/IntLinkedList.java
@@ -2,39 +2,67 @@
public class IntLinkedList {
- Node last;
- int i;
-
+ private static final int EMPTY_VALUE = -1;
+ private Node last;
+ private int i;
+ // TODO: 'i' field needs to be deleted, it's never used
public void push(int i) {
if (last == null)
last = new Node(i);
else {
- last.next = new Node(i);
- last.next.prev = last;
- last = last.next;
+ last.setNext(new Node(i));
+ last.getNext().setPrev(last);
+ last = last.getNext();
}
}
-
public boolean isEmpty() {
return last == null;
}
-
public boolean isFull() {
return false;
}
+ // TODO: method unused, needs proper implementation
public int top() {
if (isEmpty())
- return -1;
- return last.value;
+ return EMPTY_VALUE;
+ return last.getValue();
}
-
public int pop() {
if (isEmpty())
- return -1;
- int ret = last.value;
- last = last.prev;
+ return EMPTY_VALUE;
+ int ret = last.getValue();
+ last = last.getPrev();
return ret;
}
+ private class Node {
+
+ private final int value;
+ private Node prev;
+ private Node next;
+
+ public Node(int i) {
+ value = i;
+ }
+
+ public int getValue() {
+ return value;
+ }
+ public Node getPrev() {
+ return prev;
+ }
+
+ public void setPrev(Node prev) {
+ this.prev = prev;
+ }
+
+ public Node getNext() {
+ return next;
+ }
+
+ public void setNext(Node next) {
+ this.next = next;
+ }
+ }
}
diff --git a/src/main/java/edu/kis/vh/nursery/list/IntLinkedListJUnitTest.java b/src/main/java/edu/kis/vh/nursery/list/IntLinkedListJUnitTest.java
new file mode 100644
index 00000000..9bd6c3b7
--- /dev/null
+++ b/src/main/java/edu/kis/vh/nursery/list/IntLinkedListJUnitTest.java
@@ -0,0 +1,66 @@
+package edu.kis.vh.nursery.list;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class IntLinkedListJUnitTest {
+
+ private IntLinkedList list;
+
+ @Before
+ public void setUp() {
+ list = new IntLinkedList();
+ }
+
+ @Test
+ public void testPushAndTop() {
+ Assert.assertTrue(list.isEmpty());
+ list.push(10);
+ Assert.assertFalse(list.isEmpty());
+ Assert.assertEquals(10, list.top());
+ }
+
+ @Test
+ public void testPushMultipleAndTop() {
+ for(int i = 0; i < 100; i++) {
+ list.push(i);
+ Assert.assertEquals(i, list.top());
+ }
+ list.push(30);
+ Assert.assertEquals(30, list.top());
+ }
+
+ @Test
+ public void testTopWhenEmpty() {
+ Assert.assertEquals(-1, list.top());
+ }
+
+ @Test
+ public void testPopWhenEmpty() {
+ Assert.assertEquals(-1, list.pop());
+ }
+
+ @Test
+ public void testPopSingleElement() {
+ list.push(10);
+ Assert.assertEquals(10, list.pop());
+ Assert.assertTrue(list.isEmpty());
+ }
+
+ @Test
+ public void testPopAndTopMultipleElements() {
+ list.push(100);
+ list.push(200);
+ list.push(300);
+
+ Assert.assertEquals(300, list.pop());
+ Assert.assertEquals(200, list.top());
+
+ Assert.assertEquals(200, list.pop());
+ Assert.assertEquals(100, list.top());
+
+ Assert.assertEquals(100, list.pop());
+ Assert.assertTrue(list.isEmpty());
+ }
+}
diff --git a/src/main/java/edu/kis/vh/nursery/list/Node.java b/src/main/java/edu/kis/vh/nursery/list/Node.java
deleted file mode 100644
index 0a2cd75e..00000000
--- a/src/main/java/edu/kis/vh/nursery/list/Node.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package edu.kis.vh.nursery.list;
-
-public class Node {
-
- public int value;
- public Node prev, next;
-
- public Node(int i) {
- value = i;
- }
-
-}
diff --git a/src/test/java/edu/kis/vh/nursery/RhymersDemo.java b/src/test/java/edu/kis/vh/nursery/RhymersDemo.java
index 05aba9fa..16122105 100644
--- a/src/test/java/edu/kis/vh/nursery/RhymersDemo.java
+++ b/src/test/java/edu/kis/vh/nursery/RhymersDemo.java
@@ -1,7 +1,5 @@
package edu.kis.vh.nursery;
-import edu.kis.vh.nursery.defaultCountingOutRhymer;
-import edu.kis.vh.nursery.HanoiRhymer;
import edu.kis.vh.nursery.factory.DefaultRhymersFactory;
import edu.kis.vh.nursery.factory.Rhymersfactory;
@@ -9,27 +7,29 @@ class RhymersDemo {
public static void main(String[] args) {
Rhymersfactory factory = new DefaultRhymersFactory();
-
- defaultCountingOutRhymer[] rhymers = { factory.GetStandardRhymer(), factory.GetFalseRhymer(),
- factory.GetFIFORhymer(), factory.GetHanoiRhymer()};
-
- for (int i = 1; i < 15; i++)
- for (int j = 0; j < 3; j++)
- rhymers[j].countIn(i);
-
- java.util.Random rn = new java.util.Random();
- for (int i = 1; i < 15; i++)
- rhymers[3].countIn(rn.nextInt(20));
-
- for (int i = 0; i < rhymers.length; i++) {
- while (!rhymers[i].callCheck())
- System.out.print(rhymers[i].countOut() + " ");
- System.out.println();
+ testRhymers(factory);
+ }
+ private static void testRhymers (Rhymersfactory factory){
+ defaultRhymer[] rhymers = {factory.getStandardRhymer(), factory.getFalseRhymer(),
+ factory.getFIFORhymer(), factory.getHanoiRhymer()};
+
+ for (int i = 1; i < 15; i++)
+ for (int j = 0; j < 3; j++)
+ rhymers[j].countIn(i);
+
+ java.util.Random rn = new java.util.Random();
+ for (int i = 1; i < 15; i++)
+ rhymers[3].countIn(rn.nextInt(20));
+
+ for (int i = 0; i < rhymers.length; i++) {
+ while (!rhymers[i].check())
+ System.out.print(rhymers[i].getPenultimateNumber() + " ");
+ System.out.println();
+ }
+ // TODO: Optional, can be replaced with for (DefaultRhymer rhymer : rhymers)
+
+ System.out.println("total rejected is "
+ + ((HanoiRhymer) rhymers[3]).RejectedReports());
+
}
-
- System.out.println("total rejected is "
- + ((HanoiRhymer) rhymers[3]).reportRejected());
-
}
-
-}
\ No newline at end of file
diff --git a/src/test/java/edu/kis/vh/nursery/RhymersJUnitTest.java b/src/test/java/edu/kis/vh/nursery/RhymersJUnitTest.java
index 144906eb..bdb3be90 100644
--- a/src/test/java/edu/kis/vh/nursery/RhymersJUnitTest.java
+++ b/src/test/java/edu/kis/vh/nursery/RhymersJUnitTest.java
@@ -4,74 +4,82 @@
import org.junit.Test;
public class RhymersJUnitTest {
-
+ //test launched and ended successfully, process ended with exit code 0
@Test
public void testCountIn() {
- defaultCountingOutRhymer rhymer = new defaultCountingOutRhymer();
+ defaultRhymer rhymer = new defaultRhymer();
int testValue = 4;
rhymer.countIn(testValue);
- int result = rhymer.peekaboo();
+ int result = rhymer.getLastNumber();
Assert.assertEquals(testValue, result);
}
@Test
public void testCallCheck() {
- defaultCountingOutRhymer rhymer = new defaultCountingOutRhymer();
- boolean result = rhymer.callCheck();
+ defaultRhymer rhymer = new defaultRhymer();
+ boolean result = rhymer.check();
Assert.assertEquals(true, result);
+ // TODO: Optional, assertEquals can be replaced with assertTrue
+
rhymer.countIn(888);
- result = rhymer.callCheck();
+ result = rhymer.check();
Assert.assertEquals(false, result);
}
+ // TODO: Optional, assertEquals can be replaced with assertFalse
+
@Test
public void testIsFull() {
- defaultCountingOutRhymer rhymer = new defaultCountingOutRhymer();
+ defaultRhymer rhymer = new defaultRhymer();
final int STACK_CAPACITY = 12;
for (int i = 0; i < STACK_CAPACITY; i++) {
boolean result = rhymer.isFull();
Assert.assertEquals(false, result);
rhymer.countIn(888);
}
+ // TODO: Optional, assertEquals can be replaced with assertFalse
+
boolean result = rhymer.isFull();
Assert.assertEquals(true, result);
+ // TODO: Optional, assertEquals can be replaced with assertTrue
+
}
@Test
public void testPeekaboo() {
- defaultCountingOutRhymer rhymer = new defaultCountingOutRhymer();
+ defaultRhymer rhymer = new defaultRhymer();
final int EMPTY_STACK_VALUE = -1;
- int result = rhymer.peekaboo();
+ int result = rhymer.getLastNumber();
Assert.assertEquals(EMPTY_STACK_VALUE, result);
int testValue = 4;
rhymer.countIn(testValue);
- result = rhymer.peekaboo();
+ result = rhymer.getLastNumber();
Assert.assertEquals(testValue, result);
- result = rhymer.peekaboo();
+ result = rhymer.getLastNumber();
Assert.assertEquals(testValue, result);
}
@Test
public void testCountOut() {
- defaultCountingOutRhymer rhymer = new defaultCountingOutRhymer();
+ defaultRhymer rhymer = new defaultRhymer();
final int EMPTY_STACK_VALUE = -1;
- int result = rhymer.countOut();
+ int result = rhymer.getPenultimateNumber();
Assert.assertEquals(EMPTY_STACK_VALUE, result);
int testValue = 4;
rhymer.countIn(testValue);
- result = rhymer.countOut();
+ result = rhymer.getPenultimateNumber();
Assert.assertEquals(testValue, result);
- result = rhymer.countOut();
+ result = rhymer.getPenultimateNumber();
Assert.assertEquals(EMPTY_STACK_VALUE, result);
}
diff --git a/target/classes/edu/kis/vh/nursery/FIFOrhymer.class b/target/classes/edu/kis/vh/nursery/FIFOrhymer.class
new file mode 100644
index 00000000..003b305c
Binary files /dev/null and b/target/classes/edu/kis/vh/nursery/FIFOrhymer.class differ
diff --git a/target/classes/edu/kis/vh/nursery/HanoiRhymer.class b/target/classes/edu/kis/vh/nursery/HanoiRhymer.class
new file mode 100644
index 00000000..15f6d275
Binary files /dev/null and b/target/classes/edu/kis/vh/nursery/HanoiRhymer.class differ
diff --git a/target/classes/edu/kis/vh/nursery/defaultRhymer.class b/target/classes/edu/kis/vh/nursery/defaultRhymer.class
new file mode 100644
index 00000000..5ac1d143
Binary files /dev/null and b/target/classes/edu/kis/vh/nursery/defaultRhymer.class differ
diff --git a/target/classes/edu/kis/vh/nursery/factory/DefaultRhymersFactory.class b/target/classes/edu/kis/vh/nursery/factory/DefaultRhymersFactory.class
new file mode 100644
index 00000000..4e139ff9
Binary files /dev/null and b/target/classes/edu/kis/vh/nursery/factory/DefaultRhymersFactory.class differ
diff --git a/target/classes/edu/kis/vh/nursery/factory/Rhymersfactory.class b/target/classes/edu/kis/vh/nursery/factory/Rhymersfactory.class
new file mode 100644
index 00000000..f96d9360
Binary files /dev/null and b/target/classes/edu/kis/vh/nursery/factory/Rhymersfactory.class differ
diff --git a/target/classes/edu/kis/vh/nursery/list/IntLinkedList$Node.class b/target/classes/edu/kis/vh/nursery/list/IntLinkedList$Node.class
new file mode 100644
index 00000000..24b7a92d
Binary files /dev/null and b/target/classes/edu/kis/vh/nursery/list/IntLinkedList$Node.class differ
diff --git a/target/classes/edu/kis/vh/nursery/list/IntLinkedList.class b/target/classes/edu/kis/vh/nursery/list/IntLinkedList.class
new file mode 100644
index 00000000..59a6d55d
Binary files /dev/null and b/target/classes/edu/kis/vh/nursery/list/IntLinkedList.class differ
diff --git a/target/classes/edu/kis/vh/nursery/list/IntLinkedListJUnitTest.class b/target/classes/edu/kis/vh/nursery/list/IntLinkedListJUnitTest.class
new file mode 100644
index 00000000..51503ce8
Binary files /dev/null and b/target/classes/edu/kis/vh/nursery/list/IntLinkedListJUnitTest.class differ
diff --git a/target/test-classes/edu/kis/vh/nursery/RhymersDemo.class b/target/test-classes/edu/kis/vh/nursery/RhymersDemo.class
new file mode 100644
index 00000000..404f3be5
Binary files /dev/null and b/target/test-classes/edu/kis/vh/nursery/RhymersDemo.class differ
diff --git a/target/test-classes/edu/kis/vh/nursery/RhymersJUnitTest.class b/target/test-classes/edu/kis/vh/nursery/RhymersJUnitTest.class
new file mode 100644
index 00000000..3d9ff426
Binary files /dev/null and b/target/test-classes/edu/kis/vh/nursery/RhymersJUnitTest.class differ