Java tutorial
package hotelmanagertests; /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ import hotelmanager.DBUtils; import hotelmanager.Gender; import hotelmanager.Guest; import hotelmanager.GuestComparator; import hotelmanager.GuestManagerImpl; import hotelmanager.HotelManager; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Arrays; import java.util.Collections; import java.util.List; import javax.sql.DataSource; import org.junit.After; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; import org.apache.commons.dbcp.BasicDataSource; /** * * @author Vojta */ public class GuestManagerImplTest { private GuestManagerImpl guestManager; private Guest guest1, guest2, guest3; private DataSource ds; private static DataSource prepareDataSource() throws SQLException { BasicDataSource ds = new BasicDataSource(); ds.setUrl("jdbc:derby:memory:HotelManagerDatabaseTest;create=true"); return ds; } @Before public void setUp() throws SQLException { ds = prepareDataSource(); guestManager = new GuestManagerImpl(); guestManager.setDataSource(ds); DBUtils.executeSqlScript(ds, HotelManager.class.getResource("createTables.sql")); guest1 = newGuest("Jmno", "Pjmen", "123456789", Gender.MALE); guest2 = newGuest("JmnoB", "PjmenB", "987654321", Gender.FEMALE); guest3 = newGuest("JmenoC", "PrijmeniC", "333333333", Gender.MALE); guestManager.createNewGuest(guest1); guestManager.createNewGuest(guest2); guestManager.createNewGuest(guest3); } @After public void tearDown() throws SQLException { DBUtils.executeSqlScript(ds, HotelManager.class.getResource("dropTables.sql")); } @Test public void createNewGuestTest() { Guest guest = newGuest("Novjmno", "Novpjmen", "111111111", Gender.MALE); guestManager.createNewGuest(guest); List<Guest> guests = guestManager.findAllGuests(); assertNotNull(guests); assertEquals(4, guests.size()); Long id = guest.getId(); guest = guestManager.getGuestById(id); assertNotNull(guest); assertEquals("Novjmno", guest.getName()); assertEquals("Novpjmen", guest.getSurname()); assertEquals("111111111", guest.getIdentityCardNumber()); // Changed HW3 (Peklep) assertEquals(Gender.MALE, guest.getGender()); } @Test(expected = IllegalArgumentException.class) public void createSameGuestAgain() { guestManager.createNewGuest(guest1); } // Added HW3 @Test(expected = IllegalArgumentException.class) public void createGuestWithUsedIdentityCardNumber() { Guest guest = newGuest("Novjmno", "Novpjmen", "987654321", Gender.MALE); // guest2: "987654321" guestManager.createNewGuest(guest); } @Test(expected = IllegalArgumentException.class) public void createGuestWithNull() { guestManager.createNewGuest(null); } @Test(expected = IllegalArgumentException.class) public void createGuestWithNullName() { Guest guest = newGuest(null, "Novpjmen", "111222333", Gender.MALE); // Changed HW3 guestManager.createNewGuest(guest); } // Added HW3 @Test public void createGuestWithNameWithLength50() { Guest guest = newGuest("AbcdefghijAbcdefghijAbcdefghijAbcdefghijAbcdefghij", "Novp", "111222333", Gender.MALE); guestManager.createNewGuest(guest); // OK Long id = guest.getId(); Guest result = guestManager.getGuestById(id); assertNotNull(result); assertEquals(guest, result); assertDeepEqualsGuest(guest, result); } // Added HW3 @Test(expected = IllegalArgumentException.class) public void createGuestWithNameWithLength51() { Guest guest = newGuest("AbcdefghijAbcdefghijAbcdefghijAbcdefghijAbcdefghijA", "Novp", "111222333", Gender.MALE); guestManager.createNewGuest(guest); } @Test(expected = IllegalArgumentException.class) public void createGuestWithNullSurname() { Guest guest = newGuest("Novjmno", null, "111222333", Gender.MALE); // Changed HW3 guestManager.createNewGuest(guest); } // Added HW3 @Test public void createGuestWithSurnameWithLength50() { Guest guest = newGuest("Novj", "AbcdefghijAbcdefghijAbcdefghijAbcdefghijAbcdefghij", "111222333", Gender.MALE); guestManager.createNewGuest(guest); // OK Long id = guest.getId(); Guest result = guestManager.getGuestById(id); assertNotNull(result); assertEquals(guest, result); assertDeepEqualsGuest(guest, result); } // Added HW3 @Test(expected = IllegalArgumentException.class) public void createGuestWithSurnameWithLength51() { Guest guest = newGuest("Novj", "AbcdefghijAbcdefghijAbcdefghijAbcdefghijAbcdefghijA", "111222333", Gender.MALE); guestManager.createNewGuest(guest); } @Test(expected = IllegalArgumentException.class) public void createGuestWithNullIdentityCardNumber() { Guest guest = newGuest("Novjmno", "Novpjmen", null, Gender.MALE); guestManager.createNewGuest(guest); } @Test(expected = IllegalArgumentException.class) public void createGuestWithSpaceName() { Guest guest = newGuest(" ", "Novpjmen", "111222333", Gender.FEMALE); // Changed HW3 guestManager.createNewGuest(guest); } @Test(expected = IllegalArgumentException.class) public void createGuestWithSpaceSurname() { Guest guest = newGuest("Novjmno", " ", "111222333", Gender.FEMALE); // Changed HW3 guestManager.createNewGuest(guest); } @Test(expected = IllegalArgumentException.class) public void createGuestWIthSpaceIdentityCardNumber() { Guest guest = newGuest("Novjmno", "Novpjmen", " ", Gender.FEMALE); guestManager.createNewGuest(guest); } @Test(expected = IllegalArgumentException.class) public void createGuestWithNegativeIdentityCardNumber() { Guest guest = newGuest("Novjmno", "Novpjmen", "-12345678", Gender.MALE); guestManager.createNewGuest(guest); } @Test(expected = IllegalArgumentException.class) public void createGuestWithNegativeAndLongIdentityCardNumber() { Guest guest = newGuest("Novjmno", "Novpjmen", "-123456789", Gender.MALE); guestManager.createNewGuest(guest); } @Test(expected = IllegalArgumentException.class) public void createGuestWithTooShortIdentityCardNumber() { Guest guest = newGuest("Novjmno", "Novpjmen", "12345678", Gender.MALE); // only 8 digits guestManager.createNewGuest(guest); } @Test(expected = IllegalArgumentException.class) public void createGuestWithTooLongIdentityCardNumber() { Guest guest = newGuest("Novjmno", "Novpjmen", "1234567890", Gender.MALE); // more than 9 digits guestManager.createNewGuest(guest); } @Test public void createGuestWithIdentityCardNumberBeginningWithZero() { Guest guest = newGuest("Novjmno", "Novpjmen", "012345678", Gender.MALE); guestManager.createNewGuest(guest); // OK List<Guest> guests = guestManager.findAllGuests(); assertNotNull(guests); assertEquals(4, guests.size()); // 3+1 Long id = guest.getId(); guest = guestManager.getGuestById(id); assertNotNull(guest); assertEquals("Novjmno", guest.getName()); assertEquals("Novpjmen", guest.getSurname()); assertEquals("012345678", guest.getIdentityCardNumber()); assertEquals(Gender.MALE, guest.getGender()); } @Test(expected = IllegalArgumentException.class) public void createGuestWithZeroIdentityCardNumber() { Guest guest = newGuest("Novjmno", "Novpjmen", "000000000", Gender.MALE); guestManager.createNewGuest(guest); } @Test(expected = IllegalArgumentException.class) public void createGuestWithAplhabetIdentityCardNumber() { Guest guest = newGuest("Novjmno", "Novpjmen", "abcdefghi", Gender.MALE); guestManager.createNewGuest(guest); } @Test(expected = IllegalArgumentException.class) public void createGuestWithWrongIdentiyCardNumber() { Guest guest = newGuest("Novjmno", "Novpjmen", "@#*<>&$", Gender.MALE); guestManager.createNewGuest(guest); } @Test(expected = IllegalArgumentException.class) public void createGuestWithNoName() { Guest guest = newGuest("", "Novpjmen", "111222333", Gender.MALE); // Changed HW03 guestManager.createNewGuest(guest); } @Test(expected = IllegalArgumentException.class) public void createGuestWithNoSurname() { Guest guest = newGuest("Novjmno", "", "111222333", Gender.MALE); // Changed HW03 guestManager.createNewGuest(guest); } @Test(expected = IllegalArgumentException.class) public void createGuestWithNoIdentityCardNumber() { Guest guest = newGuest("Novjmno", "Novpjmen", "", Gender.MALE); guestManager.createNewGuest(guest); } @Test(expected = IllegalArgumentException.class) public void createGuestWithNullGender() { Guest guest = newGuest("Novjmno", "Novpjmen", "111222333", null); // Changed HW3 guestManager.createNewGuest(guest); } @Test(expected = IllegalArgumentException.class) public void createGuestWithWrongName() { Guest guest = newGuest("123", "Novpjmen", "111222333", Gender.FEMALE); // Changed HW03 guestManager.createNewGuest(guest); } @Test(expected = IllegalArgumentException.class) public void createGuestWithWrongSurname() { Guest guest = newGuest("Novjmno", "123", "111222333", Gender.FEMALE); // Changed HW03 guestManager.createNewGuest(guest); } @Test public void updateNameOfGuestTest() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setName("Nov"); guestManager.updateGuest(guest); guest = guestManager.getGuestById(id); assertEquals("Nov", guest.getName()); assertEquals("Pjmen", guest.getSurname()); assertEquals("123456789", guest.getIdentityCardNumber()); assertEquals(Gender.MALE, guest.getGender()); } @Test public void updateSurnameOfGuest() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setSurname("Nov"); guestManager.updateGuest(guest); guest = guestManager.getGuestById(id); assertEquals("Jmno", guest.getName()); assertEquals("Nov", guest.getSurname()); assertEquals("123456789", guest.getIdentityCardNumber()); assertEquals(Gender.MALE, guest.getGender()); } @Test public void updateIdentityCardNumberOfGuest() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setIdentityCardNumber("012345678"); guestManager.updateGuest(guest); guest = guestManager.getGuestById(id); assertEquals("Jmno", guest.getName()); assertEquals("Pjmen", guest.getSurname()); assertEquals("012345678", guest.getIdentityCardNumber()); assertEquals(Gender.MALE, guest.getGender()); } @Test public void updateGenderOfGuest() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setGender(Gender.FEMALE); guestManager.updateGuest(guest); guest = guestManager.getGuestById(id); assertEquals("Jmno", guest.getName()); assertEquals("Pjmen", guest.getSurname()); assertEquals("123456789", guest.getIdentityCardNumber()); assertEquals(Gender.FEMALE, guest.getGender()); } @Test(expected = IllegalArgumentException.class) public void updateNullGuest() { guestManager.updateGuest(null); } @Test(expected = IllegalArgumentException.class) public void updateGuestWithNullName() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setName(null); guestManager.updateGuest(guest); } @Test(expected = IllegalArgumentException.class) public void updateGuestWithNullSurname() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setSurname(null); guestManager.updateGuest(guest); } @Test(expected = IllegalArgumentException.class) public void updateGuestWithNullIdentityCardNumber() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setIdentityCardNumber(null); guestManager.updateGuest(guest); } @Test(expected = IllegalArgumentException.class) public void updateGuestWithSpaceName() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setName(" "); guestManager.updateGuest(guest); } @Test(expected = IllegalArgumentException.class) public void updateGuestWithSpaceSurname() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setSurname(" "); guestManager.updateGuest(guest); } @Test(expected = IllegalArgumentException.class) public void updateGuestWIthSpaceIdentityCardNumber() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setIdentityCardNumber(" "); guestManager.updateGuest(guest); } @Test(expected = IllegalArgumentException.class) public void udpateGuestWithNegativeIdentityCardNumber() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setIdentityCardNumber("-12345678"); guestManager.updateGuest(guest); } @Test(expected = IllegalArgumentException.class) public void updateGuestWithNegateveAndLongIdentityCardNumber() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setIdentityCardNumber("-123456789"); guestManager.updateGuest(guest); } @Test(expected = IllegalArgumentException.class) public void updateGuestWithTooShortIdentityCardNumber() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setIdentityCardNumber("12345678"); // only 8 digits guestManager.updateGuest(guest); } @Test(expected = IllegalArgumentException.class) public void updateGuestWithTooLongIdentityCardNumber() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setIdentityCardNumber("1234567890"); // more than 9 digits guestManager.updateGuest(guest); } // Added HW3 @Test public void updateGuestWithNameWithLength50() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setName("AbcdefghijAbcdefghijAbcdefghijAbcdefghijAbcdefghij"); guestManager.updateGuest(guest); // OK guest = guestManager.getGuestById(id); assertEquals("AbcdefghijAbcdefghijAbcdefghijAbcdefghijAbcdefghij", guest.getName()); assertEquals("Pjmen", guest.getSurname()); assertEquals("123456789", guest.getIdentityCardNumber()); assertEquals(Gender.MALE, guest.getGender()); } // Added HW3 @Test(expected = IllegalArgumentException.class) public void updateGuestWithNameWithLength51() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setName("AbcdefghijAbcdefghijAbcdefghijAbcdefghijAbcdefghijA"); guestManager.updateGuest(guest); } // Added HW3 @Test public void updateGuestWithSurnameWithLength50() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setSurname("AbcdefghijAbcdefghijAbcdefghijAbcdefghijAbcdefghij"); guestManager.updateGuest(guest); // OK guest = guestManager.getGuestById(id); assertEquals("Jmno", guest.getName()); assertEquals("AbcdefghijAbcdefghijAbcdefghijAbcdefghijAbcdefghij", guest.getSurname()); assertEquals("123456789", guest.getIdentityCardNumber()); assertEquals(Gender.MALE, guest.getGender()); } // Added HW3 @Test(expected = IllegalArgumentException.class) public void updateGuestWithSurnameWithLength51() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setSurname("AbcdefghijAbcdefghijAbcdefghijAbcdefghijAbcdefghijA"); guestManager.updateGuest(guest); } @Test public void updateGuestWithIdentityCardNumberBeginningWithZero() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setIdentityCardNumber("012345678"); guestManager.updateGuest(guest); // OK guest = guestManager.getGuestById(id); assertEquals("Jmno", guest.getName()); assertEquals("Pjmen", guest.getSurname()); assertEquals("012345678", guest.getIdentityCardNumber()); assertEquals(Gender.MALE, guest.getGender()); } @Test(expected = IllegalArgumentException.class) public void updateGuestWithZeroIdentityCardNumber() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setIdentityCardNumber("000000000"); guestManager.updateGuest(guest); } @Test(expected = IllegalArgumentException.class) public void updateGuestWithAplhabetIdentityCardNumber() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setIdentityCardNumber("abcdefghi"); guestManager.updateGuest(guest); } @Test(expected = IllegalArgumentException.class) public void updateGuestWithIncorrectIdentityCardNumber() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setIdentityCardNumber("@#*<>&$"); guestManager.updateGuest(guest); } @Test(expected = IllegalArgumentException.class) public void updateGuestWithNoName() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setName(""); guestManager.updateGuest(guest); } @Test(expected = IllegalArgumentException.class) public void updateGuestWithNoSurname() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setSurname(""); guestManager.updateGuest(guest); } @Test(expected = IllegalArgumentException.class) public void updateGuestWithNoIdentityCardNumber() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setIdentityCardNumber(""); guestManager.updateGuest(guest); } @Test(expected = IllegalArgumentException.class) public void updateGuestWithNullGender() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setGender(null); guestManager.updateGuest(guest); } @Test(expected = IllegalArgumentException.class) public void updateGuestWithNullId() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setId(null); guestManager.updateGuest(guest); } @Test(expected = IllegalArgumentException.class) public void updateGuestWithWrongName() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setName("123"); guestManager.updateGuest(guest); } @Test(expected = IllegalArgumentException.class) public void updateGuestWithWrongSurname() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setSurname("123"); guestManager.updateGuest(guest); } @Test(expected = IllegalArgumentException.class) public void updateGuestWithNegativeId() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setId(-1L); guestManager.updateGuest(guest); } @Test(expected = IllegalArgumentException.class) public void updateGuestWithUsedId() { Long id1 = guest1.getId(); Long id2 = guest2.getId(); Guest guest = guestManager.getGuestById(id1); guest.setId(id2); guestManager.updateGuest(guest); } // Added HW3 @Test(expected = IllegalArgumentException.class) public void updateGuestWithUsedIdentityCardNumber() { Long id1 = guest1.getId(); Long id2 = guest2.getId(); Guest g1 = guestManager.getGuestById(id1); Guest g2 = guestManager.getGuestById(id2); g2.setIdentityCardNumber(g1.getIdentityCardNumber()); // guest1:"123456789" guestManager.updateGuest(g2); } @Test public void updateGuestWithSameId() { Long id = guest1.getId(); Guest guest = guestManager.getGuestById(id); guest.setId(id); guestManager.updateGuest(guest); guest = guestManager.getGuestById(id); assertEquals("Jmno", guest.getName()); assertEquals("Pjmen", guest.getSurname()); assertEquals("123456789", guest.getIdentityCardNumber()); assertEquals(Gender.MALE, guest.getGender()); } @Test public void deleteGuestTest() { guestManager.deleteGuest(guest1); List<Guest> guests = guests = guestManager.findAllGuests(); assertNotNull(guests); assertEquals(2, guests.size()); // checking whether the correct guest was deleted List<Guest> expected = Arrays.asList(guest2, guest3); Collections.sort(guests, new GuestComparator()); Collections.sort(expected, new GuestComparator()); assertEquals(expected, guests); // Ponechano assertDeepEqualsCollectionGuest(expected, guests); // deleting all remaining guests: guestManager.deleteGuest(guest2); guestManager.deleteGuest(guest3); guests = guestManager.findAllGuests(); assertNotNull(guests); // No guests assertEquals(0, guests.size()); } @Test(expected = IllegalArgumentException.class) public void deleteDeletedGuest() { guestManager.deleteGuest(guest1); guestManager.deleteGuest(guest1); } @Test(expected = IllegalArgumentException.class) public void deleteNullGuest() { guestManager.deleteGuest(null); } @Test public void equalsTest() { assertFalse(guest1.equals(null)); guest1.setId(1L); // je ekvivalentni sam se sebou (stejna adresa v pameti)? -> nechce projit /* System.err.println("\nEquals:"); System.err.println(" " + guest1.getId() + " vs. " + guest1.getId()); System.err.println(" stejne adresy? + " + ((guest1.getId() == guest1.getId())?"ANO":"NE")); System.err.println(" stejne hodnoty? + " + (guest1.getId().equals(guest1.getId())?"ANO":"NE")); System.err.println(" vysledek equals: " + ((guest1.equals(guest1))?"ANO":"NE")); */ assertTrue(guest1.equals(guest1)); guest2.setId(1L); //System.err.println(guest1.getId().toString() + " vs. " + guest2.getId().toString()); // je ekvivalentni 1 a 1? -> nechce projit assertTrue(guest1.equals(guest2)); assertTrue(guest2.equals(guest1)); guest2.setId(2L); //System.err.println(guest1.getId().toString() + " vs. " + guest2.getId().toString()); // je ekvivalentni 1 a 2? assertFalse(guest1.equals(guest2)); assertFalse(guest2.equals(guest1)); guest2.setId(guest1.getId()); //System.err.println(guest1.getId().toString() + " vs. " + guest2.getId().toString()); // je ekvivalentni 1 a 1 (stejn adresa v pamti)? -> nechce projit assertTrue(guest1.equals(guest2)); assertTrue(guest2.equals(guest1)); guest1.setId(3L); //System.err.println(guest1.getId().toString() + " vs. " + guest2.getId().toString()); // je ekvivalentni 3 a 1? assertFalse(guest1.equals(guest2)); assertFalse(guest2.equals(guest1)); } @Test public void findAllGuestsTest() { List<Guest> result = guestManager.findAllGuests(); List<Guest> expected = Arrays.asList(guest1, guest2, guest3); Collections.sort(result, new GuestComparator()); Collections.sort(expected, new GuestComparator()); assertEquals(expected, result); // Ponechano assertDeepEqualsCollectionGuest(expected, result); } @Test public void getGuestByIdTest() { Long id = guest1.getId(); Guest result = guestManager.getGuestById(id); assertEquals(guest1, result); // Ponechano assertDeepEqualsGuest(guest1, result); // Added HW3 } @Test(expected = IllegalArgumentException.class) public void getGuestByNullId() { Guest result = guestManager.getGuestById(null); } @Test(expected = IllegalArgumentException.class) public void getGuestByNegativeId() { Guest result = guestManager.getGuestById(-1L); } // Added HW3 @Test(expected = IllegalArgumentException.class) public void getGuestByZeroId() { Guest result = guestManager.getGuestById(0L); } @Test(expected = IllegalArgumentException.class) public void getGuestByNonexistingId() { Long id = guest1.getId(); guestManager.deleteGuest(guest1); // ID id doesn't exist now Guest guest = guestManager.getGuestById(id); } static Guest newGuest(String name, String surname, String identityCardNumber, Gender gender) { Guest guest = new Guest(); guest.setName(name); guest.setSurname(surname); guest.setIdentityCardNumber(identityCardNumber); guest.setGender(gender); return guest; } static void assertDeepEqualsCollectionGuest(List<Guest> expectedList, List<Guest> actualList) { assertEquals(expectedList.size(), actualList.size()); for (int i = 0; i < expectedList.size(); i++) { Guest expected = expectedList.get(i); Guest actual = actualList.get(i); assertDeepEqualsGuest(expected, actual); } } static void assertDeepEqualsGuest(Guest expected, Guest actual) { assertEquals(expected.getId(), actual.getId()); assertEquals(expected.getName(), actual.getName()); assertEquals(expected.getSurname(), actual.getSurname()); assertEquals(expected.getIdentityCardNumber(), actual.getIdentityCardNumber()); assertEquals(expected.getGender(), actual.getGender()); } }