diff --git a/projjpn/src/main/java/de/hs_fulda/ciip/projjpn/Birthdate.java b/projjpn/src/main/java/de/hs_fulda/ciip/projjpn/Birthdate.java new file mode 100644 index 0000000..32ed901 --- /dev/null +++ b/projjpn/src/main/java/de/hs_fulda/ciip/projjpn/Birthdate.java @@ -0,0 +1,59 @@ +package de.hs_fulda.ciip.projjpn; + +public class Birthdate { + private int day; + private int month; + private int year; + + public Birthdate(int d, int m, int y) { + day = d; + month = m; + year = y; + } + + public int getDay() { + return day; + } + + public int getMonth() { + return month; + } + + public int getYear() { + return year; + } + + /** + * @return Date Format DD.MM.YYYY + */ + public String toString() { + return day + "." + month + "." + year; + } + + /** + * + * @param d Day + * @param m Month + * @param y Year + */ + public void changeBirthdate(int d, int m, int y) { + day = d; + month = m; + year = y; + } + + public boolean isValid(int DD, int MM, int YYYY) { + if (DD < 1 || DD > 31) { + return false; + } + if (MM < 1 || MM > 12) { + return false; + } + if (YYYY < 1990 || YYYY > 2022) { + return false; + } + + return true; + } + +} diff --git a/projjpn/src/main/java/de/hs_fulda/ciip/projjpn/Customers.java b/projjpn/src/main/java/de/hs_fulda/ciip/projjpn/Customers.java new file mode 100644 index 0000000..174016e --- /dev/null +++ b/projjpn/src/main/java/de/hs_fulda/ciip/projjpn/Customers.java @@ -0,0 +1,31 @@ +package de.hs_fulda.ciip.projjpn; + +import java.util.HashMap; + +public class Customers { + HashMap pool = new HashMap(); + + public boolean nickNameAvailable(String nickname) { + User u = pool.get(nickname); + if (null == u) { + return true; + } + return false; + } + + public User registerUser(User user) { + return pool.putIfAbsent(user.nickName, user); + } + + public User deleteUser(String userNickname) { + return pool.remove(userNickname); + } + + public User getByNickname(String nickname) { + return pool.get(nickname); + } + + public int getCountOfUsers() { + return pool.size(); + } +} diff --git a/projjpn/src/main/java/de/hs_fulda/ciip/projjpn/User.java b/projjpn/src/main/java/de/hs_fulda/ciip/projjpn/User.java new file mode 100644 index 0000000..710e097 --- /dev/null +++ b/projjpn/src/main/java/de/hs_fulda/ciip/projjpn/User.java @@ -0,0 +1,41 @@ +package de.hs_fulda.ciip.projjpn; + +public class User { + String firstName; + String lastName; + String nickName; + String eMail; + Birthdate birthdate; + + public User(String firstName, + String lastName, + String nickName, + String eMail, + Birthdate birthdate) { + this.firstName = firstName; + this.lastName = lastName; + this.nickName = nickName; + this.eMail = eMail; + this.birthdate = birthdate; + } + + public User(String nickName) { + this.nickName = nickName; + } + + public String getFirstName() { + return firstName; + } + public String getLastName() { + return lastName; + } + public String getNickName() { + return nickName; + } + public String getEMail() { + return eMail; + } + public Birthdate getBirthdate() { + return birthdate; + } +} diff --git a/projjpn/src/test/java/de/hs_fulda/ciip/projjpn/BirthdateTest.java b/projjpn/src/test/java/de/hs_fulda/ciip/projjpn/BirthdateTest.java new file mode 100644 index 0000000..b584b58 --- /dev/null +++ b/projjpn/src/test/java/de/hs_fulda/ciip/projjpn/BirthdateTest.java @@ -0,0 +1,63 @@ +package de.hs_fulda.ciip.projjpn; + +import junit.framework.TestCase; + +public class BirthdateTest extends TestCase { + + public void testToString() { + + // Given + Birthdate b = new Birthdate(1, 1, 2000); + + // When + String expectedDate = "1.1.2000"; + + // Then + assertEquals(expectedDate, b.toString()); + } + + public void test_changeBirthdate() { + // Given + Birthdate b = new Birthdate(1, 1, 2000); + + // Change Birthdate + b.changeBirthdate(2, 3, 2001); + + // When + int expectedDay = 2; + int expectedMonth = 3; + int expectedYear = 2001; + + // Then + assertEquals(2, b.getDay()); + assertEquals(3, b.getMonth()); + assertEquals(2001, b.getYear()); + } + + public void test_rejectInvalidBirthday() { + Birthdate birthdate = new Birthdate(0, 0, 0); + boolean expectedResult = false; + boolean gotResult = birthdate.isValid(0, 0, 0); + assertEquals(expectedResult, gotResult); + + gotResult = birthdate.isValid(32, 13, 1990); + assertEquals(expectedResult, gotResult); + + gotResult = birthdate.isValid(31, 0, 1980); + assertEquals(expectedResult, gotResult); + + gotResult = birthdate.isValid(31, 13, 1980); + assertEquals(expectedResult, gotResult); + + gotResult = birthdate.isValid(1, 1, 3000); + assertEquals(expectedResult, gotResult); + + gotResult = birthdate.isValid(1, 1, 1900); + assertEquals(expectedResult, gotResult); + + expectedResult = true; + gotResult = birthdate.isValid(1, 5, 2020); + assertEquals(expectedResult, gotResult); + } + +} diff --git a/projjpn/src/test/java/de/hs_fulda/ciip/projjpn/CustomersTest.java b/projjpn/src/test/java/de/hs_fulda/ciip/projjpn/CustomersTest.java new file mode 100644 index 0000000..110d7ad --- /dev/null +++ b/projjpn/src/test/java/de/hs_fulda/ciip/projjpn/CustomersTest.java @@ -0,0 +1,162 @@ +package de.hs_fulda.ciip.projjpn; + +import junit.framework.TestCase; + +public class CustomersTest extends TestCase { + + public void test_nicknameIsFree() { + // Given + Customers customers = new Customers(); + String availableNickname = "beastMaster64"; + + // When + boolean nicknameIsAvailable = customers.nickNameAvailable(availableNickname); + + // Then + assertTrue(nicknameIsAvailable); + } + + public void test_nicknameIsTaken() { + // Given + Customers customers = new Customers(); + String availableNickname = "beastMaster64"; + String takenNickname = "beastMaster64"; + User userToRegister = new User(availableNickname); + + customers.registerUser(userToRegister); + + // When + boolean nicknameIsTaken = customers.nickNameAvailable(availableNickname); + + // Then + assertFalse(nicknameIsTaken); + } + + public void test_registerSingleUser() { + // Given + Customers customers = new Customers(); + String expectedNickNameInput = "Mougli"; + User expectedNewUser = new User(expectedNickNameInput); + + // Add a user + customers.registerUser(expectedNewUser); + + // Get the expected User + User expectedUser = customers.getByNickname(expectedNickNameInput); + // + assertNotNull(expectedNewUser); + String expectedNickNameGotBack = expectedUser.nickName; + + // When + boolean userRegistered = expectedNickNameGotBack.equals(expectedNickNameInput); + + // Then + assertTrue(userRegistered); + } + + /** + * Register multiple Users and then search for them in the same order. + */ + public void test_registerMultipleUsers() { + // Given + Customers customers = new Customers(); + String[] expectedNickNamesInput = {"Mougli", "Tarkan", "beastMaster64", "BlaBlaPew", "MuchDoge_321"}; + User[] expectedNewUsers = new User[expectedNickNamesInput.length]; + + for (int i = 0; i < expectedNickNamesInput.length; i++) { + // Create user + expectedNewUsers[i] = new User(expectedNickNamesInput[i]); + + // Add user + customers.registerUser(expectedNewUsers[i]); + } + + // Get the expected Users + User foundUser; + String expectedNickNameGotBack; + boolean userRegistered; + + for (int i = 0; i < expectedNickNamesInput.length; i++) { + // Get user + foundUser = customers.getByNickname(expectedNickNamesInput[i]); + assertNotNull(foundUser); + + // When + expectedNickNameGotBack = foundUser.nickName; + userRegistered = expectedNickNameGotBack.equals(expectedNickNamesInput[i]); + + // Then + assertTrue(userRegistered); + } + } + + public void test_removeRegisteredUser() { + // Given + Customers customers = new Customers(); + String userToRemove = "beastMaster64"; + User userToRegister = new User("beastMaster64"); + customers.registerUser(userToRegister); + + // When + boolean userExists = customers.nickNameAvailable(userToRemove); + assertFalse(userExists); + + // Then + User removedUser = customers.deleteUser(userToRemove); + assertEquals(userToRemove, removedUser.nickName); + + } + + public void test_registerAndCountUsers() { + // Given + Customers customers = new Customers(); + int expectedRegisteredUsers = 20; + int actualRegisteredUsers = -1; + String nickname; + + // Prepare + for(int i = 0, j = 1; i < expectedRegisteredUsers; i++, j++) { + nickname = "beastMaster_" + j; + customers.registerUser(new User(nickname)); + } + actualRegisteredUsers = customers.getCountOfUsers(); + assertEquals(expectedRegisteredUsers, actualRegisteredUsers); + } + + public void test_createRegisterAndCheckUserData() { + // Given + Customers customers = new Customers(); + + String firstName = "Mia"; + String lastName = "Muster"; + String nickName = "harley"; + String eMail = "mia@muster.de"; + Birthdate birthdate = new Birthdate(30, 12, 1997); + + User userToCheck = new User(firstName, lastName, nickName, eMail, birthdate); + + // Register User + customers.registerUser(userToCheck); + + User gotUser = customers.getByNickname(nickName); + + assertNotNull(gotUser); + + // When + boolean correctFirstName = "Mia".equals(gotUser.getFirstName()); + boolean correctLastName = "Muster".equals(gotUser.getLastName()); + boolean correctNickName = "harley".equals(gotUser.getNickName()); + boolean correctEMail = "mia@muster.de".equals(gotUser.getEMail()); + boolean correctBirthdate = birthdate.toString().equals(gotUser.birthdate.toString()); + + // Then + assertTrue(correctFirstName); + assertTrue(correctLastName); + assertTrue(correctNickName); + assertTrue(correctEMail); + assertTrue(correctBirthdate); + + } + + +} diff --git a/projjpn/src/test/java/de/hs_fulda/ciip/projjpn/UserTest.java b/projjpn/src/test/java/de/hs_fulda/ciip/projjpn/UserTest.java new file mode 100644 index 0000000..419153e --- /dev/null +++ b/projjpn/src/test/java/de/hs_fulda/ciip/projjpn/UserTest.java @@ -0,0 +1,20 @@ +package de.hs_fulda.ciip.projjpn; + +import junit.framework.TestCase; + +public class UserTest extends TestCase { + public void test_initAndGetBirthdayOfUser() { + // Given + Customers customers = new Customers(); + String firstName = "Mia"; + String lastName = "Muster"; + String nickName = "harley"; + String eMail = "mia@muster.de"; + int DD = 30, MM = 12, YYYY = 1997; + String expectedBirthdate = new Birthdate(DD, MM, YYYY).toString(); + + User userToCheck = new User(firstName, lastName, nickName, eMail, new Birthdate(DD, MM, YYYY)); + String gotBirthdate = userToCheck.getBirthdate().toString(); + boolean gotExpectedBirthdayBack = gotBirthdate.equals(expectedBirthdate); + } +}