diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/xaviercruz/Color.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/xaviercruz/Color.java new file mode 100644 index 000000000..035103336 --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/xaviercruz/Color.java @@ -0,0 +1,9 @@ +package com.codedifferently.lesson16.xaviercruz; + +public enum Color { + RED, + BLUE, + WHITE, + GREEN, + BLACK +} diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/xaviercruz/Person.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/xaviercruz/Person.java new file mode 100644 index 000000000..d8cda2a65 --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/xaviercruz/Person.java @@ -0,0 +1,87 @@ +package com.codedifferently.lesson16.xaviercruz; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class Person { + private String name; + private int age; + private Position position; + private List traits; + private Color eyeColor; + private final int max_traits = 10; + + public Person(String name, int age, Position position, List traits, Color eyeColor) { + this.name = name; + this.age = age; + this.position = position; + this.traits = traits; + this.eyeColor = eyeColor; + } + + public void changeName(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void increaseAge() { + age++; + } + + // Added for mistakes in age. + public void updateAge(int age) { + this.age = age; + } + + public int getAge() { + return age; + } + + public void updatePosition(Position position) { + this.position = position; + } + + public Position getPosition() { + return position; + } + + public void addToTraits(String newTrait) throws TooManyTraitsException { + if ((traits.size() + 1) > max_traits) { + throw new TooManyTraitsException("Error too many traits assigned"); + } + traits.add(newTrait); + } + + public void addToTraits(String[] traits) throws TooManyTraitsException { + if ((this.traits.size() + traits.length) > max_traits) { + throw new TooManyTraitsException("Error too many traits assigned"); + } + this.traits.addAll(Arrays.asList(traits)); + } + + public void addToTraits(ArrayList traits) throws TooManyTraitsException { + if ((this.traits.size() + traits.size()) > max_traits) { + throw new TooManyTraitsException("Error too many traits assigned"); + } + for (String trait : traits) { + this.traits.add(trait); + } + } + + public List getTraits() { + return traits; + } + + public Color getEyeColor() { + return eyeColor; + } + + // Added for mistakes in eye color + public void setEyeColor(Color eyeColor) { + this.eyeColor = eyeColor; + } +} diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/xaviercruz/Position.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/xaviercruz/Position.java new file mode 100644 index 000000000..ed288d4d9 --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/xaviercruz/Position.java @@ -0,0 +1,8 @@ +package com.codedifferently.lesson16.xaviercruz; + +public enum Position { + UNEMPLOYED, + SOFTWARE_DEV, + TEACHER, + ARSONIST +} diff --git a/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/xaviercruz/TooManyTraitsException.java b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/xaviercruz/TooManyTraitsException.java new file mode 100644 index 000000000..e51bdceda --- /dev/null +++ b/lesson_16/objects/objects_app/src/main/java/com/codedifferently/lesson16/xaviercruz/TooManyTraitsException.java @@ -0,0 +1,8 @@ +package com.codedifferently.lesson16.xaviercruz; + +public class TooManyTraitsException extends Exception { + + public TooManyTraitsException(String message) { + super(message); + } +} diff --git a/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/xaviercruz/PersonTest.java b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/xaviercruz/PersonTest.java new file mode 100644 index 000000000..4f3600b9e --- /dev/null +++ b/lesson_16/objects/objects_app/src/test/java/com/codedifferently/lesson16/xaviercruz/PersonTest.java @@ -0,0 +1,149 @@ +package com.codedifferently.lesson16.xaviercruz; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import java.util.ArrayList; +import java.util.Arrays; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PersonTest { + Person person; + + @BeforeEach + public void setUp() { + person = + new Person( + "That one guy right there", + 25, + Position.ARSONIST, + new ArrayList<>(Arrays.asList("Tall", "Insane", "Funny", "something else here idk")), + Color.RED); + } + + @Test + public void testGetName() { + assertEquals("That one guy right there", person.getName()); + } + + @Test + public void testChangeName() { + person.changeName("new name right here bruh"); + assertEquals("new name right here bruh", person.getName()); + } + + @Test + public void testGetAge() { + assertEquals(25, person.getAge()); + } + + @Test + public void testGetPosition() { + assertEquals(Position.ARSONIST, person.getPosition()); + } + + @Test + public void testUpdatePosition() { + person.updatePosition(Position.SOFTWARE_DEV); + assertEquals(Position.SOFTWARE_DEV, person.getPosition()); + } + + @Test + public void testGetTraits() { + assertEquals( + new ArrayList<>(Arrays.asList("Tall", "Insane", "Funny", "something else here idk")), + person.getTraits()); + } + + @Test + public void testGetEyeColor() { + assertEquals(Color.RED, person.getEyeColor()); + } + + @Test + public void testSetEyeColor() { + Color color = Color.GREEN; + + person.setEyeColor(color); + + assertEquals(Color.GREEN, person.getEyeColor()); + } + + @Test + public void testIncreaseAge() { + person.increaseAge(); + assertEquals(26, person.getAge()); + } + + @Test + public void testUpdateAge() { + person.updateAge(99); + assertEquals(99, person.getAge()); + } + + @Test + public void testAddToTraitsStringArray_Exception() { + String[] newTraits = new String[] {"test", "test", "test", "test", "test", "test", "test"}; + assertThrows( + TooManyTraitsException.class, + () -> { + person.addToTraits(newTraits); + }); + } + + @Test + public void testAddToTraitsString_Exception() { + Person person2 = + new Person( + "That one guy right there", + 25, + Position.ARSONIST, + new ArrayList<>( + Arrays.asList( + "Tall", + "Insane", + "Funny", + "something else here idk", + "test", + "test", + "test", + "test", + "test", + "test")), + Color.RED); + assertThrows( + TooManyTraitsException.class, + () -> { + person2.addToTraits("newTrait"); + }); + } + + @Test + public void testAddToTraitsList_Exception() { + Person person2 = + new Person( + "That one guy right there", + 25, + Position.ARSONIST, + new ArrayList<>( + Arrays.asList( + "Tall", + "Insane", + "Funny", + "something else here idk", + "test", + "test", + "test", + "test", + "test", + "test")), + Color.RED); + var traits = new ArrayList(Arrays.asList("testTrait")); + assertThrows( + TooManyTraitsException.class, + () -> { + person2.addToTraits(traits); + }); + } +}