package carpool.test.dao;
import static org.junit.Assert.fail;
import java.util.ArrayList;
import java.util.Calendar;
import org.junit.Test;
import carpool.carpoolDAO.CarpoolDaoBasic;
import carpool.carpoolDAO.CarpoolDaoLetter;
import carpool.carpoolDAO.CarpoolDaoUser;
import carpool.common.DebugLog;
import carpool.configurations.EnumConfig;
import carpool.configurations.EnumConfig.Gender;
import carpool.configurations.EnumConfig.LetterState;
import carpool.dbservice.LetterDaoService;
import carpool.exception.letter.LetterNotFoundException;
import carpool.exception.location.LocationNotFoundException;
import carpool.exception.user.UserNotFoundException;
import carpool.exception.validation.ValidationException;
import carpool.model.Letter;
import carpool.model.Location;
import carpool.model.User;
public class CarpoolLetterTest {
private boolean letterEquals(Letter l1, Letter l2){
try {
if(l1.getFrom_user()==null&&l1.getTo_user()!=null){
return l1.getFrom_userId() == l2.getFrom_userId() && l1.getTo_userId() == l2.getTo_userId() &&
l1.getType().code == l2.getType().code && l2.getFrom_user()==null && l1.getTo_user().equals(l2.getTo_user()) &&
l1.getContent().equals(l2.getContent()) && l1.getState().code == LetterState.read.code && l1.isHistoryDeleted() == l2.isHistoryDeleted() &&
l1.getSend_time().getTime().toString().equals(l2.getSend_time().getTime().toString()) &&
l1.getCheck_time().getTime().toString().equals(l2.getCheck_time().getTime().toString());
}else if(l1.getFrom_user()!=null&&l1.getTo_user()!=null){
return l1.getFrom_userId() == l2.getFrom_userId() && l1.getTo_userId() == l2.getTo_userId() &&
l1.getType().code == l2.getType().code && l1.getFrom_user().equals(l2.getFrom_user()) && l1.getTo_user().equals(l2.getTo_user()) &&
l1.getContent().equals(l2.getContent()) && l1.getState().code == LetterState.read.code && l1.isHistoryDeleted() == l2.isHistoryDeleted() &&
l1.getSend_time().getTime().toString().equals(l2.getSend_time().getTime().toString()) &&
l1.getCheck_time().getTime().toString().equals(l2.getCheck_time().getTime().toString());
}else if(l1.getFrom_user()!=null&&l1.getTo_user()==null){
return l1.getFrom_userId() == l2.getFrom_userId() && l1.getTo_userId() == l2.getTo_userId() &&
l1.getType().code == l2.getType().code && l1.getFrom_user().equals(l2.getFrom_user()) && l2.getTo_user()==null &&
l1.getContent().equals(l2.getContent()) && l1.getState().code == LetterState.read.code && l1.isHistoryDeleted() == l2.isHistoryDeleted() &&
l1.getSend_time().getTime().toString().equals(l2.getSend_time().getTime().toString()) &&
l1.getCheck_time().getTime().toString().equals(l2.getCheck_time().getTime().toString());
}else{
return false;
}
} catch (ValidationException e) {
return false;
}
}
@Test
public void testAdd() throws ValidationException{
CarpoolDaoBasic.clearBothDatabase();
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);
CarpoolDaoUser.addUserToDatabase(user);
User user2 = new User("xchplace", "xiongchuhanplace@hotmail.com", arrivalLocation, Gender.male);
CarpoolDaoUser.addUserToDatabase(user2);
Letter letter = new Letter(user.getUserId(),user2.getUserId(),EnumConfig.LetterType.user,"Test");
try{
letter = CarpoolDaoLetter.addLetterToDatabases(letter);
if(letter.getFrom_userId()==1 && letter.getOwnder_id()==2 && letter.getTo_userId()==2 && letter.getType()==EnumConfig.LetterType.user && letter.getContent().equals("Test")){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
}
@Test
public void testLetterById() throws ValidationException, UserNotFoundException, LocationNotFoundException {
CarpoolDaoBasic.clearBothDatabase();
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);
CarpoolDaoUser.addUserToDatabase(user);
User user2 = new User("xchplace", "xiongchuhanplace@hotmail.com", arrivalLocation, Gender.male);
CarpoolDaoUser.addUserToDatabase(user2);
Letter letter = new Letter(user.getUserId(),user2.getUserId(),EnumConfig.LetterType.user,"Test");
Letter letter2 = new Letter(user2.getUserId(),user2.getUserId(),EnumConfig.LetterType.system,"Test2");
letter = CarpoolDaoLetter.addLetterToDatabases(letter);
letter2 = CarpoolDaoLetter.addLetterToDatabases(letter2);
int letterId = letter.getLetterId();
int letterId2 = letter2.getLetterId();
try{
Letter test = CarpoolDaoLetter.getLetterById(letterId);
if(letter.equals(test)){
//Passed;
}else{
fail();
}
Letter test2 = CarpoolDaoLetter.getLetterById(letterId2);
if(letter2.equals(test2)){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
}
@Test
public void testUpdate() throws ValidationException, UserNotFoundException, LocationNotFoundException{
CarpoolDaoBasic.clearBothDatabase();
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);
CarpoolDaoUser.addUserToDatabase(user);
User user2 = new User("xchplace", "xiongchuhanplace@hotmail.com",arrivalLocation, Gender.male);
CarpoolDaoUser.addUserToDatabase(user2);
Letter letter = new Letter(user.getUserId(),user2.getUserId(),EnumConfig.LetterType.user,"Test");
Letter letter2 = new Letter(user2.getUserId(),user2.getUserId(),EnumConfig.LetterType.system,"Test2");
letter = CarpoolDaoLetter.addLetterToDatabases(letter);
letter2 = CarpoolDaoLetter.addLetterToDatabases(letter2);
letter.setTo_userId(user.getUserId());
letter.setType(EnumConfig.LetterType.system);
letter.setContent("Test2");
try{
CarpoolDaoLetter.updateLetterInDatabases(letter);
}catch(Exception e){
e.printStackTrace();
}
letter2.setFrom_userId(user.getUserId());
letter2.setType(EnumConfig.LetterType.user);
letter2.setContent("Test");
try{
CarpoolDaoLetter.updateLetterInDatabases(letter2);
}catch(Exception e){
e.printStackTrace();
}
if(letter.getFrom_userId()==letter.getTo_userId()&&letter2.getFrom_userId()==letter.getFrom_userId()){
//Passed;
}else{
fail();
}
if(letter.getType().equals(EnumConfig.LetterType.system)&&letter2.getType().equals(EnumConfig.LetterType.user)&&letter.getContent().equals("Test2")&&letter2.getContent().equals("Test")){
//Passed;
}else{
fail();
}
}
@Test
public void testDelete() throws ValidationException, UserNotFoundException, LocationNotFoundException{
CarpoolDaoBasic.clearBothDatabase();
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);
CarpoolDaoUser.addUserToDatabase(user);
User user2 = new User("xchplace", "xiongchuhanplace@hotmail.com", arrivalLocation, Gender.male);
CarpoolDaoUser.addUserToDatabase(user2);
Letter letter = new Letter(user.getUserId(),user2.getUserId(),EnumConfig.LetterType.user,"Test");
Letter letter2 = new Letter(user2.getUserId(),user2.getUserId(),EnumConfig.LetterType.system,"Test2");
letter = CarpoolDaoLetter.addLetterToDatabases(letter);
letter2 = CarpoolDaoLetter.addLetterToDatabases(letter2);
int letterId = letter.getLetterId();
int letterId2 = letter2.getLetterId();
CarpoolDaoLetter.deleteLetter(letterId);
try{
letter = CarpoolDaoLetter.getLetterById(letterId);
fail();
}catch(LetterNotFoundException not){
//Passed;
}
CarpoolDaoLetter.deleteLetter(letterId2);
try{
letter2 = CarpoolDaoLetter.getLetterById(letterId2);
fail();
}catch(LetterNotFoundException not){
//Passed;
}
}
@Test
public void testGetAll() throws ValidationException, UserNotFoundException, LocationNotFoundException{
CarpoolDaoBasic.clearBothDatabase();
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);
CarpoolDaoUser.addUserToDatabase(user);
User user2 = new User("xchplace", "xiongchuhanplace@hotmail.com", arrivalLocation, Gender.male);
CarpoolDaoUser.addUserToDatabase(user2);
Letter letter = new Letter(user.getUserId(),user2.getUserId(),EnumConfig.LetterType.user,"Test");
Letter letter2 = new Letter(user2.getUserId(),user2.getUserId(),EnumConfig.LetterType.system,"Test2");
letter = CarpoolDaoLetter.addLetterToDatabases(letter);
letter2 = CarpoolDaoLetter.addLetterToDatabases(letter2);
ArrayList<Letter> list = new ArrayList<Letter>();
try{
list = CarpoolDaoLetter.getAllLetters();
if(list.size()==3 && list.get(1).equals(letter)&&list.get(2).equals(letter2)){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
CarpoolDaoLetter.deleteLetter(letter2.getLetterId());
try{
list = CarpoolDaoLetter.getAllLetters();
if(list.size()==2 && list.get(1).equals(letter)){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
}
@Test
public void testGetUserLetters() throws ValidationException, LocationNotFoundException{
CarpoolDaoBasic.clearBothDatabase();
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);
CarpoolDaoUser.addUserToDatabase(user);
User user2 = new User("xchplace", "xiongchuhanplace@hotmail.com", arrivalLocation, Gender.male);
CarpoolDaoUser.addUserToDatabase(user2);
User user3 = new User("sdfjoisdjfi", "sdfoshdf@hotsldfj.com", departureLocation, Gender.female);
CarpoolDaoUser.addUserToDatabase(user3);
Letter letter = new Letter(user.getUserId(),user2.getUserId(),EnumConfig.LetterType.user,"Test");
Letter letter2 = new Letter(user2.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test2");
Letter letter3 = new Letter(user3.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test3");
Letter letter4 = new Letter(-1,user.getUserId(),EnumConfig.LetterType.system,"Test4");
Letter letter5 = new Letter(user.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test5");
Letter letter6 = new Letter(user2.getUserId(),user3.getUserId(),EnumConfig.LetterType.user,"Test6");
Letter letter7 = new Letter(user3.getUserId(),user2.getUserId(),EnumConfig.LetterType.user,"Test7");
Letter letter8 = new Letter(-1,user3.getUserId(),EnumConfig.LetterType.system,"Test8");
Letter letter9 = new Letter(-1,user2.getUserId(),EnumConfig.LetterType.system,"Test9");
Letter letter0 = new Letter(user.getUserId(),-1,EnumConfig.LetterType.system,"Test0");
try{
letter = CarpoolDaoLetter.addLetterToDatabases(letter);
letter2 = CarpoolDaoLetter.addLetterToDatabases(letter2);
letter3 = CarpoolDaoLetter.addLetterToDatabases(letter3);
letter4 = CarpoolDaoLetter.addLetterToDatabases(letter4);
letter5 = CarpoolDaoLetter.addLetterToDatabases(letter5);
letter6 = CarpoolDaoLetter.addLetterToDatabases(letter6);
letter7 = CarpoolDaoLetter.addLetterToDatabases(letter7);
letter8 = CarpoolDaoLetter.addLetterToDatabases(letter8);
letter9 = CarpoolDaoLetter.addLetterToDatabases(letter9);
letter0 = CarpoolDaoLetter.addLetterToDatabases(letter0);
}catch(UserNotFoundException e){
e.printStackTrace();
}
ArrayList<Letter> list = new ArrayList<Letter>();
try{
list = CarpoolDaoLetter.getUserLetters(user.getUserId(), user2.getUserId(), EnumConfig.LetterType.user, EnumConfig.LetterDirection.inbound);
if(list.size()==1 && letterEquals(list.get(0),letter)){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
try{
list = CarpoolDaoLetter.getUserLetters(user2.getUserId(), user.getUserId(), EnumConfig.LetterType.user, EnumConfig.LetterDirection.inbound);
if(list.size()==1 && letterEquals(list.get(0),letter2)){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
try{
list = CarpoolDaoLetter.getUserLetters(user.getUserId(), user.getUserId(), EnumConfig.LetterType.user, EnumConfig.LetterDirection.inbound);
if(list.size()==1 && letterEquals(list.get(0),letter5)){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
try{
list = CarpoolDaoLetter.getUserLetters(user2.getUserId(), user3.getUserId(), EnumConfig.LetterType.user, EnumConfig.LetterDirection.outbound);
if(list.size()==1 && letterEquals(list.get(0),letter7)){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
try{
list = CarpoolDaoLetter.getUserLetters(user3.getUserId(),user2.getUserId(), EnumConfig.LetterType.user, EnumConfig.LetterDirection.both);
if(list.size()==2 && letterEquals(list.get(0),letter6) && letterEquals(list.get(1),letter7)){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
try{
list = CarpoolDaoLetter.getUserLetters(-1, user.getUserId(), EnumConfig.LetterType.system, EnumConfig.LetterDirection.both);
if(list.size()==2 && letterEquals(list.get(0),letter4)&&letterEquals(list.get(1),letter0)){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
try{
list = CarpoolDaoLetter.getUserLetters(-1, user.getUserId(), EnumConfig.LetterType.system, EnumConfig.LetterDirection.outbound);
if(list.size()==1 && letterEquals(list.get(0),letter0)){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
try{
list = CarpoolDaoLetter.getUserLetters(-1, user.getUserId(), EnumConfig.LetterType.system, EnumConfig.LetterDirection.inbound);
if(list.size()==1 && letterEquals(list.get(0),letter4)){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
try{
list = CarpoolDaoLetter.getUserLetters(-1, user2.getUserId(), EnumConfig.LetterType.system, EnumConfig.LetterDirection.outbound);
if(list.size()==0){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
try{
list = CarpoolDaoLetter.getUserLetters(-1, user3.getUserId(), EnumConfig.LetterType.system, EnumConfig.LetterDirection.both);
if(list.size()==1 && letterEquals(list.get(0),letter8)){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
Letter letter10 = new Letter(user.getUserId(),user2.getUserId(),EnumConfig.LetterType.user,"Test10");
Letter letter11 = new Letter(user3.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test11");
Letter letter12 = new Letter(user2.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test12");
try{
letter10 = CarpoolDaoLetter.addLetterToDatabases(letter10);
letter11 = CarpoolDaoLetter.addLetterToDatabases(letter11);
letter12 = CarpoolDaoLetter.addLetterToDatabases(letter12);
}catch(UserNotFoundException e){
e.printStackTrace();
}
try{
list = CarpoolDaoLetter.getUserLetters(user.getUserId(), user2.getUserId(), EnumConfig.LetterType.user, EnumConfig.LetterDirection.inbound);
if(list.size()==2 && letterEquals(list.get(0),letter)&&letterEquals(list.get(1),letter10)){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
try{
list = CarpoolDaoLetter.getUserLetters(user3.getUserId(), user.getUserId(), EnumConfig.LetterType.user, EnumConfig.LetterDirection.inbound);
if(list.size()==2 && letterEquals(list.get(0),letter3)&&letterEquals(list.get(1),letter11)){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
try{
list = CarpoolDaoLetter.getUserLetters(user2.getUserId(), user.getUserId(), EnumConfig.LetterType.user, EnumConfig.LetterDirection.inbound);
if(list.size()==2 && letterEquals(list.get(0),letter2)&&letterEquals(list.get(1),letter12)){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
try{
list = CarpoolDaoLetter.getUserLetters(-1, user.getUserId(), EnumConfig.LetterType.user, EnumConfig.LetterDirection.inbound);
if(list.size()==5 && letterEquals(list.get(0),letter2)&&letterEquals(list.get(1),letter3)&&letterEquals(list.get(2),letter5)&&letterEquals(list.get(3),letter11)&&letterEquals(list.get(4),letter12)){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
try{
list = CarpoolDaoLetter.getUserLetters(-1, user.getUserId(), EnumConfig.LetterType.user, EnumConfig.LetterDirection.outbound);
if(list.size()==3 &&letterEquals(list.get(0),letter)&&letterEquals(list.get(1),letter5)&&letterEquals(list.get(2),letter10)){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
try{
list = CarpoolDaoLetter.getUserLetters(-1, user.getUserId(), EnumConfig.LetterType.user, EnumConfig.LetterDirection.both);
if(list.size()==7 && letterEquals(list.get(0),letter)&&letterEquals(list.get(1),letter2)&&letterEquals(list.get(2),letter3)&&letterEquals(list.get(3),letter5)&&letterEquals(list.get(4),letter10)&&letterEquals(list.get(5),letter11)&&letterEquals(list.get(6),letter12)){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
}
@Test
public void testGetLetterUsers() throws ValidationException, LocationNotFoundException{
CarpoolDaoBasic.clearBothDatabase();
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 departureLocation1= new Location(province,city1,region1,"Test1","Test11",lat1,lng1,arrival_Id);
Location arrivalLocation1 = new Location(province,city2,region2,"Test2","Test22",lat2,lng2,departure_Id);
Location departureLocation2= new Location(province,city1,region1,"Test1","Test11",lat1,lng1,arrival_Id);
Location arrivalLocation2 = new Location(province,city2,region2,"Test2","Test22",lat2,lng2,departure_Id);
User user = new User("xch93318yeah", "c2xiong@uwaterloo.ca", departureLocation1, Gender.both);
CarpoolDaoUser.addUserToDatabase(user);
User user2 = new User("xchplace", "xiongchuhanplace@hotmail.com", arrivalLocation1, Gender.male);
CarpoolDaoUser.addUserToDatabase(user2);
User user3 = new User("sdfjoisdjfi", "sdfoshdf@hotsldfj.com", departureLocation2, Gender.female);
CarpoolDaoUser.addUserToDatabase(user3);
User user4 = new User("sdfsdfdsfhgfg", "sdfojods@hotmail.com", arrivalLocation2, Gender.both);
CarpoolDaoUser.addUserToDatabase(user4);
Letter letter = new Letter(user.getUserId(),user2.getUserId(),EnumConfig.LetterType.user,"Test");
Letter letter2 = new Letter(user2.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test2");
Letter letter3 = new Letter(user3.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test3");
Letter letter4 = new Letter(-1,user.getUserId(),EnumConfig.LetterType.system,"Test4");
Letter letter5 = new Letter(user.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test5");
Letter letter6 = new Letter(user2.getUserId(),user3.getUserId(),EnumConfig.LetterType.user,"Test6");
Letter letter7 = new Letter(user3.getUserId(),user2.getUserId(),EnumConfig.LetterType.user,"Test7");
Letter letter8 = new Letter(-1,user3.getUserId(),EnumConfig.LetterType.system,"Test8");
Letter letter9 = new Letter(-1,user2.getUserId(),EnumConfig.LetterType.system,"Test9");
Letter letter10 = new Letter(user.getUserId(),user2.getUserId(),EnumConfig.LetterType.user,"Test10");
Letter letter11 = new Letter(user3.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test11");
Letter letter12 = new Letter(user2.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test12");
Letter letter13 = new Letter(user4.getUserId(),user4.getUserId(),EnumConfig.LetterType.user,"Test13");
try{
letter = CarpoolDaoLetter.addLetterToDatabases(letter);
letter2 = CarpoolDaoLetter.addLetterToDatabases(letter2);
letter3 = CarpoolDaoLetter.addLetterToDatabases(letter3);
letter4 = CarpoolDaoLetter.addLetterToDatabases(letter4);
letter5 = CarpoolDaoLetter.addLetterToDatabases(letter5);
letter6 = CarpoolDaoLetter.addLetterToDatabases(letter6);
letter7 = CarpoolDaoLetter.addLetterToDatabases(letter7);
letter8 = CarpoolDaoLetter.addLetterToDatabases(letter8);
letter9 = CarpoolDaoLetter.addLetterToDatabases(letter9);
letter10 = CarpoolDaoLetter.addLetterToDatabases(letter10);
letter11 = CarpoolDaoLetter.addLetterToDatabases(letter11);
letter12 = CarpoolDaoLetter.addLetterToDatabases(letter12);
letter13 = CarpoolDaoLetter.addLetterToDatabases(letter13);
}catch(UserNotFoundException e){
e.printStackTrace();
}
ArrayList<User> list = new ArrayList<User>();
try{
list = CarpoolDaoLetter.getLetterUsers(user.getUserId());
if(list.size()==3&&list.get(0).equals(user)&&list.get(1).equals(user2)&&list.get(2).equals(user3)){
//Passed;
}else{
fail();
}
}catch(UserNotFoundException e){
e.printStackTrace();
}
try{
list = CarpoolDaoLetter.getLetterUsers(user2.getUserId());
if(list.size()==2&&list.get(0).equals(user)&&list.get(1).equals(user3)){
//Passed;
}else{
fail();
}
}catch(UserNotFoundException e){
e.printStackTrace();
}
try{
list = CarpoolDaoLetter.getLetterUsers(user3.getUserId());
if(list.size()==2&&list.get(0).equals(user)&&list.get(1).equals(user2)){
//Passed;
}else{
fail();
}
}catch(UserNotFoundException e){
e.printStackTrace();
}
}
@Test
public void testCheckLetter() throws ValidationException, LocationNotFoundException{
CarpoolDaoBasic.clearBothDatabase();
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);
CarpoolDaoUser.addUserToDatabase(user);
User user2 = new User("xchplace", "xiongchuhanplace@hotmail.com", arrivalLocation, Gender.male);
CarpoolDaoUser.addUserToDatabase(user2);
User user3 = new User("sdfjoisdjfi", "sdfoshdf@hotsldfj.com", departureLocation, Gender.female);
CarpoolDaoUser.addUserToDatabase(user3);
Letter letter = new Letter(user.getUserId(),user2.getUserId(),EnumConfig.LetterType.user,"Test");
Letter letter2 = new Letter(user2.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test2");
Letter letter3 = new Letter(user3.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test3");
Letter letter4 = new Letter(-1,user.getUserId(),EnumConfig.LetterType.system,"Test4");
Letter letter5 = new Letter(user.getUserId(),user3.getUserId(),EnumConfig.LetterType.user,"Test5");
Letter letter6 = new Letter(user2.getUserId(),user3.getUserId(),EnumConfig.LetterType.user,"Test6");
Letter letter7 = new Letter(user3.getUserId(),user2.getUserId(),EnumConfig.LetterType.user,"Test7");
Letter letter8 = new Letter(-1,user3.getUserId(),EnumConfig.LetterType.system,"Test8");
Letter letter9 = new Letter(-1,user2.getUserId(),EnumConfig.LetterType.system,"Test9");
Letter letter10 = new Letter(user.getUserId(),user2.getUserId(),EnumConfig.LetterType.user,"Test10");
Letter letter11 = new Letter(user3.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test11");
Letter letter12 = new Letter(user2.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test12");
try{
letter = CarpoolDaoLetter.addLetterToDatabases(letter);
letter2 = CarpoolDaoLetter.addLetterToDatabases(letter2);
letter3 = CarpoolDaoLetter.addLetterToDatabases(letter3);
letter4 = CarpoolDaoLetter.addLetterToDatabases(letter4);
letter5 = CarpoolDaoLetter.addLetterToDatabases(letter5);
letter6 = CarpoolDaoLetter.addLetterToDatabases(letter6);
letter7 = CarpoolDaoLetter.addLetterToDatabases(letter7);
letter8 = CarpoolDaoLetter.addLetterToDatabases(letter8);
letter9 = CarpoolDaoLetter.addLetterToDatabases(letter9);
letter10 = CarpoolDaoLetter.addLetterToDatabases(letter10);
letter11 = CarpoolDaoLetter.addLetterToDatabases(letter11);
letter12 = CarpoolDaoLetter.addLetterToDatabases(letter12);
}catch(UserNotFoundException e){
e.printStackTrace();
}
ArrayList<Letter> list = new ArrayList<Letter>();
try{
CarpoolDaoLetter.checkLetter(user.getUserId(),user2.getUserId());
list = CarpoolDaoLetter.getAllLetters();
if(list.size()==24&&list.get(1).getState().code==LetterState.read.code&&list.get(3).getState().code==LetterState.read.code&&list.get(5).getState().code==LetterState.unread.code
&&list.get(7).getState().code==LetterState.unread.code&&list.get(9).getState().code==LetterState.unread.code&&list.get(11).getState().code==LetterState.unread.code&&list.get(13).getState().code==LetterState.unread.code
&&list.get(15).getState().code==LetterState.unread.code&&list.get(17).getState().code==LetterState.unread.code&&list.get(19).getState().code==LetterState.read.code
&&list.get(21).getState().code==LetterState.unread.code&&list.get(23).getState().code==LetterState.read.code){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
try{
CarpoolDaoLetter.checkLetter(user2.getUserId(),user.getUserId());
list = CarpoolDaoLetter.getAllLetters();
if(list.size()==24&&list.get(1).getState().code==LetterState.read.code&&list.get(3).getState().code==LetterState.read.code&&list.get(5).getState().code==LetterState.unread.code
&&list.get(7).getState().code==LetterState.unread.code&&list.get(9).getState().code==LetterState.unread.code&&list.get(11).getState().code==LetterState.unread.code&&list.get(13).getState().code==LetterState.unread.code
&&list.get(15).getState().code==LetterState.unread.code&&list.get(17).getState().code==LetterState.unread.code&&list.get(19).getState().code==LetterState.read.code
&&list.get(21).getState().code==LetterState.unread.code&&list.get(23).getState().code==LetterState.read.code){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
try{
CarpoolDaoLetter.checkLetter(user2.getUserId(),user3.getUserId());
list = CarpoolDaoLetter.getAllLetters();
if(list.size()==24&&list.get(1).getState().code==LetterState.read.code&&list.get(3).getState().code==LetterState.read.code&&list.get(5).getState().code==LetterState.unread.code
&&list.get(7).getState().code==LetterState.unread.code&&list.get(9).getState().code==LetterState.unread.code&&list.get(11).getState().code==LetterState.read.code&&list.get(13).getState().code==LetterState.read.code
&&list.get(15).getState().code==LetterState.unread.code&&list.get(17).getState().code==LetterState.unread.code&&list.get(19).getState().code==LetterState.read.code
&&list.get(21).getState().code==LetterState.unread.code&&list.get(23).getState().code==LetterState.read.code){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
try{
CarpoolDaoLetter.checkLetter(user.getUserId(),user3.getUserId());
list = CarpoolDaoLetter.getAllLetters();
if(list.size()==24&&list.get(1).getState().code==LetterState.read.code&&list.get(3).getState().code==LetterState.read.code&&list.get(5).getState().code==LetterState.read.code
&&list.get(7).getState().code==LetterState.unread.code&&list.get(9).getState().code==LetterState.read.code&&list.get(11).getState().code==LetterState.read.code&&list.get(13).getState().code==LetterState.read.code
&&list.get(15).getState().code==LetterState.unread.code&&list.get(17).getState().code==LetterState.unread.code&&list.get(19).getState().code==LetterState.read.code
&&list.get(21).getState().code==LetterState.read.code&&list.get(23).getState().code==LetterState.read.code){
//Passed;
}else{
fail();
}
}catch(Exception e){
e.printStackTrace();
}
}
@Test
public void testSortLetters() throws ValidationException, LocationNotFoundException{
CarpoolDaoBasic.clearBothDatabase();
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);
CarpoolDaoUser.addUserToDatabase(user);
User user2 = new User("xchplace", "xiongchuhanplace@hotmail.com", arrivalLocation, Gender.male);
CarpoolDaoUser.addUserToDatabase(user2);
User user3 = new User("sdfjoisdjfi", "sdfoshdf@hotsldfj.com", departureLocation, Gender.female);
CarpoolDaoUser.addUserToDatabase(user3);
ArrayList<Letter> list = new ArrayList<Letter>();
Letter letter = new Letter(user.getUserId(),user2.getUserId(),EnumConfig.LetterType.user,"Test");
list.add(letter);
Letter letter2 = new Letter(user2.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test2");
list.add(letter2);
Letter letter3 = new Letter(user3.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test3");
list.add(letter3);
Letter letter4 = new Letter(-1,user.getUserId(),EnumConfig.LetterType.system,"Test4");
list.add(letter4);
Letter letter5 = new Letter(user.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test5");
list.add(letter5);
Letter letter6 = new Letter(user2.getUserId(),user3.getUserId(),EnumConfig.LetterType.user,"Test6");
list.add(letter6);
try{
letter = CarpoolDaoLetter.addLetterToDatabases(letter);
letter2 = CarpoolDaoLetter.addLetterToDatabases(letter2);
letter3 = CarpoolDaoLetter.addLetterToDatabases(letter3);
letter4 = CarpoolDaoLetter.addLetterToDatabases(letter4);
letter5 = CarpoolDaoLetter.addLetterToDatabases(letter5);
letter6 = CarpoolDaoLetter.addLetterToDatabases(letter6);
}catch(UserNotFoundException e){
e.printStackTrace();
}
Calendar dt = Calendar.getInstance();
Calendar at = (Calendar) dt.clone();
at.add(Calendar.DAY_OF_YEAR, 1);
Calendar dt2 = (Calendar) dt.clone();
dt2.set(Calendar.HOUR_OF_DAY, dt.get(Calendar.HOUR_OF_DAY)-1);
Calendar at2 = (Calendar) dt.clone();
at2.add(Calendar.DAY_OF_YEAR, -1);
Calendar dt3 = (Calendar) dt.clone();
dt3.add(Calendar.DAY_OF_YEAR, 2);
Calendar at3 = (Calendar) dt.clone();
at3.add(Calendar.DAY_OF_YEAR, -2);
letter.setSend_time(dt3);
letter2.setSend_time(dt);
letter3.setSend_time(at2);
letter4.setSend_time(at3);
letter5.setSend_time(at);
letter6.setSend_time(dt2);
ArrayList<Letter> testResult = new ArrayList<Letter>();
testResult = LetterDaoService.sortLetters(list);
if(testResult.size()==list.size() && testResult.get(0).equals(letter4) && testResult.get(1).equals(letter3) && testResult.get(2).equals(letter6)&&testResult.get(3).equals(letter2)&&testResult.get(4).equals(letter5)&&testResult.get(5).equals(letter)){
//Passed;
}else{
fail();
}
}
@Test
public void testGetUncheckedLettersByUserId() throws ValidationException, LocationNotFoundException, UserNotFoundException{
CarpoolDaoBasic.clearBothDatabase();
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);
CarpoolDaoUser.addUserToDatabase(user);
User user2 = new User("xchplace", "xiongchuhanplace@hotmail.com", arrivalLocation, Gender.male);
CarpoolDaoUser.addUserToDatabase(user2);
User user3 = new User("sdfjoisdjfi", "sdfoshdf@hotsldfj.com", departureLocation, Gender.female);
CarpoolDaoUser.addUserToDatabase(user3);
Letter letter = new Letter(user.getUserId(),user2.getUserId(),EnumConfig.LetterType.user,"Test");
Letter letter2 = new Letter(user2.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test2");
Letter letter3 = new Letter(user3.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test3");
Letter letter4 = new Letter(-1,user.getUserId(),EnumConfig.LetterType.system,"Test4");
Letter letter5 = new Letter(user.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test5");
Letter letter6 = new Letter(user2.getUserId(),user3.getUserId(),EnumConfig.LetterType.user,"Test6");
Letter letter7 = new Letter(user3.getUserId(),user2.getUserId(),EnumConfig.LetterType.user,"Test7");
Letter letter8 = new Letter(-1,user3.getUserId(),EnumConfig.LetterType.system,"Test8");
Letter letter9 = new Letter(-1,user2.getUserId(),EnumConfig.LetterType.system,"Test9");
Letter letter10 = new Letter(user.getUserId(),user2.getUserId(),EnumConfig.LetterType.user,"Test10");
Letter letter11 = new Letter(user3.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test11");
Letter letter12 = new Letter(user2.getUserId(),user.getUserId(),EnumConfig.LetterType.user,"Test12");
//user
letter2.setState(LetterState.read);
letter3.setState(LetterState.unread);
letter4.setState(LetterState.read);
letter5.setState(LetterState.read);
letter11.setState(LetterState.invalid);
letter12.setState(LetterState.invalid);
//user2
letter.setState(LetterState.unread);
letter7.setState(LetterState.unread);
letter9.setState(LetterState.unread);
letter10.setState(LetterState.unread);
//user3
letter6.setState(LetterState.read);
letter8.setState(LetterState.read);
try{
letter = CarpoolDaoLetter.addLetterToDatabases(letter);
letter2 = CarpoolDaoLetter.addLetterToDatabases(letter2);
letter3 = CarpoolDaoLetter.addLetterToDatabases(letter3);
letter4 = CarpoolDaoLetter.addLetterToDatabases(letter4);
letter5 = CarpoolDaoLetter.addLetterToDatabases(letter5);
letter6 = CarpoolDaoLetter.addLetterToDatabases(letter6);
letter7 = CarpoolDaoLetter.addLetterToDatabases(letter7);
letter8 = CarpoolDaoLetter.addLetterToDatabases(letter8);
letter9 = CarpoolDaoLetter.addLetterToDatabases(letter9);
letter10 = CarpoolDaoLetter.addLetterToDatabases(letter10);
letter11 = CarpoolDaoLetter.addLetterToDatabases(letter11);
letter12 = CarpoolDaoLetter.addLetterToDatabases(letter12);
}catch(UserNotFoundException e){
e.printStackTrace();
}
ArrayList<Letter> list = new ArrayList<Letter>();
list = CarpoolDaoLetter.getUncheckedLettersByUserId(user.getUserId());
if(list.size()==1&&list.get(0).equals(letter3)){
//Passed;
}else{
fail();
}
list = CarpoolDaoLetter.getUncheckedLettersByUserId(user2.getUserId());
if(list.size()==4&&list.get(0).equals(letter)
&& list.get(1).equals(letter7)&&list.get(2).equals(letter9)
&& list.get(3).equals(letter10)){
//Passed;
}else{
fail();
}
list = CarpoolDaoLetter.getUncheckedLettersByUserId(user3.getUserId());
if(list.size()==0){
//Passed;
}else{
fail();
}
}
}