#13 Generic DS

Open
NavyaSanal wants to merge 1 commits from NavyaSanal/ZCW-MesoLabs-Generics-GenericDataStructures:Navya into master

+ 10
- 0
src/main/java/ArrayListCombiner/ArrayListCombiner.java View File

@@ -9,4 +9,14 @@ import java.util.ArrayList;
9 9
  * The second method should be called superCombiner and should use ? super E
10 10
  */
11 11
 public class ArrayListCombiner {
12
+    public static <E> void extendCombiner(ArrayList<E> first, ArrayList<? extends E> second) {
13
+        first.addAll(second); }
14
+
15
+    public static <E> void superCombiner(ArrayList<? super E> first, ArrayList<E> second) {
16
+        first.addAll(second);
17
+    }
12 18
 }
19
+
20
+
21
+
22
+

+ 21
- 1
src/main/java/MapFunc/MapFunc.java View File

@@ -1,5 +1,6 @@
1 1
 package MapFunc;
2 2
 
3
+import javax.xml.bind.Element;
3 4
 import java.util.ArrayList;
4 5
 import java.util.function.Function;
5 6
 
@@ -7,6 +8,25 @@ import java.util.function.Function;
7 8
  * Create a function called `map` that takes an ArrayList and a `Function<T,R>` object,
8 9
  * and returns an ArrayList with all of the elements of the first after the function is applied to them.
9 10
  */
10
-public class MapFunc {
11
+public  class MapFunc {
12
+
13
+    public  static<T,R> ArrayList map(ArrayList<T> intList, Function<T, R> MapDemo)//Array list then arrayList name;fUNCTION then function nmae
14
+    {
15
+        ArrayList<T> resultArrayList = new ArrayList<T>(); //cREATING NEW aRRAYLIST
16
+
17
+        for(T e : intList)   //Traversing through arrayList and applying each element to function
18
+        {
19
+           resultArrayList.add((T) MapDemo.apply(e)); // aPPLYING function MapDemo to 1st element in the list(i.e MapDemo.apply(e)).Then adding that to resultArrayList(i.e resultArrayList.add)    
20
+        }
21
+
22
+
23
+return resultArrayList;
24
+
25
+    }
26
+
27
+
28
+
29
+
30
+
11 31
 
12 32
 }

+ 4
- 4
src/main/java/Pair/Arrays.java View File

@@ -10,7 +10,7 @@ import java.util.Collections;
10 10
  * A max method that returns the largest item in the arraylist
11 11
  * And a minmax method that returns a pair containing the largest and smallest items from the array list
12 12
  */
13
-public class Arrays {
14
-    public static <___> Pair<E> firstLast(ArrayList<___> a) {
15
-    }
16
-}
13
+/*public class Arrays {
14
+  /*  public static <___> Pair<E> firstLast(ArrayList<___> a) {
15
+    }*/
16
+

+ 84
- 2
src/main/java/StackArray/GenericStack.java View File

@@ -1,6 +1,8 @@
1 1
 package StackArray;
2 2
 
3
+import java.lang.reflect.Array;
3 4
 import java.util.Arrays;
5
+import java.util.EmptyStackException;
4 6
 
5 7
 /**
6 8
  * Expand the ArrayList implementation of stack here to use an E[] array.  Still implement push, pop, and isEmpty.
@@ -8,8 +10,88 @@ import java.util.Arrays;
8 10
  * @param <E>
9 11
  */
10 12
 public class GenericStack<E> {
11
-    private E[] elements;
12 13
 
13
-    public GenericStack() {
14
+    private E[] inputArray;
15
+
16
+
17
+    private int numOfElements;
18
+
19
+
20
+    public GenericStack(int size) {   //Even if array length is 8, numOfElements  can be 0 ie,it can have 0 or any num:of elements
21
+        this.numOfElements = 0;
22
+        inputArray = (E[])new Object[size];
23
+//        inputArray = (E[]) Array.newInstance(inputArray.getClass().getComponentType(), size);
24
+        //inputArray = (E[]) new Object[size];
25
+    }
26
+
27
+    public void push(E I) {
28
+        if(inputArray.length >= numOfElements)
29
+        {
30
+            inputArray[numOfElements] =  I;
31
+            System.out.println(inputArray[numOfElements]);
32
+            numOfElements++;
33
+
34
+        }
35
+        else {
36
+
37
+            E[] inputArray1 = Arrays.copyOf(inputArray, inputArray.length + 1);
38
+
39
+            //int index = inputArray.length;
40
+
41
+            inputArray1[inputArray.length] = I;
42
+            numOfElements++;
43
+            inputArray = inputArray1;
44
+        }
45
+
46
+    }
47
+
48
+    public boolean isEmpty() {
49
+        if(numOfElements == 0)
50
+        {
51
+            return true;
52
+        }
53
+        else
54
+        {
55
+            return  false;
56
+        }
57
+
58
+
14 59
     }
60
+
61
+
62
+
63
+    /*private boolean isFull() {
64
+        if (index == size) {
65
+            return true;
66
+        } else {
67
+            return false;
68
+        }
69
+    }*/
70
+
71
+
72
+    public E pop()
73
+    {
74
+        E popedVar;
75
+        if(numOfElements == 0)
76
+        {
77
+           throw new IndexOutOfBoundsException();
78
+        }
79
+        else
80
+        {
81
+
82
+          popedVar= inputArray[numOfElements-1];
83
+            //E[] inputArray1 = Arrays.copyOf(inputArray, inputArray.length -1);
84
+
85
+           // inputArray = inputArray1;
86
+            numOfElements--;
87
+
88
+        }
89
+
90
+        return  popedVar;
91
+
92
+
93
+    }
94
+
95
+
96
+
15 97
 }

+ 19
- 0
src/main/java/StackArray/ObjectStack.java View File

@@ -10,7 +10,26 @@ import java.util.Arrays;
10 10
 public class ObjectStack<E> {
11 11
     private Object[] elements;
12 12
 
13
+    GenericStack gs ;
14
+
13 15
     public ObjectStack() {
16
+        gs = new GenericStack(9); //cannot declare anything in constructor,then scope will be inside constructor.
17
+
18
+    }
19
+    public boolean isEmpty()
20
+    {
21
+        return gs.isEmpty();
22
+    }
14 23
 
24
+    public void push(E i)
25
+    {
26
+         gs.push(i);
15 27
     }
28
+
29
+    public E pop()
30
+    {
31
+       return (E) gs.pop();
32
+    }
33
+
34
+
16 35
 }

+ 34
- 2
src/main/java/StackArrayList/Stack.java View File

@@ -7,10 +7,42 @@ import java.util.ArrayList;
7 7
  * If you pop on an empty stack, throw an IndexOutOfBoundsException.
8 8
  */
9 9
 public class Stack<E> {
10
-    private ArrayList elements;
11 10
 
11
+    //private ArrayList elements;
12 12
 
13
-    public Stack(){
13
+    private ArrayList<E> myStack;
14 14
 
15
+
16
+    public Stack() {
17
+        myStack = new ArrayList<E>();
18
+    }
19
+
20
+   /* public Stack(int Size){
21
+        Stack = new ArrayList<Integer>(Size);
22
+
23
+    }*/
24
+    public void push(E i)
25
+    {
26
+        myStack.add(i);
27
+    }
28
+
29
+    public E pop()
30
+    {
31
+        if(!myStack.isEmpty()) {
32
+            E i= myStack.get(myStack.size()-1);
33
+            myStack.remove(myStack.size()-1);
34
+            return i;
35
+        } else{
36
+            throw new ArrayIndexOutOfBoundsException();
37
+        }
38
+    }
39
+
40
+    public boolean isEmpty()
41
+    {
42
+        if(myStack.size() == 0)
43
+        {
44
+            return true;
45
+        }
46
+        return false;
15 47
     }
16 48
 }

+ 5
- 1
src/main/java/Swap/Swap.java View File

@@ -4,10 +4,14 @@ package Swap;
4 4
  * Keep this.  Just make it so the tests pass.
5 5
  */
6 6
 public class Swap {
7
-    public static <T> T[] swap(int i, int j, T... values) {
7
+    public static <T> T[] swap(int i, int j, double v, int i1, int i2, T... values) {
8 8
         T temp = values[i];
9 9
         values[i] = values[j];
10 10
         values[j] = temp;
11 11
         return values;
12 12
     }
13
+
14
+    public static Double[] swap(int i, int j, double v, double v1, double v2) {
15
+        return null;
16
+    }
13 17
 }

+ 2
- 0
src/main/java/Table/Entry.java View File

@@ -17,4 +17,6 @@ public class Entry<K, V> {
17 17
         return value;
18 18
     }
19 19
 
20
+    public <V> void setValue(V v) {
21
+    }
20 22
 }

+ 35
- 1
src/main/java/Table/Table.java View File

@@ -10,8 +10,42 @@ import java.util.ArrayList;
10 10
  * Void return on `remove`.
11 11
  */
12 12
 public class Table<K, V> {
13
-    private ArrayList entries;
13
+    private ArrayList<Entry> entries;
14 14
 
15 15
     public Table() {
16
+        this.entries = new ArrayList<>();
16 17
     }
18
+
19
+    public V get(K k){
20
+        V value = null;
21
+        for(Entry e: entries){
22
+            if(e.getKey().equals(k)){
23
+                value = (V)e.getValue();
24
+            }
25
+        }
26
+        return value;
27
+    }
28
+
29
+    public void put(K k, V v){
30
+        Entry newEntry = new Entry(k,v);
31
+        if(entries.contains(newEntry.getKey())) {
32
+            for (Entry e : entries) {
33
+                if (e.getKey().equals(k)) {
34
+                    e.setValue(v);
35
+                }
36
+            }
37
+        } else entries.add(newEntry);
38
+    }
39
+
40
+    public void remove(K k){
41
+        int removeIndex = -1;
42
+        for (Entry e: entries) {
43
+            if(k.equals(e.getKey())){
44
+                removeIndex = entries.indexOf(e);
45
+            }
46
+        }
47
+        entries.remove(removeIndex);
48
+    }
49
+
17 50
 }
51
+

+ 35
- 35
src/test/java/ArrayListCombiner/ArrayListCombinerTest.java View File

@@ -9,40 +9,40 @@ import org.junit.Assert;
9 9
 import java.util.ArrayList;
10 10
 
11 11
 public class ArrayListCombinerTest {
12
-//    Employee foo = new Employee("FOO", 100);
13
-//    Manager bar = new Manager("BAR", 100);
14
-//    @Test
15
-//    public void testExtendCombiner() throws Exception {
16
-//        // Given an array list with employees
17
-//        ArrayList<Employee> first = new ArrayList<>();
18
-//        first.add(foo);
19
-//        // An an array list with managers
20
-//        ArrayList<Manager> second = new ArrayList<>();
21
-//        second.add(bar);
22
-//        // When  I combine them
23
-//        ArrayListCombiner.extendCombiner(first, second);
24
-//        // Then I should get an arrayList with both
25
-//        ArrayList<Employee> expected = new ArrayList<>();
26
-//        expected.add(foo);
27
-//        expected.add(bar);
28
-//        Assert.assertEquals(expected, first);
29
-//    }
30
-//
31
-//    @Test
32
-//    public void testSuperCombiner() throws Exception {
33
-//        // Given an array list with employees
34
-//        ArrayList<Employee> first = new ArrayList<>();
35
-//        first.add(foo);
36
-//        // An an array list with managers
37
-//        ArrayList<Manager> second = new ArrayList<>();
38
-//        second.add(bar);
39
-//        // When  I combine them
40
-//        ArrayListCombiner.superCombiner(first, second);
41
-//        // Then I should get an arrayList with both
42
-//        ArrayList<Employee> expected = new ArrayList<>();
43
-//        expected.add(foo);
44
-//        expected.add(bar);
45
-//        Assert.assertEquals(expected, first);
46
-//    }
12
+    Employee foo = new Employee("FOO", 100);
13
+    Manager bar = new Manager("BAR", 100);
14
+    @Test
15
+    public void testExtendCombiner() throws Exception {
16
+        // Given an array list with employees
17
+        ArrayList<Employee> first = new ArrayList<>();
18
+        first.add(foo);
19
+        // An an array list with managers
20
+        ArrayList<Manager> second = new ArrayList<>();
21
+        second.add(bar);
22
+        // When  I combine them
23
+        ArrayListCombiner.extendCombiner(first, second);
24
+        // Then I should get an arrayList with both
25
+        ArrayList<Employee> expected = new ArrayList<>();
26
+        expected.add(foo);
27
+        expected.add(bar);
28
+        Assert.assertEquals(expected, first);
29
+    }
30
+
31
+    @Test
32
+    public void testSuperCombiner() throws Exception {
33
+        // Given an array list with employees
34
+        ArrayList<Employee> first = new ArrayList<>();
35
+        first.add(foo);
36
+        // An an array list with managers
37
+        ArrayList<Manager> second = new ArrayList<>();
38
+        second.add(bar);
39
+        // When  I combine them
40
+        ArrayListCombiner.superCombiner(first, second);
41
+        // Then I should get an arrayList with both
42
+        ArrayList<Employee> expected = new ArrayList<>();
43
+        expected.add(foo);
44
+        expected.add(bar);
45
+        Assert.assertEquals(expected, first);
46
+    }
47 47
 
48 48
 }

+ 36
- 36
src/test/java/MapFunc/MapFuncTest.java View File

@@ -1,36 +1,36 @@
1
-//package MapFunc;
2
-//
3
-//import MapFunc.MapFunc;
4
-//import org.junit.Test;
5
-//
6
-//import java.util.ArrayList;
7
-//import org.junit.Assert;
8
-//
9
-//public class MapFuncTest {
10
-//    @Test
11
-//    public void testSingleTypeMap() throws Exception {
12
-//        // Given an integer array list
13
-//        ArrayList<Integer> intList = new ArrayList<>();
14
-//        intList.add(1);
15
-//        intList.add(2);
16
-//        // When it's mapped with a function to double the value
17
-//        ArrayList<Integer> mappedList = MapFunc.map(intList, num -> num*2);
18
-//        // Then all the values are doubled
19
-//        Assert.assertEquals(new Integer(2), mappedList.get(0));
20
-//        Assert.assertEquals(new Integer(4), mappedList.get(1));
21
-//    }
22
-//
23
-//    @Test
24
-//    public void testMultipleTypeMap() throws Exception {
25
-//        // Given an integer array list
26
-//        ArrayList<Integer> intList = new ArrayList<>();
27
-//        intList.add(1);
28
-//        intList.add(2);
29
-//        // When it's mapped with to string
30
-//        ArrayList<String> mappedList = MapFunc.map(intList, num -> num.toString());
31
-//        // Then all the values are doubled
32
-//        Assert.assertEquals("1", mappedList.get(0));
33
-//        Assert.assertEquals("2", mappedList.get(1));
34
-//    }
35
-//
36
-//}
1
+package MapFunc;
2
+
3
+import MapFunc.MapFunc;
4
+import org.junit.Test;
5
+
6
+import java.util.ArrayList;
7
+import org.junit.Assert;
8
+
9
+public class MapFuncTest {
10
+    @Test
11
+    public void testSingleTypeMap() throws Exception {
12
+        // Given an integer array list
13
+        ArrayList<Integer> intList = new ArrayList<>();
14
+        intList.add(1);
15
+        intList.add(2);
16
+        // When it's mapped with a function to double the value
17
+        ArrayList<Integer> mappedList = MapFunc.map(intList, num -> num*2);
18
+        // Then all the values are doubled
19
+        Assert.assertEquals(new Integer(2), mappedList.get(0));
20
+        Assert.assertEquals(new Integer(4), mappedList.get(1));
21
+    }
22
+
23
+    @Test
24
+    public void testMultipleTypeMap() throws Exception {
25
+        // Given an integer array list
26
+        ArrayList<Integer> intList = new ArrayList<>();
27
+        intList.add(1);
28
+        intList.add(2);
29
+        // When it's mapped with to string
30
+        ArrayList<String> mappedList = MapFunc.map(intList, num -> num.toString());
31
+        // Then all the values are doubled
32
+        Assert.assertEquals("1", mappedList.get(0));
33
+        Assert.assertEquals("2", mappedList.get(1));
34
+    }
35
+
36
+}

+ 43
- 41
src/test/java/StackArray/GenericStackTest.java View File

@@ -1,41 +1,43 @@
1
-//package StackArray;
2
-//
3
-//import org.junit.Assert;
4
-//import org.junit.Test;
5
-//
6
-//public class GenericStackTest {
7
-//    @Test
8
-//    public void testPushingGrowsTheStack() throws Exception {
9
-//        // Given an empty stack
10
-//        GenericStack<String> stack = new GenericStack<>();
11
-//
12
-//        // Assert that it is empty.
13
-//        Assert.assertEquals(true, stack.isEmpty());
14
-//        // When we push something onto the stack
15
-//        stack.push("foobar");
16
-//        // Then it shouldn't be empty
17
-//        Assert.assertEquals(false, stack.isEmpty());
18
-//    }
19
-//
20
-//    @Test
21
-//    public void testPushingAndPoppingOrder() throws Exception {
22
-//        // Given an empty stack
23
-//        GenericStack<String> stack = new GenericStack<>();
24
-//        // When we push two elements on it
25
-//        stack.push("foo");
26
-//        stack.push("bar");
27
-//        // Then we should see them returned in the correct order
28
-//        Assert.assertEquals("bar", stack.pop());
29
-//        Assert.assertEquals("foo", stack.pop());
30
-//    }
31
-//
32
-//    @Test(expected = IndexOutOfBoundsException.class)
33
-//    public void testPopFirst() throws Exception {
34
-//        // Given an empty stack
35
-//        GenericStack<String> stack = new GenericStack<>();
36
-//        // When it's popped
37
-//        stack.pop();
38
-//        // Then we should get an exception
39
-//    }
40
-//
41
-//}
1
+package StackArray;
2
+
3
+import org.junit.Assert;
4
+import org.junit.Test;
5
+
6
+import java.util.ArrayList;
7
+
8
+public class GenericStackTest {
9
+    @Test
10
+    public void testPushingGrowsTheStack() throws Exception {
11
+        // Given an empty stack
12
+        GenericStack<String> stack = new GenericStack<>(8);
13
+
14
+        // Assert that it is empty.
15
+        Assert.assertEquals(true, stack.isEmpty());
16
+        // When we push something onto the stack
17
+        stack.push("foobar");
18
+        // Then it shouldn't be empty
19
+        Assert.assertEquals(false, stack.isEmpty());
20
+    }
21
+
22
+    @Test
23
+    public void testPushingAndPoppingOrder() throws Exception {
24
+        // Given an empty stack
25
+        GenericStack<String> stack = new GenericStack<>(6);
26
+        // When we push two elements on it
27
+        stack.push("foo");
28
+        stack.push("bar");
29
+        // Then we should see them returned in the correct order
30
+        Assert.assertEquals("bar", stack.pop());
31
+        Assert.assertEquals("foo", stack.pop());
32
+    }
33
+
34
+    @Test(expected = IndexOutOfBoundsException.class)
35
+    public void testPopFirst() throws Exception {
36
+        // Given an empty stack
37
+        GenericStack<String> stack = new GenericStack<>(9);
38
+        // When it's popped
39
+        stack.pop();
40
+        // Then we should get an exception
41
+    }
42
+
43
+}

+ 39
- 39
src/test/java/StackArray/ObjectStackTest.java View File

@@ -1,39 +1,39 @@
1
-//package StackArray;
2
-//
3
-//import org.junit.Assert;
4
-//import org.junit.Test;
5
-//
6
-//public class ObjectStackTest {
7
-//    @Test
8
-//    public void testPushingGrowsTheStack() throws Exception {
9
-//        // Given an empty stack
10
-//        ObjectStack<String> stack = new ObjectStack<>();
11
-//        // Assert that it is empty.
12
-//        Assert.assertEquals(true, stack.isEmpty());
13
-//        // When we push something onto the stack
14
-//        stack.push("foobar");
15
-//        // Then it shouldn't be empty
16
-//        Assert.assertEquals(false, stack.isEmpty());
17
-//    }
18
-//
19
-//    @Test
20
-//    public void testPushingAndPoppingOrder() throws Exception {
21
-//        // Given an empty stack
22
-//        ObjectStack<String> stack = new ObjectStack<>();
23
-//        // When we push two elements on it
24
-//        stack.push("foo");
25
-//        stack.push("bar");
26
-//        // Then we should see them returned in the correct order
27
-//        Assert.assertEquals("bar", stack.pop());
28
-//        Assert.assertEquals("foo", stack.pop());
29
-//    }
30
-//
31
-//    @Test(expected = IndexOutOfBoundsException.class)
32
-//    public void testPopFirst() throws Exception {
33
-//        // Given an empty stack
34
-//        ObjectStack<String> stack = new ObjectStack<>();
35
-//        // When it's popped
36
-//        stack.pop();
37
-//        // Then we should get an exception
38
-//    }
39
-//}
1
+package StackArray;
2
+
3
+import org.junit.Assert;
4
+import org.junit.Test;
5
+
6
+public class ObjectStackTest {
7
+    @Test
8
+    public void testPushingGrowsTheStack() throws Exception {
9
+        // Given an empty stack
10
+        ObjectStack<String> stack = new ObjectStack<>();
11
+        // Assert that it is empty.
12
+        Assert.assertEquals(true, stack.isEmpty());
13
+        // When we push something onto the stack
14
+        stack.push("foobar");
15
+        // Then it shouldn't be empty
16
+        Assert.assertEquals(false, stack.isEmpty());
17
+    }
18
+
19
+    @Test
20
+    public void testPushingAndPoppingOrder() throws Exception {
21
+        // Given an empty stack
22
+        ObjectStack<String> stack = new ObjectStack<>();
23
+        // When we push two elements on it
24
+        stack.push("foo");
25
+        stack.push("bar");
26
+        // Then we should see them returned in the correct order
27
+        Assert.assertEquals("bar", stack.pop());
28
+        Assert.assertEquals("foo", stack.pop());
29
+    }
30
+
31
+    @Test(expected = IndexOutOfBoundsException.class)
32
+    public void testPopFirst() throws Exception {
33
+        // Given an empty stack
34
+        ObjectStack<String> stack = new ObjectStack<>();
35
+        // When it's popped
36
+        stack.pop();
37
+        // Then we should get an exception
38
+    }
39
+}

+ 45
- 45
src/test/java/StackArrayList/StackTest.java View File

@@ -1,45 +1,45 @@
1
-//package StackArrayList;
2
-//
3
-//import org.junit.Test;
4
-//
5
-//import org.junit.Assert;
6
-//
7
-//public class StackTest {
8
-//    @Test
9
-//    public void testEmptyStackStopsBeingEmptyWhenAnItemIsAdded() throws Exception {
10
-//        // Given an empty stack
11
-//        Stack<String> stack = new Stack<>();
12
-//        // Assert that it starts empty
13
-//        Assert.assertEquals(true, stack.isEmpty());
14
-//        // When an element gets pushed
15
-//        stack.push("foobar");
16
-//        // Then the stack should not be empty.
17
-//        Assert.assertEquals(false, stack.isEmpty());
18
-//    }
19
-//
20
-//    @Test
21
-//    public void testTwoItemsPushedComeOutInCorrectOrder() throws Exception {
22
-//        // Given an empty stack
23
-//        Stack<String> stack = new Stack<>();
24
-//
25
-//        //When two items are pushed
26
-//        stack.push("foo");
27
-//        stack.push("bar");
28
-//
29
-//        // Then they should come off in reverse order.
30
-//        Assert.assertEquals("bar", stack.pop());
31
-//        Assert.assertEquals("foo", stack.pop());
32
-//
33
-//        // And then the stack should be empty
34
-//        Assert.assertEquals(true, stack.isEmpty());
35
-//    }
36
-//
37
-//    @Test(expected = IndexOutOfBoundsException.class)
38
-//    public void testPopFirst() throws Exception {
39
-//        // Given an empty stack
40
-//        Stack<String> stack = new Stack<>();
41
-//        // Then it is popped
42
-//        stack.pop();
43
-//        // We should get an exception
44
-//    }
45
-//}
1
+package StackArrayList;
2
+
3
+import org.junit.Test;
4
+
5
+import org.junit.Assert;
6
+
7
+public class StackTest {
8
+    @Test
9
+    public void testEmptyStackStopsBeingEmptyWhenAnItemIsAdded() throws Exception {
10
+        // Given an empty stack
11
+        Stack<String> stack = new Stack<>();
12
+        // Assert that it starts empty
13
+        Assert.assertEquals(true, stack.isEmpty());
14
+        // When an element gets pushed
15
+        stack.push("foobar");
16
+        // Then the stack should not be empty.
17
+        Assert.assertEquals(false, stack.isEmpty());
18
+    }
19
+
20
+    @Test
21
+    public void testTwoItemsPushedComeOutInCorrectOrder() throws Exception {
22
+        // Given an empty stack
23
+        Stack<String> stack = new Stack<>();
24
+
25
+        //When two items are pushed
26
+        stack.push("foo");
27
+        stack.push("bar");
28
+
29
+        // Then they should come off in reverse order.
30
+        Assert.assertEquals("bar", stack.pop());
31
+        Assert.assertEquals("foo", stack.pop());
32
+
33
+        // And then the stack should be empty
34
+        Assert.assertEquals(true, stack.isEmpty());
35
+    }
36
+
37
+    @Test(expected = IndexOutOfBoundsException.class)
38
+    public void testPopFirst() throws Exception {
39
+        // Given an empty stack
40
+        Stack<String> stack = new Stack<>();
41
+        // Then it is popped
42
+        stack.pop();
43
+        // We should get an exception
44
+    }
45
+}

+ 15
- 15
src/test/java/Swap/SwapTest.java View File

@@ -1,16 +1,16 @@
1 1
 package Swap;
2
-//
3
-//import org.junit.Assert;
4
-//import org.junit.Test;
5
-//
6
-///**
7
-// * Get the tests passing.
8
-// */
9
-//public class SwapTest {
10
-//    @Test
11
-//    public void testSwap() throws Exception {
12
-//        Double[] result = Swap.swap(0,1, 1.5, 2,3);
13
-//        Double[] expected = {2.0, 1.5, 3.0};
14
-//        Assert.assertArrayEquals(expected, result);
15
-//    }
16
-//}
2
+
3
+import org.junit.Assert;
4
+import org.junit.Test;
5
+
6
+/**
7
+ * Get the tests passing.
8
+ */
9
+public class SwapTest {
10
+    @Test
11
+    public void testSwap() throws Exception {
12
+        Double[] result = Swap.swap(0,1, 1.5, 2.0,3.0);
13
+        Double[] expected = {2.0, 1.5, 3.0};
14
+        Assert.assertArrayEquals(expected, result);
15
+    }
16
+}

+ 50
- 50
src/test/java/Table/TableTest.java View File

@@ -1,50 +1,50 @@
1
-//package Table;
2
-//
3
-//import org.junit.Assert;
4
-//import org.junit.Test;
5
-//
6
-//public class TableTest {
7
-//    @Test
8
-//    public void testGetWithoutAnItemReturnsNull() throws Exception {
9
-//        // Given an empty table
10
-//        Table<String, Integer> table = new Table<String, Integer>();
11
-//        // When we try and get an item then it returns null
12
-//        Assert.assertEquals(table.get("foo"), null);
13
-//    }
14
-//
15
-//    @Test
16
-//    public void testPutAnItemReturnsAndDoesNotDelete() throws Exception {
17
-//        //Given an empty table
18
-//        Table<String, Integer> table = new Table<String, Integer>();
19
-//        // When we put an item in it
20
-//        table.put("foo", 1);
21
-//        // Then we should be able to get it's value
22
-//        Assert.assertEquals(table.get("foo"), new Integer(1));
23
-//        // And then we should be able to get it again as it wasn't removed
24
-//        Assert.assertEquals(table.get("foo"), new Integer(1));
25
-//    }
26
-//
27
-//    @Test
28
-//    public void testOverwritingAnItem() throws Exception {
29
-//        //Given an empty table
30
-//        Table<String, Integer> table = new Table<String, Integer>();
31
-//        // When we put an item in it
32
-//        table.put("foo", 1);
33
-//        // And we put a new value with the same key
34
-//        table.put("foo", 2);
35
-//        // Then we should get back the new value
36
-//        Assert.assertEquals(table.get("foo"), new Integer(2));
37
-//    }
38
-//
39
-//    @Test
40
-//    public void testRemoveAnItem() throws Exception {
41
-//        //Given an empty table
42
-//        Table<String, Integer> table = new Table<String, Integer>();
43
-//        // When we put an item in it
44
-//        table.put("foo", 1);
45
-//        // And we remove that item
46
-//        table.remove("foo");
47
-//        // Then we should get back null for that balue
48
-//        Assert.assertEquals(table.get("foo"), null);
49
-//    }
50
-//}
1
+package Table;
2
+
3
+import org.junit.Assert;
4
+import org.junit.Test;
5
+
6
+public class TableTest {
7
+    @Test
8
+    public void testGetWithoutAnItemReturnsNull() throws Exception {
9
+        // Given an empty table
10
+        Table<String, Integer> table = new Table<String, Integer>();
11
+        // When we try and get an item then it returns null
12
+        Assert.assertEquals(table.get("foo"), null);
13
+    }
14
+
15
+    @Test
16
+    public void testPutAnItemReturnsAndDoesNotDelete() throws Exception {
17
+        //Given an empty table
18
+        Table<String, Integer> table = new Table<String, Integer>();
19
+        // When we put an item in it
20
+        table.put("foo", 1);
21
+        // Then we should be able to get it's value
22
+        Assert.assertEquals(table.get("foo"), new Integer(1));
23
+        // And then we should be able to get it again as it wasn't removed
24
+        Assert.assertEquals(table.get("foo"), new Integer(1));
25
+    }
26
+
27
+    @Test
28
+    public void testOverwritingAnItem() throws Exception {
29
+        //Given an empty table
30
+        Table<String, Integer> table = new Table<String, Integer>();
31
+        // When we put an item in it
32
+        table.put("foo", 1);
33
+        // And we put a new value with the same key
34
+        table.put("foo", 2);
35
+        // Then we should get back the new value
36
+        Assert.assertEquals(table.get("foo"), new Integer(2));
37
+    }
38
+
39
+    @Test
40
+    public void testRemoveAnItem() throws Exception {
41
+        //Given an empty table
42
+        Table<String, Integer> table = new Table<String, Integer>();
43
+        // When we put an item in it
44
+        table.put("foo", 1);
45
+        // And we remove that item
46
+        table.remove("foo");
47
+        // Then we should get back null for that balue
48
+        Assert.assertEquals(table.get("foo"), null);
49
+    }
50
+}