Skip to content
Merged
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.codedifferently.lesson16.xaviercruz;

public enum Color {
RED,
BLUE,
WHITE,
GREEN,
BLACK
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
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<String> traits;
private Color eyeColor;
private final int max_traits = 10;

public Person(String name, int age, Position position, ArrayList<String> traits, Color eyeColor) {
this.name = name;
this.age = age;
this.position = position;
this.traits = traits;
this.eyeColor = eyeColor;
}

public Person(String name, int age, Position position, String[] traits, Color eyeColor) {
this.name = name;
this.age = age;
this.position = position;
this.traits = Arrays.asList(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<String> 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<String> getTraits() {
return traits;
}

public Color getEyeColor() {
return eyeColor;
}

// Added for mistakes in eye color
public void setEyeColor(Color eyeColor) {
this.eyeColor = eyeColor;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.codedifferently.lesson16.xaviercruz;

public enum Position {
UNEMPLOYED,
SOFTWARE_DEV,
TEACHER,
ARSONIST
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.codedifferently.lesson16.xaviercruz;

public class TooManyTraitsException extends Exception {

public TooManyTraitsException(String message) {
super(message);
}
}
Original file line number Diff line number Diff line change
@@ -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.Test;

public class PersonTest {
Person 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<String>(Arrays.asList("testTrait"));
assertThrows(
TooManyTraitsException.class,
() -> {
person2.addToTraits(traits);
});
}

@Test
public void testGetTraits_PersonStringArray() {
Person person2 = new Person(null, 0, null, new String[] {"test"}, null);
assertEquals(new ArrayList<>(Arrays.asList("test")), person2.getTraits());
}
}