@Test public void matchingBBTest() { /* ==================================================== BLACK BOX TEST : SEE /Z/report/report.pdf, page 16 ==================================================== */ Coordinate coorATest = new Coordinate(50.669715, 4.602624); Coordinate coorBTest = new Coordinate(50.667892, 4.619073); User userTest = new User( "loginTest", "Mister", "Nobody", "*****@*****.**", "0123-456", 0, null, null, null, null, null); Date arrTimeTest = new Date(2013, 01, 04, 15, 00); Traject trajectTest = new Traject( 1, // Seats 15, // TotalCost null, // Request userTest, // User null, // Dep PP null, // Arr PP null); // Proposal Request reqTest = new Request( coorATest, // Coor departure coorBTest, // Coor arrival "Place Galilee 6 1348 Louvain-La-Neuve", // Adress departure "Cour des Fleurets 1348 Louvain-La-Neuve", // Adress arrival arrTimeTest, // Arrival time 1, // Seats 60, // Time tolerance 3000, // Walk tolerance in m 5, // Price tolerance userTest, // User trajectTest); // Traject trajectTest.setRequest(reqTest); // BB Test : msg-1 ArrayList<Traject> response = controllers.Matching.match(reqTest); /*for(Traject traj : response){ Assert.fail("Requete n est pas dans la base de donnees mais matching retourne un trajet"); }*/ reqTest.getUser().addRequest(reqTest); reqTest.save(); reqTest.getUser().save(); // BB Test : msg-2 ArrayList<Traject> response2 = controllers.Matching.match(reqTest); for (Traject traj : response2) { ExpressionList<Proposal> res = Proposal.find.where().eq("id", traj.getProposal().getId()); if (res.findRowCount() < 1) { Assert.fail("Proposal n est pas dans la base de donnees mais matching retourne un trajet"); } } // BB Test : msg-3 + msg-4 for (Traject traj : response2) { PickupPoint depPP = traj.getDeparturePP().getPickupPoint(); PickupPoint arrPP = traj.getArrivalPP().getPickupPoint(); if (PickupPoint.find.where().eq("id", depPP.getId()) != depPP) { Assert.fail("Departure PickUpPoint pas dans la base de donnees"); } if (PickupPoint.find.where().eq("id", arrPP.getId()) != arrPP) { Assert.fail("Arrival PickUpPoint pas dans la base de donnees"); } } for (Traject traj : response2) { // BB Test : msg-5 double walkBegin = Matching.distance( traj.getDeparturePP().getPickupPoint().getCoordinates(), reqTest.getTraject().getDeparturePP().getPickupPoint().getCoordinates()); double walkEnd = Matching.distance( reqTest.getTraject().getArrivalPP().getPickupPoint().getCoordinates(), traj.getArrivalPP().getPickupPoint().getCoordinates()); if (walkBegin + walkEnd > 3000) { Assert.fail("La tolerance de distance de marche n est pas respectee"); } // BB Test : msg-6 Date maxiTime = new Date(2013, 01, 04, 16, 00); if (traj.getArrivalPP().getTime().after(maxiTime)) { Assert.fail("Heure d arrivee du passager depasse la tolerance d heure d arrivee"); } // BB Test : msg-7 if (traj.getReservedSeats() - 1 < 0) { Assert.fail("Pas assez de sieges libres dans la proposition pour satisfaire la requete"); } // BB Test : msg-8 if (traj.getTotalCost() > 5) { Assert.fail("Tolerance en cout non respectee."); } } }