diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..1f58a0f
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+generics
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..c20d346
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__junit_junit_4_12.xml b/.idea/libraries/Maven__junit_junit_4_12.xml
new file mode 100644
index 0000000..d411041
--- /dev/null
+++ b/.idea/libraries/Maven__junit_junit_4_12.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml
new file mode 100644
index 0000000..f58bbc1
--- /dev/null
+++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..d30d09e
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..ca63f44
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ 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..2958419
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,691 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1520544530940
+
+
+ 1520544530940
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ No facets are configured
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.8
+
+
+
+
+
+
+
+
+
+
+
+ generics
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.8
+
+
+
+
+
+
+
+
+
+
+
+ Maven: junit:junit:4.12
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/generics.iml b/generics.iml
new file mode 100644
index 0000000..ef720e4
--- /dev/null
+++ b/generics.iml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/.deleteme b/src/main/java/.deleteme
deleted file mode 100644
index e69de29..0000000
diff --git a/src/main/java/MyArrayList.java b/src/main/java/MyArrayList.java
new file mode 100644
index 0000000..8f30ba9
--- /dev/null
+++ b/src/main/java/MyArrayList.java
@@ -0,0 +1,81 @@
+import com.sun.org.apache.xpath.internal.operations.Bool;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+public class MyArrayList {
+
+ private T[] array;
+
+ public MyArrayList() {
+ array = (T[]) new Object[0];
+ }
+
+ public MyArrayList(int sizeOfArray) {
+ array = (T[]) new Object[sizeOfArray];
+
+ }
+
+ public void add(T valueToAdd) {
+ T[] newArray = Arrays.copyOf(array, array.length + 1);
+ newArray[newArray.length - 1] = valueToAdd;
+ this.array = newArray;
+ }
+
+ public T get(int indexValue) {
+ return array[indexValue];
+ }
+
+ public void set(T valueToSet, int index) {
+ array[index] = valueToSet;
+ }
+
+ public void remove(int indexValueToRemove) {
+ T[] tempArray = Arrays.copyOf(array, array.length - 1);
+ int j = 0;
+ for (int i = 0; i < this.array.length; i++) {
+ if (indexValueToRemove != i) {
+ tempArray[j] = array[i];
+ j++;
+ }
+ }
+ this.array = tempArray;
+ }
+
+ public void addAnywhere(T valueToAdd, int index) {
+ T[] tempArray = Arrays.copyOf(array, array.length + 1);
+ if (tempArray[index].equals(null)) {
+ tempArray[index] = valueToAdd;
+ } else {
+ Integer counter = this.array.length;
+ while (index < counter) {
+ tempArray[counter] = tempArray[counter - 1];
+ counter--;
+ }
+ tempArray[index] = valueToAdd;
+
+ }
+ this.array = tempArray;
+ }
+
+ public void clear() {
+ for (int i = 0; i < array.length; i++) {
+ array[i] = null;
+ }
+ }
+
+ public Boolean isEmpty() {
+ if (array.length == 0) {
+ return true;
+ }
+ return false;
+ }
+
+ public Boolean contains(T value) {
+ for (int i = 0; i < array.length; i++) {
+ if (value.equals(array[i]))
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/src/main/java/MySet.java b/src/main/java/MySet.java
new file mode 100644
index 0000000..71fea3f
--- /dev/null
+++ b/src/main/java/MySet.java
@@ -0,0 +1,49 @@
+public class MySet {
+
+ MyArrayList mySet;
+
+ public MySet() {
+ mySet = new MyArrayList<>();
+ }
+ public MySet(int sizeOfSet){
+ mySet = new MyArrayList<>(sizeOfSet);
+ }
+
+ public void add(T valueToAdd){
+ if (!mySet.contains(valueToAdd)){
+ mySet.add(valueToAdd);
+ }
+ }
+ public void add(T valueToAdd, int index){
+ if(!mySet.contains(valueToAdd)){
+ mySet.addAnywhere(valueToAdd, index);
+ }
+ }
+ public void remove(int index){
+ mySet.remove(index);
+ }
+ public void set(T value, int index){
+ mySet.set(value, index);
+ }
+ public T get(int index){
+ return mySet.get(index);
+ }
+ public void clear(){
+ mySet.clear();
+ }
+ public Integer size(){
+ return this.size();
+ }
+ public Boolean contains(T value){
+ if (mySet.contains(value)){
+ return true;
+ }
+ return false;
+ }
+ public Boolean isEmpty(){
+ if (mySet.isEmpty()){
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/src/test/java/.deleteme b/src/test/java/.deleteme
deleted file mode 100644
index e69de29..0000000
diff --git a/src/test/java/MyArrayListTest.java b/src/test/java/MyArrayListTest.java
new file mode 100644
index 0000000..4a42b4f
--- /dev/null
+++ b/src/test/java/MyArrayListTest.java
@@ -0,0 +1,142 @@
+import com.sun.org.apache.xpath.internal.operations.Bool;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.Arrays;
+
+public class MyArrayListTest {
+
+ public MyArrayListTest() {
+ }
+
+ @Test
+ public void getAddTest() {
+ //Given
+ MyArrayList myArrayList = new MyArrayList<>();
+ Integer expected = 3;
+ myArrayList.add(expected);
+ //when
+ Integer actual = myArrayList.get(0);
+ //then
+ Assert.assertEquals(expected, actual);
+
+ }
+
+ @Test
+ public void removeTest() {
+ //given
+ Integer indexToRemove = 2;
+ Integer expected = 8;
+ MyArrayList myArrayList = new MyArrayList<>();
+ myArrayList.add(2);
+ myArrayList.add(4);
+ myArrayList.add(6);
+ myArrayList.add(8);
+ myArrayList.remove(indexToRemove);
+ //when
+ Integer actual = myArrayList.get(indexToRemove);
+ //then
+ Assert.assertEquals(expected, actual);
+
+ }
+
+ @Test
+ public void setTest() {
+ //given
+ MyArrayList myArrayList = new MyArrayList<>();
+ String expected = "cervezas";
+ myArrayList.add("Yo");
+ myArrayList.add("Quiero");
+ myArrayList.add("Tacos");
+ myArrayList.set(expected, 2);
+ //when
+ String actual = myArrayList.get(2);
+ //then
+ Assert.assertEquals(expected, actual);
+
+ }
+
+ @Test
+ public void getTest() {
+ //given
+ Integer indexValue = 3;
+ Integer expected = 4;
+ MyArrayList myArrayList = new MyArrayList<>();
+ myArrayList.add(1);
+ myArrayList.add(2);
+ myArrayList.add(3);
+ myArrayList.add(4);
+ myArrayList.add(5);
+
+ //when
+ Integer actual = myArrayList.get(indexValue);
+ //then
+ Assert.assertEquals(actual, expected);
+
+ }
+
+ @Test
+ public void addAnywhereTest() {
+ //given
+ MyArrayList myArrayList = new MyArrayList<>();
+ myArrayList.add(1);
+ myArrayList.add(2);
+ myArrayList.add(3);
+ myArrayList.add(4);
+ myArrayList.add(5);
+
+ myArrayList.addAnywhere(20, 3);
+
+ //when
+ Integer expected = 20;
+ Integer actual = myArrayList.get(3);
+ //then
+ Assert.assertEquals(expected, actual);
+
+ }
+
+ @Test
+ public void clearTest() {
+ //given
+ MyArrayList myArrayList = new MyArrayList<>();
+ myArrayList.add("Jess");
+ myArrayList.add("Bo");
+ myArrayList.add("Kibret");
+
+ myArrayList.clear();
+ //when
+ String expected = null;
+ String actual = myArrayList.get(0);
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void isEmptyTest() {
+ //given
+ MyArrayList myArrayList = new MyArrayList<>();
+ Boolean expected = true;
+ //when
+ Boolean actual = myArrayList.isEmpty();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void containsTest() {
+ //given
+ MyArrayList myArrayList = new MyArrayList<>();
+ String valueToContain = "Hola";
+ myArrayList.add("Como estas");
+ myArrayList.add(valueToContain);
+ myArrayList.add("muy bien y tu");
+ Boolean expected = true;
+
+ //when
+ Boolean actual = myArrayList.contains(valueToContain);
+
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+}
diff --git a/src/test/java/MySetTest.java b/src/test/java/MySetTest.java
new file mode 100644
index 0000000..dcf5b6d
--- /dev/null
+++ b/src/test/java/MySetTest.java
@@ -0,0 +1,133 @@
+import org.junit.Assert;
+import org.junit.Test;
+
+public class MySetTest {
+ @Test
+ public void addTest() {
+ //Given
+ MySet mySet = new MySet<>();
+ Integer expected = 3;
+ mySet.add(expected);
+ //when
+ Integer actual = mySet.get(0);
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void removeTest() {
+ //given
+ Integer indexToRemove = 2;
+ Integer expected = 8;
+ MySet mySet = new MySet<>();
+ mySet.add(2);
+ mySet.add(4);
+ mySet.add(6);
+ mySet.add(8);
+ mySet.remove(indexToRemove);
+ //when
+ Integer actual = mySet.get(indexToRemove);
+ //then
+ Assert.assertEquals(expected, actual);
+
+ }
+
+ @Test
+ public void getTest() {
+ //given
+ Integer indexValue = 3;
+ Integer expected = 4;
+ MySet mySet = new MySet<>();
+ mySet.add(1);
+ mySet.add(2);
+ mySet.add(3);
+ mySet.add(4);
+ mySet.add(5);
+
+ //when
+ Integer actual = mySet.get(indexValue);
+ //then
+ Assert.assertEquals(actual, expected);
+
+ }
+
+ @Test
+ public void setTest() {
+ //given
+ MySet mySet = new MySet<>();
+ String expected = "cervezas";
+ mySet.add("Yo");
+ mySet.add("Quiero");
+ mySet.add("Tacos");
+ mySet.set(expected, 2);
+ //when
+ String actual = mySet.get(2);
+ //then
+ Assert.assertEquals(expected, actual);
+
+ }
+
+ @Test
+ public void addTest2() {
+ //given
+ MySet mySet = new MySet<>();
+ mySet.add(1);
+ mySet.add(2);
+ mySet.add(3);
+ mySet.add(4);
+ mySet.add(5);
+
+ mySet.add(20, 3);
+
+ //when
+ Integer expected = 20;
+ Integer actual = mySet.get(3);
+ //then
+ Assert.assertEquals(expected, actual);
+
+ }
+
+ @Test
+ public void clearTest() {
+ //given
+ MySet mySet = new MySet<>();
+ mySet.add("Jess");
+ mySet.add("Bo");
+ mySet.add("Kibret");
+
+ mySet.clear();
+ //when
+ String expected = null;
+ String actual = mySet.get(0);
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void isEmptyTest() {
+ //given
+ MySet mySet = new MySet<>();
+ Boolean expected = true;
+ //when
+ Boolean actual = mySet.isEmpty();
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void containsTest() {
+ //given
+ MySet mySet = new MySet<>();
+ String valueToContain = "Hola";
+ mySet.add("Como estas");
+ mySet.add(valueToContain);
+ mySet.add("muy bien y tu");
+ Boolean expected = true;
+
+ //when
+ Boolean actual = mySet.contains(valueToContain);
+
+ //then
+ Assert.assertEquals(expected, actual);
+ }
+}