diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..e673575a --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea/ +target/ \ No newline at end of file diff --git a/src/main/java/edu/kis/vh/nursery/DefaultCountingOutRhymer.java b/src/main/java/edu/kis/vh/nursery/DefaultCountingOutRhymer.java new file mode 100644 index 00000000..37f99909 --- /dev/null +++ b/src/main/java/edu/kis/vh/nursery/DefaultCountingOutRhymer.java @@ -0,0 +1,67 @@ +package edu.kis.vh.nursery; + +/** + * + */ + +public class DefaultCountingOutRhymer { + /** + * @param in + */ + + public static final int CAPACITY = 12; + public static final int INIT_INDEX = -1; + public static final int FULL = 11; + private final int[] NUMBERS = new int[CAPACITY]; + + private int total = INIT_INDEX; + + /** + * @return + */ + public int getTotal(){ + return total; + } + + protected void countIn(int in) { + if (!isFull()) + NUMBERS[++total] = in; + } + + /** + * @return + */ + protected boolean callCheck() { + return total == INIT_INDEX; + } + /** + * @return + */ + protected boolean isFull() { + + return total == FULL; + } + + /** + * @return + */ + protected int peekaboo() { + if (callCheck()) + return INIT_INDEX; + return NUMBERS[total]; + } + + /** + * @return + */ + protected int countOut() { + if (callCheck()) + return INIT_INDEX; + return NUMBERS[total--]; + } + + public int[] getNUMBERS() { + return NUMBERS; + } + +} diff --git a/src/main/java/edu/kis/vh/nursery/FIFORhymer.java b/src/main/java/edu/kis/vh/nursery/FIFORhymer.java index 489e7b3c..35e94957 100644 --- a/src/main/java/edu/kis/vh/nursery/FIFORhymer.java +++ b/src/main/java/edu/kis/vh/nursery/FIFORhymer.java @@ -1,21 +1,21 @@ package edu.kis.vh.nursery; -public class FIFORhymer extends defaultCountingOutRhymer { +public class FIFORhymer extends DefaultCountingOutRhymer { + + private DefaultCountingOutRhymer temp = new DefaultCountingOutRhymer(); - public defaultCountingOutRhymer temp = new defaultCountingOutRhymer(); - @Override public int countOut() { while (!callCheck()) - - temp.countIn(super.countOut()); - + + temp.countIn(super.countOut()); + int ret = temp.countOut(); - + while (!temp.callCheck()) - - countIn(temp.countOut()); - + + countIn(temp.countOut()); + return ret; } } diff --git a/src/main/java/edu/kis/vh/nursery/HanoiRhymer.java b/src/main/java/edu/kis/vh/nursery/HanoiRhymer.java index 62b1d00b..53c0f0d6 100644 --- a/src/main/java/edu/kis/vh/nursery/HanoiRhymer.java +++ b/src/main/java/edu/kis/vh/nursery/HanoiRhymer.java @@ -1,17 +1,20 @@ package edu.kis.vh.nursery; -public class HanoiRhymer extends defaultCountingOutRhymer { +public class HanoiRhymer extends DefaultCountingOutRhymer { -int totalRejected = 0; + int totalRejected = 0; public int reportRejected() { return totalRejected; } + + + @Override public void countIn(int in) { - if (!callCheck() && in > peekaboo()) + if (!callCheck() && in > peekaboo()) totalRejected++; - else - super.countIn(in); + else + super.countIn(in); } } 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 d54e3474..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/factory/DefaultRhymersFactory.java b/src/main/java/edu/kis/vh/nursery/factory/DefaultRhymersFactory.java index 37aa0f64..86482bb9 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,29 @@ package edu.kis.vh.nursery.factory; -import edu.kis.vh.nursery.defaultCountingOutRhymer; +import edu.kis.vh.nursery.DefaultCountingOutRhymer; import edu.kis.vh.nursery.FIFORhymer; import edu.kis.vh.nursery.HanoiRhymer; -import edu.kis.vh.nursery.factory.Rhymersfactory; +import edu.kis.vh.nursery.factory.RhymersFactory; -public class DefaultRhymersFactory implements Rhymersfactory { +public class DefaultRhymersFactory implements RhymersFactory { @Override - public defaultCountingOutRhymer GetStandardRhymer() { - return new defaultCountingOutRhymer(); + public DefaultCountingOutRhymer getStandardRhymer() { + return new DefaultCountingOutRhymer(); } @Override - public defaultCountingOutRhymer GetFalseRhymer() { - return new defaultCountingOutRhymer(); + public DefaultCountingOutRhymer getFalseRhymer() { + return new DefaultCountingOutRhymer(); } @Override - public defaultCountingOutRhymer GetFIFORhymer() { + public DefaultCountingOutRhymer getFIFORhymer() { return new FIFORhymer(); } @Override - public defaultCountingOutRhymer GetHanoiRhymer() { + public DefaultCountingOutRhymer 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 new file mode 100644 index 00000000..d1172e1d --- /dev/null +++ b/src/main/java/edu/kis/vh/nursery/factory/RhymersFactory.java @@ -0,0 +1,15 @@ +package edu.kis.vh.nursery.factory; + +import edu.kis.vh.nursery.DefaultCountingOutRhymer; + +public interface RhymersFactory { + + public DefaultCountingOutRhymer getStandardRhymer(); + + public DefaultCountingOutRhymer getFalseRhymer(); + + public DefaultCountingOutRhymer getFIFORhymer(); + + public DefaultCountingOutRhymer getHanoiRhymer(); + +} diff --git a/src/main/java/edu/kis/vh/nursery/factory/Rhymersfactory.java b/src/main/java/edu/kis/vh/nursery/factory/Rhymersfactory.java deleted file mode 100644 index b46d7b5e..00000000 --- a/src/main/java/edu/kis/vh/nursery/factory/Rhymersfactory.java +++ /dev/null @@ -1,15 +0,0 @@ -package edu.kis.vh.nursery.factory; - -import edu.kis.vh.nursery.defaultCountingOutRhymer; - - public interface Rhymersfactory { - - public defaultCountingOutRhymer GetStandardRhymer(); - - public defaultCountingOutRhymer GetFalseRhymer(); - - public defaultCountingOutRhymer GetFIFORhymer(); - - public defaultCountingOutRhymer GetHanoiRhymer(); - - } 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 3e29f48f..365c9363 100644 --- a/src/main/java/edu/kis/vh/nursery/list/IntLinkedList.java +++ b/src/main/java/edu/kis/vh/nursery/list/IntLinkedList.java @@ -2,16 +2,18 @@ public class IntLinkedList { - Node last; - int i; + + public static final int EMPTY = -1; + private Node last; + private int i; 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(); } } @@ -25,15 +27,15 @@ public boolean isFull() { public int top() { if (isEmpty()) - return -1; - return last.value; + return EMPTY; + return last.getValue(); } public int pop() { if (isEmpty()) - return -1; - int ret = last.value; - last = last.prev; + return EMPTY; + int ret = last.getValue(); + last = last.getPrev(); return ret; } diff --git a/src/main/java/edu/kis/vh/nursery/list/Node.java b/src/main/java/edu/kis/vh/nursery/list/Node.java index 0db70aec..dca3258e 100644 --- a/src/main/java/edu/kis/vh/nursery/list/Node.java +++ b/src/main/java/edu/kis/vh/nursery/list/Node.java @@ -2,11 +2,11 @@ public class Node { - public int value; - public Node prev, next; + private int value; + private 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 7897c2c2..3e95657d 100644 --- a/src/test/java/edu/kis/vh/nursery/RhymersDemo.java +++ b/src/test/java/edu/kis/vh/nursery/RhymersDemo.java @@ -1,35 +1,39 @@ package edu.kis.vh.nursery; -import edu.kis.vh.nursery.defaultCountingOutRhymer; +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; +import edu.kis.vh.nursery.factory.RhymersFactory; class RhymersDemo { - public static void main(String[] args) { - Rhymersfactory factory = new DefaultRhymersFactory(); - - defaultCountingOutRhymer[] rhymers = { factory.GetStandardRhymer(), factory.GetFalseRhymer(), - factory.GetFIFORhymer(), factory.GetHanoiRhymer()}; - + public static void main(String [] args) { + RhymersFactory factory = new DefaultRhymersFactory(); + + testRhymers(factory); + + } + + private static void testRhymers(RhymersFactory factory) { + 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(); } - + 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 1b8c941e..4d59052d 100644 --- a/src/test/java/edu/kis/vh/nursery/RhymersJUnitTest.java +++ b/src/test/java/edu/kis/vh/nursery/RhymersJUnitTest.java @@ -7,7 +7,7 @@ public class RhymersJUnitTest { @Test public void testCountIn() { - defaultCountingOutRhymer rhymer = new defaultCountingOutRhymer(); + DefaultCountingOutRhymer rhymer = new DefaultCountingOutRhymer(); int testValue = 4; rhymer.countIn(testValue); @@ -17,7 +17,7 @@ public void testCountIn() { @Test public void testCallCheck() { - defaultCountingOutRhymer rhymer = new defaultCountingOutRhymer(); + DefaultCountingOutRhymer rhymer = new DefaultCountingOutRhymer(); boolean result = rhymer.callCheck(); Assert.assertEquals(true, result); @@ -29,7 +29,7 @@ public void testCallCheck() { @Test public void testIsFull() { - defaultCountingOutRhymer rhymer = new defaultCountingOutRhymer(); + DefaultCountingOutRhymer rhymer = new DefaultCountingOutRhymer(); final int STACK_CAPACITY = 12; for (int i = 0; i < STACK_CAPACITY; i++) { boolean result = rhymer.isFull(); @@ -43,7 +43,7 @@ public void testIsFull() { @Test public void testPeekaboo() { - defaultCountingOutRhymer rhymer = new defaultCountingOutRhymer(); + DefaultCountingOutRhymer rhymer = new DefaultCountingOutRhymer(); final int EMPTY_STACK_VALUE = -1; int result = rhymer.peekaboo(); @@ -60,7 +60,7 @@ public void testPeekaboo() { @Test public void testCountOut() { - defaultCountingOutRhymer rhymer = new defaultCountingOutRhymer(); + DefaultCountingOutRhymer rhymer = new DefaultCountingOutRhymer(); final int EMPTY_STACK_VALUE = -1; int result = rhymer.countOut();