package carpool.test.dao; import static org.junit.Assert.fail; import java.sql.Connection; import java.sql.Date; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Calendar; import java.util.Random; import org.junit.Test; import carpool.carpoolDAO.CarpoolDaoBasic; import carpool.carpoolDAO.CarpoolDaoMessage; import carpool.carpoolDAO.CarpoolDaoUser; import carpool.cleanRoutineTask.MessageCleaner; import carpool.common.DateUtility; import carpool.common.DebugLog; import carpool.common.HelperOperator; import carpool.common.Parser; import carpool.configurations.EnumConfig; import carpool.configurations.EnumConfig.DayTimeSlot; import carpool.configurations.EnumConfig.Gender; import carpool.configurations.EnumConfig.MessageState; import carpool.configurations.EnumConfig.MessageType; import carpool.configurations.EnumConfig.PaymentMethod; import carpool.dbservice.*; import carpool.exception.validation.ValidationException; import carpool.exception.location.LocationNotFoundException; import carpool.exception.message.MessageNotFoundException; import carpool.exception.user.UserNotFoundException; import carpool.exception.validation.ValidationException; import carpool.model.representation.SearchRepresentation; import carpool.model.Location; import carpool.model.Message; import carpool.model.User; import static java.lang.System.out; public class CarpoolMessageTest { @Test public void testCreate() throws UserNotFoundException, LocationNotFoundException { CarpoolDaoBasic.clearBothDatabase(); Calendar time = DateUtility.DateToCalendar(new Date(0)); ArrayList<Integer> priceList = new ArrayList<Integer>(); priceList.add(1); PaymentMethod paymentMethod =null; paymentMethod = paymentMethod.fromInt(0); MessageType type = MessageType.fromInt(0); Gender genderRequirement = Gender.fromInt(0); MessageState state = MessageState.fromInt(0); DayTimeSlot timeSlot = DayTimeSlot.fromInt(0); //Location long departure_Id = 1; long arrival_Id = 2; String province = "Ontario"; String city1 = "Toronto"; String city2 = "Waterloo"; String region1 = "Downtown"; String region2 = "Downtown UW"; Double lat1 = 32.123212; Double lat2 = 23.132123; Double lng1 = 34.341232; Double lng2 = 34.123112; Location departureLocation= new Location(province,city1,region1,"Test1","Test11",lat1,lng1,arrival_Id); Location arrivalLocation = new Location(province,city2,region2,"Test2","Test22",lat2,lng2,departure_Id); //No user Message message=new Message(1, 1, null,false , departureLocation,time,timeSlot,1,1 , priceList,arrivalLocation, time,timeSlot,1, 1,priceList,paymentMethod, "test", type, genderRequirement , state, time, time,false); CarpoolDaoMessage.addMessageToDatabase(message); //Has user User user = new User("HarryXiong","c2xiong@uwaterloo.ca",departureLocation, Gender.both); Message message2=new Message(1, 2, user,false , arrivalLocation,time,timeSlot,3,4 , priceList,departureLocation, time,timeSlot,5, 6,priceList,paymentMethod, "test", type, genderRequirement , state, time, time,false); CarpoolDaoMessage.addMessageToDatabase(message); } @Test public void testRead() throws LocationNotFoundException{ CarpoolDaoBasic.clearBothDatabase(); Calendar time = DateUtility.DateToCalendar(new Date(0)); ArrayList<Integer> priceList = new ArrayList<Integer>(); priceList.add(1); PaymentMethod paymentMethod =null; paymentMethod = paymentMethod.fromInt(0); MessageType type = MessageType.fromInt(0); Gender genderRequirement = Gender.fromInt(0); MessageState state = MessageState.fromInt(0); DayTimeSlot timeSlot = DayTimeSlot.fromInt(0); //Location long departure_Id = 1; long arrival_Id = 2; String province = "Ontario"; String city1 = "Toronto"; String city2 = "Waterloo"; String region1 = "Downtown"; String region2 = "Downtown UW"; Double lat1 = 32.123212; Double lat2 = 23.132123; Double lng1 = 34.341232; Double lng2 = 34.123112; Location departureLocation= new Location(province,city1,region1,"Test1","Test11",lat1,lng1,arrival_Id); Location arrivalLocation = new Location(province,city2,region2,"Test2","Test22",lat2,lng2,departure_Id); Location userLocation = new Location(province,city2,region2,"Test2","Test22",lat2,lng2,departure_Id); User user = new User("xch93318yeah", "c2xiong@uwaterloo.ca", userLocation, Gender.both); try { CarpoolDaoUser.addUserToDatabase(user); } catch (ValidationException e) { e.printStackTrace(); } //Message Message message=new Message(user.getUserId(),false , departureLocation,time,timeSlot,1 , priceList,arrivalLocation, time,timeSlot, 1,priceList,paymentMethod, "test", type, genderRequirement); message = CarpoolDaoMessage.addMessageToDatabase(message); //Test try { Message temp = CarpoolDaoMessage.getMessageById(message.getMessageId()); if(!message.equals(temp)){ fail(); } } catch (MessageNotFoundException | UserNotFoundException e) { e.printStackTrace(); fail(); } } @Test public void testUpdate() throws MessageNotFoundException, UserNotFoundException, LocationNotFoundException{ CarpoolDaoBasic.clearBothDatabase(); Calendar time = DateUtility.DateToCalendar(new Date(0)); ArrayList<Integer> priceList = new ArrayList<Integer>(); priceList.add(1); PaymentMethod paymentMethod =null; paymentMethod = paymentMethod.fromInt(0); MessageType type = MessageType.fromInt(0); Gender genderRequirement = Gender.fromInt(0); MessageState state = MessageState.fromInt(0); DayTimeSlot timeSlot = DayTimeSlot.fromInt(0); //Location long departure_Id = 1; long arrival_Id = 2; String province = "Ontario"; String city1 = "Toronto"; String city2 = "Waterloo"; String region1 = "Downtown"; String region2 = "Downtown UW"; Double lat1 = 32.123212; Double lat2 = 23.132123; Double lng1 = 34.341232; Double lng2 = 34.123112; Location departureLocation= new Location(province,city1,region1,"Test1","Test11",lat1,lng1,arrival_Id); Location arrivalLocation = new Location(province,city2,region2,"Test2","Test22",lat2,lng2,departure_Id); User user = new User("xch93318yeah", "c2xiong@uwaterloo.ca", departureLocation, Gender.both); try { CarpoolDaoUser.addUserToDatabase(user); } catch (ValidationException e) { e.printStackTrace(); } //Message Message message=new Message(user.getUserId(),false , arrivalLocation,time,timeSlot,1 , priceList,arrivalLocation, time, timeSlot,1,priceList,paymentMethod, "test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message); //Update Location, paymentMethod, and type, state,genderRequirement,timeSlot as well as priceList message.setArrival_Location(departureLocation); message.setGenderRequirement(Gender.fromInt(1)); message.setType(MessageType.fromInt(1)); message.setPaymentMethod(paymentMethod.fromInt(1)); priceList.remove(0); priceList.add(2); message.setArrival_priceList(priceList); message.setArrival_timeSlot(DayTimeSlot.fromInt(1)); message.setDeparture_timeSlot(DayTimeSlot.fromInt(2)); CarpoolDaoMessage.UpdateMessageInDatabase(message); //Test try{ if(!message.equals(CarpoolDaoMessage.getMessageById(message.getMessageId()))){ fail(); } } catch(Exception e){ e.printStackTrace(); } } @Test public void testDelete() throws LocationNotFoundException{ CarpoolDaoBasic.clearBothDatabase(); Calendar time = DateUtility.DateToCalendar(new Date(0)); ArrayList<Integer> priceList = new ArrayList<Integer>(); priceList.add(1); PaymentMethod paymentMethod =null; paymentMethod = paymentMethod.fromInt(0); MessageType type = MessageType.fromInt(0); Gender genderRequirement = Gender.fromInt(0); MessageState state = MessageState.fromInt(0); DayTimeSlot timeSlot = DayTimeSlot.fromInt(0); int messageId=-1; int userId=-1; //Location long departure_Id = 1; long arrival_Id = 2; String province = "Ontario"; String city1 = "Toronto"; String city2 = "Waterloo"; String region1 = "Downtown"; String region2 = "Downtown UW"; Double lat1 = 32.123212; Double lat2 = 23.132123; Double lng1 = 34.341232; Double lng2 = 34.123112; Location departureLocation= new Location(province,city1,region1,"Test1","Test11",lat1,lng1,arrival_Id); Location arrivalLocation = new Location(province,city2,region2,"Test2","Test22",lat2,lng2,departure_Id); //Message Message message=new Message(userId,false , departureLocation,time,timeSlot,1 , priceList,arrivalLocation, time,timeSlot, 1,priceList,paymentMethod, "test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message); //Delete try { CarpoolDaoMessage.deleteMessageFromDatabase(message.getMessageId()); } catch (MessageNotFoundException e) { fail(); } try{ CarpoolDaoMessage.getMessageById(message.getMessageId()); }catch (UserNotFoundException e) { fail(); } catch (MessageNotFoundException e) { //Passed } } @Test public void testSearch() throws LocationNotFoundException{ CarpoolDaoBasic.clearBothDatabase(); //Date Calendar dt = DateUtility.getCurTimeInstance(); Calendar at = DateUtility.getCurTimeInstance(); at.add(Calendar.DAY_OF_YEAR, 1); Calendar dt2 = DateUtility.getCurTimeInstance(); dt2.add(Calendar.DAY_OF_YEAR, -1); Calendar dt3 = DateUtility.getCurTimeInstance(); dt3.add(Calendar.DAY_OF_YEAR, -2); //Location long departure_Id = 1L; long arrival_Id = 2L; String province = "Ontario"; String city1 = "Toronto"; String city2 = "Waterloo"; String region1 = "Downtown"; String region2 = "Downtown UW"; Double lat1 = 32.123212; Double lat2 = 23.132123; Double lng1 = 34.341232; Double lng2 = 34.123112; Location departureLocation= new Location(province,city1,region1,"Test1","Test11",lat1,lng1,arrival_Id); Location arrivalLocation = new Location(province,city2,region2,"Test2","Test22",lat2,lng2,departure_Id); User user = new User("xch93318yeah", "c2xiong@uwaterloo.ca", arrivalLocation, Gender.both); try { CarpoolDaoUser.addUserToDatabase(user); } catch (ValidationException e) { e.printStackTrace(); } ArrayList<Integer> priceList = new ArrayList<Integer>(); priceList.add(1); PaymentMethod paymentMethod =null; paymentMethod = paymentMethod.fromInt(0); MessageType type = MessageType.fromInt(0); MessageType type1 = MessageType.fromInt(1); MessageType type2 = MessageType.fromInt(2); Gender genderRequirement = Gender.fromInt(0); DayTimeSlot timeSlot = DayTimeSlot.fromInt(0); DayTimeSlot timeSlot1 = DayTimeSlot.fromInt(1); DayTimeSlot timeSlot2 = DayTimeSlot.fromInt(2); DayTimeSlot timeSlot3 = DayTimeSlot.fromInt(3); DayTimeSlot timeSlot4 = DayTimeSlot.fromInt(4); int userId=user.getUserId(); //These messages should pass the search //Message Message message=new Message(userId,false, new Location(departureLocation),dt,timeSlot,1 , priceList,new Location(arrivalLocation),at,timeSlot, 0,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message); //Message2 Message message2=new Message(userId,true, new Location(departureLocation),dt,timeSlot,1 , priceList,new Location(arrivalLocation),at,timeSlot, 1,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message2); //Message3 Message message3=new Message(userId,true, new Location(arrivalLocation),dt2,timeSlot,1 , priceList,new Location(departureLocation),dt,timeSlot, 1,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message3); //Message4 Message message4=new Message(userId,false,new Location(arrivalLocation),dt2,timeSlot,1 , priceList,new Location(departureLocation),dt,timeSlot, 0,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message4); //Other messages Message message5=new Message(userId,false, new Location(arrivalLocation),dt3,timeSlot,1 , priceList,new Location(departureLocation),dt,timeSlot, 0,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message5); Message message6=new Message(userId,true, new Location(arrivalLocation),dt3,timeSlot,1 , priceList,new Location(departureLocation),dt,timeSlot, 1,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message6); Message message7=new Message(userId,false, new Location(departureLocation),dt3,timeSlot,1 , priceList,new Location(arrivalLocation),dt2,timeSlot, 0,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message7); Message message8=new Message(userId,true, new Location(departureLocation),dt3,timeSlot,1 , priceList,new Location(arrivalLocation),dt2,timeSlot, 1,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message8); //Seats adjust Message message9=new Message(userId,false, new Location(departureLocation),dt,timeSlot,10 , priceList,new Location(arrivalLocation),at,timeSlot, 0,priceList,paymentMethod,"test", type, genderRequirement); message9.setDeparture_seatsBooked(11); CarpoolDaoMessage.addMessageToDatabase(message9); //SRs SearchRepresentation SR = new SearchRepresentation(false,new Location(departureLocation).getMatch(),new Location(arrivalLocation).getMatch(),dt,at,type,timeSlot,timeSlot); SearchRepresentation SR2 = new SearchRepresentation(true,new Location(arrivalLocation).getMatch(),new Location(departureLocation).getMatch(),dt2,dt,type2,timeSlot,timeSlot); SearchRepresentation SR3 = new SearchRepresentation(false,new Location(arrivalLocation).getMatch(),new Location(departureLocation).getMatch(),dt2,dt,type2,timeSlot,timeSlot); SearchRepresentation SR4 = new SearchRepresentation(true,new Location(departureLocation).getMatch(),new Location(arrivalLocation).getMatch(),dt,at,type,timeSlot,timeSlot); //New SRs Calendar dtime = DateUtility.getCurTimeInstance(); dtime.set(Calendar.HOUR_OF_DAY, 24); dtime.set(Calendar.MINUTE, 0); dtime.set(Calendar.SECOND, 0); Calendar atime = DateUtility.getCurTimeInstance(); atime.add(Calendar.DAY_OF_YEAR, 1); atime.set(Calendar.HOUR_OF_DAY, 18); SearchRepresentation SR5 = new SearchRepresentation(false,new Location(departureLocation).getMatch(),new Location(arrivalLocation).getMatch(),dtime,atime,type,timeSlot1,timeSlot2); Calendar dtime2 = DateUtility.getCurTimeInstance(); dtime2.set(Calendar.HOUR_OF_DAY, 9); dtime2.set(Calendar.MINUTE, 30); dtime2.set(Calendar.SECOND, 0); Calendar atime2 = DateUtility.getCurTimeInstance(); atime2.set(Calendar.HOUR_OF_DAY, 18); atime2.set(Calendar.MINUTE, 30); atime2.set(Calendar.SECOND, 0); Calendar dtime3 = DateUtility.getCurTimeInstance(); dtime3.set(Calendar.HOUR_OF_DAY, 21); dtime3.set(Calendar.MINUTE, 30); dtime3.set(Calendar.SECOND, 0); Calendar atime3 = DateUtility.getCurTimeInstance(); atime3.set(Calendar.HOUR_OF_DAY, 23); atime3.set(Calendar.MINUTE, 59); atime3.set(Calendar.SECOND, 59); Calendar dtime4 = DateUtility.getCurTimeInstance(); dtime4.add(Calendar.DAY_OF_YEAR, -1); Message message10=new Message(userId,true, new Location(departureLocation),dtime3,timeSlot,1 , priceList,new Location(arrivalLocation),atime3,timeSlot, 1,priceList,paymentMethod,"test", type1, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message10); Message message11=new Message(userId,true, new Location(departureLocation),dtime3,timeSlot,1 , priceList,new Location(arrivalLocation),atime3,timeSlot, 1,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message11); SearchRepresentation SR6 = new SearchRepresentation(false,new Location(departureLocation).getMatch(),new Location(arrivalLocation).getMatch(),dtime2,atime2,type2,timeSlot1,timeSlot2); SearchRepresentation SR7 = new SearchRepresentation(true,new Location(departureLocation).getMatch(),new Location(arrivalLocation).getMatch(),dtime2,atime2,type1,timeSlot1,timeSlot2); SearchRepresentation SR8 = new SearchRepresentation(true,new Location(arrivalLocation).getMatch(),new Location(departureLocation).getMatch(),dtime4,dtime2,type,timeSlot1,timeSlot2); //New SR Test try{ ArrayList<Message> mlist = new ArrayList<Message>(); mlist = CarpoolDaoMessage.searchMessage(SR5); if(mlist.size()==5&&mlist.get(0).equals(message)&&mlist.get(1).equals(message2)&&mlist.get(2).equals(message3)&&mlist.get(3).equals(message6)&&mlist.get(4).equals(message11)){ //Passed; }else{ fail(); } }catch(Exception e){ e.printStackTrace(); fail(); } try{ ArrayList<Message> mlist = new ArrayList<Message>(); mlist = CarpoolDaoMessage.searchMessage(SR6); if(mlist.size()==6&&mlist.get(0).equals(message)&&mlist.get(1).equals(message2)&&mlist.get(2).equals(message3)&&mlist.get(3).equals(message6)&&mlist.get(4).equals(message10)&&mlist.get(5).equals(message11)){ //Passed; }else{ fail(); } }catch(Exception e){ e.printStackTrace(); fail(); } try{ ArrayList<Message> mlist = new ArrayList<Message>(); mlist = CarpoolDaoMessage.searchMessage(SR7); if(mlist.size()==1&&mlist.get(0).equals(message10)){ //Passed; }else{ fail(); } }catch(Exception e){ e.printStackTrace(); fail(); } try{ ArrayList<Message> mlist = new ArrayList<Message>(); mlist = CarpoolDaoMessage.searchMessage(SR8); if(mlist.size()==7&&mlist.get(0).equals(message)&&mlist.get(1).equals(message2)&&mlist.get(2).equals(message3)&&mlist.get(3).equals(message4)&mlist.get(4).equals(message6)&&mlist.get(5).equals(message8)&&mlist.get(6).equals(message11)){ //Passed; }else{ System.out.println(mlist.size()); fail(); } }catch(Exception e){ e.printStackTrace(); fail(); } //Test try{ ArrayList<Message> mlist = new ArrayList<Message>(); mlist = CarpoolDaoMessage.searchMessage(SR); if(mlist.size()==5 && mlist.get(0).equals(message)&&mlist.get(1).equals(message2)&&mlist.get(2).equals(message3)&&mlist.get(3).equals(message6)&&mlist.get(4).equals(message11)){ //Passed; }else{ System.out.println(mlist.size()); fail(); } }catch(Exception e){ e.printStackTrace(); fail(); } try{ ArrayList<Message> mlist = new ArrayList<Message>(); mlist = CarpoolDaoMessage.searchMessage(SR2); if(mlist !=null && mlist.size()==8 && mlist.get(0).equals(message)&&mlist.get(1).equals(message2)&&mlist.get(2).equals(message3)&&mlist.get(3).equals(message4)&&mlist.get(4).equals(message6)&&mlist.get(5).equals(message8)&&mlist.get(6).equals(message10)&&mlist.get(7).equals(message11)){ //Passed; }else{ System.out.println(mlist.size()); fail(); } }catch(Exception e){ e.printStackTrace(); fail(); } try{ ArrayList<Message> mlist = new ArrayList<Message>(); mlist = CarpoolDaoMessage.searchMessage(SR3); if(mlist !=null && mlist.size()==3 && mlist.get(0).equals(message3)&&mlist.get(1).equals(message4)&&mlist.get(2).equals(message8)){ //Passed; }else{ System.out.println(mlist.size()); fail(); } }catch(Exception e){ e.printStackTrace(); fail(); } try{ ArrayList<Message> mlist = new ArrayList<Message>(); mlist = CarpoolDaoMessage.searchMessage(SR4); if(mlist.size()==5 && mlist.get(0).equals(message)&&mlist.get(1).equals(message2)&&mlist.get(2).equals(message3)&&mlist.get(3).equals(message6)&&mlist.get(4).equals(message11)){ //Passed; }else{ System.out.println(mlist.size()); fail(); } }catch(Exception e){ e.printStackTrace(); fail(); } } @Test public void getRecentMessages() throws LocationNotFoundException{ CarpoolDaoBasic.clearBothDatabase(); //Date Calendar dt = DateUtility.getCurTimeInstance(); Calendar at = DateUtility.getCurTimeInstance(); //Location long departure_Id = 1; long arrival_Id = 2; String province = "Ontario"; String city1 = "Toronto"; String city2 = "Waterloo"; String region1 = "Downtown"; String region2 = "Downtown UW"; Double lat1 = 32.123212; Double lat2 = 23.132123; Double lng1 = 34.341232; Double lng2 = 34.123112; Location departureLocation= new Location(province,city1,region1,"Test1","Test11",lat1,lng1,arrival_Id); Location arrivalLocation = new Location(province,city2,region2,"Test2","Test22",lat2,lng2,departure_Id); try{ ArrayList<Message> mlist = new ArrayList<Message>(); mlist = CarpoolDaoMessage.getRecentMessages(); if(mlist !=null && mlist.size()==0){ //Passed; }else{ fail(); } }catch(Exception e){ e.printStackTrace(); fail(); } User user = new User("xch93318yeah", "c2xiong@uwaterloo.ca",departureLocation, Gender.both); try { CarpoolDaoUser.addUserToDatabase(user); } catch (ValidationException e) { e.printStackTrace(); } ArrayList<Integer> priceList = new ArrayList<Integer>(); priceList.add(1); PaymentMethod paymentMethod =null; paymentMethod = paymentMethod.fromInt(0); MessageType type = MessageType.fromInt(0); Gender genderRequirement = Gender.fromInt(0); DayTimeSlot timeSlot = DayTimeSlot.fromInt(0); int userId=user.getUserId(); //Message Message message=new Message(userId,false, new Location(departureLocation),dt,timeSlot,1 , priceList,new Location(arrivalLocation),at,timeSlot, 0,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message); Message message2=new Message(userId,true, new Location(departureLocation),dt,timeSlot,1 , priceList,new Location(arrivalLocation),at,timeSlot, 1,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message2); Message message3=new Message(userId,true, new Location(arrivalLocation),dt,timeSlot,1 , priceList,new Location(departureLocation),dt,timeSlot, 1,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message3); Message message4=new Message(userId,false, new Location(arrivalLocation),dt,timeSlot,1 , priceList,new Location(departureLocation),dt,timeSlot, 0,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message4); Message message5=new Message(userId,false, new Location(arrivalLocation),dt,timeSlot,1 , priceList,new Location(departureLocation),dt,timeSlot, 0,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message5); Message message6=new Message(userId,true, new Location(arrivalLocation),dt,timeSlot,1 , priceList,new Location(departureLocation),dt,timeSlot, 1,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message6); Message message7=new Message(userId,false, new Location(departureLocation),dt,timeSlot,1 , priceList,new Location(arrivalLocation),dt,timeSlot, 0,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message7); Message message8=new Message(userId,true, new Location(departureLocation),dt,timeSlot,1 , priceList,new Location(arrivalLocation),dt,timeSlot, 1,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message8); Message message9=new Message(userId,false, new Location(departureLocation),dt,timeSlot,10 , priceList,new Location(arrivalLocation),at,timeSlot, 0,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message9); Message message10=new Message(userId,true, new Location(departureLocation),dt,timeSlot,1 , priceList,new Location(arrivalLocation),at,timeSlot, 1,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message10); Message message11=new Message(userId,true, new Location(arrivalLocation),dt,timeSlot,1 , priceList,new Location(departureLocation),dt,timeSlot, 1,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message11); Message message12=new Message(userId,false, new Location(arrivalLocation),dt,timeSlot,10 , priceList,new Location(departureLocation),dt,timeSlot, 0,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message12); Message message13=new Message(userId,true, new Location(arrivalLocation),dt,timeSlot,1 , priceList,new Location(departureLocation),dt,timeSlot, 1,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message13); Message message14=new Message(userId,true, new Location(departureLocation),dt,timeSlot,1 , priceList,new Location(arrivalLocation),dt,timeSlot, 1,priceList,paymentMethod,"test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message14); //Test try{ ArrayList<Message> mlist = new ArrayList<Message>(); mlist = CarpoolDaoMessage.getRecentMessages(); if(mlist !=null && mlist.size()==10 && mlist.get(0).equals(message)&& mlist.get(1).equals(message2)&& mlist.get(2).equals(message3)&& mlist.get(3).equals(message4)&& mlist.get(4).equals(message5)&& mlist.get(5).equals(message6)&& mlist.get(6).equals(message7)&& mlist.get(7).equals(message8)&& mlist.get(8).equals(message9)&& mlist.get(9).equals(message10)){ //Passed; }else{ fail(); } }catch(Exception e){ e.printStackTrace(); fail(); } } @Test public void testMessageCleaner() throws LocationNotFoundException{ CarpoolDaoBasic.clearBothDatabase(); Calendar dt1 = DateUtility.getCurTimeInstance(); Calendar at1 = DateUtility.getCurTimeInstance(); Calendar dt2 = DateUtility.getCurTimeInstance(); dt2.add(Calendar.DAY_OF_YEAR,-1); Calendar at2 = DateUtility.getCurTimeInstance(); at2.add(Calendar.DAY_OF_YEAR,-1); Calendar dt3 = DateUtility.getCurTimeInstance(); dt3.add(Calendar.DAY_OF_YEAR, 1); Calendar at3 = DateUtility.getCurTimeInstance(); at3.add(Calendar.DAY_OF_YEAR, 1); ArrayList<Integer> priceList = new ArrayList<Integer>(); priceList.add(30); PaymentMethod paymentMethod =null; paymentMethod = paymentMethod.fromInt(0); MessageType type = MessageType.fromInt(2); Gender genderRequirement = Gender.fromInt(0); MessageState state = MessageState.fromInt(0); DayTimeSlot timeSlot = DayTimeSlot.fromInt(0); //Location long departure_Id = 1; long arrival_Id = 2; String province = "Ontario"; String city1 = "Toronto"; String city2 = "Waterloo"; String region1 = "Downtown"; String region2 = "Downtown UW"; Double lat1 = 32.123212; Double lat2 = 23.132123; Double lng1 = 34.341232; Double lng2 = 34.123112; Location departureLocation= new Location(province,city1,region1,"Test1","Test11",lat1,lng1,arrival_Id); Location arrivalLocation = new Location(province,city2,region2,"Test2","Test22",lat2,lng2,departure_Id); User user = new User("xch93318yeah", "c2xiong@uwaterloo.ca", departureLocation, Gender.both); try { CarpoolDaoUser.addUserToDatabase(user); } catch (ValidationException e) { e.printStackTrace(); } //Message: message2 , message5 , message7 and message8 shouldn't pass Message message=new Message(user.getUserId(),false , departureLocation,dt1,timeSlot,1 , priceList,departureLocation, at1, timeSlot,1,priceList,paymentMethod, "test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message); Message message2=new Message(user.getUserId(),false , arrivalLocation,dt2,timeSlot,1 , priceList,arrivalLocation, at3, timeSlot,1,priceList,paymentMethod, "test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message2); Message message3=new Message(user.getUserId(),false , departureLocation,dt1,timeSlot,1 , priceList,arrivalLocation, at3, timeSlot,1,priceList,paymentMethod, "test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message3); Message message4=new Message(user.getUserId(),true , departureLocation,dt2,timeSlot,1 , priceList,departureLocation, at1, timeSlot,1,priceList,paymentMethod, "test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message4); Message message5=new Message(user.getUserId(),true , arrivalLocation,dt2,timeSlot,1 , priceList,arrivalLocation, at2, timeSlot,1,priceList,paymentMethod, "test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message5); Message message6=new Message(user.getUserId(),true , arrivalLocation,dt3,timeSlot,1 , priceList,departureLocation, at3, timeSlot,1,priceList,paymentMethod, "test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message6); Message message7=new Message(user.getUserId(),true , arrivalLocation,dt3,timeSlot,1 , priceList,arrivalLocation, at3, timeSlot,1,priceList,paymentMethod, "test", type, genderRequirement); message7.setState(EnumConfig.MessageState.fromInt(1)); CarpoolDaoMessage.addMessageToDatabase(message7); Message message8=new Message(user.getUserId(),true , departureLocation,dt3,timeSlot,1 , priceList,arrivalLocation, at3, timeSlot,1,priceList,paymentMethod, "test", type, genderRequirement); message8.setState(EnumConfig.MessageState.fromInt(0)); CarpoolDaoMessage.addMessageToDatabase(message8); MessageCleaner.Clean(); ArrayList<Integer> list = new ArrayList<Integer>(); String query = "SELECT * from carpoolDAOMessage WHERE ownerId = ?"; Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try{ conn = CarpoolDaoBasic.getSQLConnection(); stmt = conn.prepareStatement(query); stmt.setInt(1, message.getOwnerId()); rs = stmt.executeQuery(); while(rs.next()){ list.add(rs.getInt("messageState")); } } catch (SQLException e) { e.printStackTrace(); DebugLog.d(e); }finally{ CarpoolDaoBasic.closeResources(conn, stmt, rs, true); } if(list !=null && list.size()==8 && list.get(0)==2&&list.get(1)==1&& list.get(2)==2&&list.get(3)==2&& list.get(4)==1&&list.get(5)==2&& list.get(6)==1&&list.get(7)==0){ //Passed; }else{ fail(); } } @Test public void testMessageIsOpen() throws LocationNotFoundException{ CarpoolDaoBasic.clearBothDatabase(); Calendar dt1 = DateUtility.getCurTimeInstance(); Calendar at1 = DateUtility.getCurTimeInstance(); Calendar dt2 = DateUtility.getCurTimeInstance(); dt2.add(Calendar.DAY_OF_YEAR,-1); Calendar at2 = DateUtility.getCurTimeInstance(); at2.add(Calendar.DAY_OF_YEAR,-1); Calendar dt3 = DateUtility.getCurTimeInstance(); dt3.add(Calendar.DAY_OF_YEAR, 1); Calendar at3 = DateUtility.getCurTimeInstance(); at3.add(Calendar.DAY_OF_YEAR, 1); ArrayList<Integer> priceList = new ArrayList<Integer>(); priceList.add(30); PaymentMethod paymentMethod =null; paymentMethod = paymentMethod.fromInt(0); MessageType type = MessageType.fromInt(2); Gender genderRequirement = Gender.fromInt(0); MessageState state = MessageState.fromInt(0); DayTimeSlot timeSlot = DayTimeSlot.fromInt(0); //Location long departure_Id = 1; long arrival_Id = 2; String province = "Ontario"; String city1 = "Toronto"; String city2 = "Waterloo"; String region1 = "Downtown"; String region2 = "Downtown UW"; Double lat1 = 32.123212; Double lat2 = 23.132123; Double lng1 = 34.341232; Double lng2 = 34.123112; Location departureLocation= new Location(province,city1,region1,"Test1","Test11",lat1,lng1,arrival_Id); Location arrivalLocation = new Location(province,city2,region2,"Test2","Test22",lat2,lng2,departure_Id); User user = new User("xch93318yeah", "c2xiong@uwaterloo.ca", departureLocation, Gender.both); try { CarpoolDaoUser.addUserToDatabase(user); } catch (ValidationException e) { e.printStackTrace(); } //Message: message2 , message5 , message7 and message8 shouldn't pass Message message=new Message(user.getUserId(),false , departureLocation,dt1,timeSlot,1 , priceList,departureLocation, at1, timeSlot,1,priceList,paymentMethod, "test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message); Message message2=new Message(user.getUserId(),false , arrivalLocation,dt2,timeSlot,1 , priceList,arrivalLocation, at3, timeSlot,1,priceList,paymentMethod, "test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message2); Message message3=new Message(user.getUserId(),false , departureLocation,dt1,timeSlot,1 , priceList,arrivalLocation, at3, timeSlot,1,priceList,paymentMethod, "test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message3); Message message4=new Message(user.getUserId(),true , departureLocation,dt2,timeSlot,1 , priceList,departureLocation, at1, timeSlot,1,priceList,paymentMethod, "test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message4); Message message5=new Message(user.getUserId(),true , arrivalLocation,dt2,timeSlot,1 , priceList,arrivalLocation, at2, timeSlot,1,priceList,paymentMethod, "test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message5); Message message6=new Message(user.getUserId(),true , arrivalLocation,dt3,timeSlot,1 , priceList,departureLocation, at3, timeSlot,1,priceList,paymentMethod, "test", type, genderRequirement); CarpoolDaoMessage.addMessageToDatabase(message6); Message message7=new Message(user.getUserId(),true , arrivalLocation,dt3,timeSlot,1 , priceList,arrivalLocation, at3, timeSlot,1,priceList,paymentMethod, "test", type, genderRequirement); message7.setState(EnumConfig.MessageState.fromInt(1)); CarpoolDaoMessage.addMessageToDatabase(message7); // //Set Message states and Dt message.setState(carpool.configurations.EnumConfig.MessageState.closed); message2.setState(carpool.configurations.EnumConfig.MessageState.deleted); message3.setState(carpool.configurations.EnumConfig.MessageState.open); message3.setDeparture_time(DateUtility.getCurTimeInstance()); //This will pass message4.setState(carpool.configurations.EnumConfig.MessageState.open); message4.setDeparture_time(dt3); //Set Message states and Dt message5.setState(carpool.configurations.EnumConfig.MessageState.open); message5.setDeparture_time(dt2); message6.setState(carpool.configurations.EnumConfig.MessageState.deleted); message6.setDeparture_time(DateUtility.getCurTimeInstance()); message7.setState(carpool.configurations.EnumConfig.MessageState.closed); message7.setDeparture_time(DateUtility.getCurTimeInstance()); if(CarpoolDaoMessage.isOpen(message)||CarpoolDaoMessage.isOpen(message2)||CarpoolDaoMessage.isOpen(message3)||CarpoolDaoMessage.isOpen(message5)||CarpoolDaoMessage.isOpen(message6)||CarpoolDaoMessage.isOpen(message7)){ fail(); }else{ if(CarpoolDaoMessage.isOpen(message4)){ //Passed; }else{ fail(); } } } //@Test public void testBenchmark() throws LocationNotFoundException{ CarpoolDaoBasic.clearBothDatabase(); Calendar before = DateUtility.getCurTimeInstance(); Calendar time = DateUtility.DateToCalendar(new Date(0)); ArrayList<Integer> priceList = new ArrayList<Integer>(); priceList.add(1); PaymentMethod paymentMethod =null; paymentMethod = paymentMethod.fromInt(0); MessageType type = MessageType.fromInt(0); Gender genderRequirement = Gender.fromInt(0); MessageState state = MessageState.fromInt(0); DayTimeSlot timeSlot = DayTimeSlot.fromInt(0); int messageId=-1; int userId=-1; int times=1000000; //Location long departure_Id = 1; long arrival_Id = 2; String province = "Ontario"; String city1 = "Toronto"; String city2 = "Waterloo"; String region1 = "Downtown"; String region2 = "Downtown UW"; Double lat1 = 32.123212; Double lat2 = 23.132123; Double lng1 = 34.341232; Double lng2 = 34.123112; Location departureLocation= new Location(province,city1,region1,"Test1","Test11",lat1,lng1,arrival_Id); Location arrivalLocation = new Location(province,city2,region2,"Test2","Test22",lat2,lng2,departure_Id); while(times > 0){ //create Message message=new Message(userId,false , departureLocation,time,timeSlot,1 , priceList,arrivalLocation, time,timeSlot, 1,priceList,paymentMethod, "test", type, genderRequirement); //add CarpoolDaoMessage.addMessageToDatabase(message); //read try { if(!CarpoolDaoMessage.getMessageById(message.getMessageId()).equals(message)){fail();} } catch (MessageNotFoundException e) { e.printStackTrace(); fail(); } catch (UserNotFoundException e) { e.printStackTrace(); fail(); } //update message.setArrival_Location(departureLocation); message.setGenderRequirement(Gender.fromInt(1)); message.setType(MessageType.fromInt(1)); message.setState(MessageState.fromInt(1)); message.setPaymentMethod(paymentMethod.fromInt(1)); message.setArrival_seatsBooked(3); message.setArrival_seatsNumber(100); message.setDeparture_time(DateUtility.DateToCalendar(new Date(1))); message.setDeparture_Location(arrivalLocation); message.setDeparture_seatsBooked(12); message.setDeparture_seatsNumber(13); message.setHistoryDeleted(true); message.setNote("xch"); message.setRoundTrip(true); message.setEditTime(DateUtility.DateToCalendar(new Date(2))); priceList.remove(0); priceList.add(2); message.setArrival_priceList(priceList); message.setArrival_timeSlot(DayTimeSlot.fromInt(1)); message.setDeparture_timeSlot(DayTimeSlot.fromInt(2)); try { CarpoolDaoMessage.UpdateMessageInDatabase(message); } catch (MessageNotFoundException e) { fail(); } try { if(!message.equals(CarpoolDaoMessage.getMessageById(message.getMessageId()))){fail();} } catch (MessageNotFoundException e) { fail(); } catch (UserNotFoundException e) { fail(); } //delete try { CarpoolDaoMessage.deleteMessageFromDatabase(message.getMessageId()); } catch (MessageNotFoundException e) { fail(); } try{ CarpoolDaoMessage.getMessageById(message.getMessageId()); }catch (UserNotFoundException e) { fail(); } catch (MessageNotFoundException e) { //System.out.println("Passed!"); } times--; } Calendar now = DateUtility.getCurTimeInstance(); long TimeConsumed =now.getTimeInMillis() - before.getTimeInMillis(); System.out.println(TimeConsumed); } }