Skip to content

feat: created person object and made tests #506

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Nov 19, 2024
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,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<String> traits;
private Color eyeColor;
private final int max_traits = 10;

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