import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.util.ArrayList; import static org.junit.jupiter.api.Assertions.*; public class CampaignTest { private Campaign campaign; @BeforeEach void setUp() { int numberOfBusses = 50; campaign = new Campaign(District.ALAZIZIYA, numberOfBusses); } @Test void VehicleSettersGettersWorkCorrcectly() { ArrayList oldVehicles = campaign.getVehicles(); assertSame(oldVehicles, campaign.getVehicles()); ArrayList newVehicles = new ArrayList<>(); for (int i = 0; i < 150; i++) { newVehicles.add(new Bus()); } campaign.setVehicles(newVehicles); assertNotSame(oldVehicles, newVehicles); assertSame(campaign.getVehicles(), newVehicles); } @Test void ConstructorWithNumberOfBusses() { campaign = new Campaign(District.ALAZIZIYA, 60); assertNotNull(campaign.getVehicles()); ArrayList list = new ArrayList<>(); list.add(new Bus()); list.add(new Bus()); campaign = new Campaign(District.ALAZIZIYA, list); assertNotNull(campaign.getVehicles()); assertEquals(campaign.getVehicles().size(), 2); } @Test void setRouteSetsSameForAllVehicles() { Route r = new Route(new Street[]{new Street(200, 3, StreetNames.FOURTH_HIGHWAY1), new Street(500,2,StreetNames.FOURTH_HIGHWAY3)},District.ALMANSOOR, Mashier.ARAFAT); campaign.setRoute(r); assertSame(campaign.getVehicles().get(5).getRoute(), r); assertSame(campaign.getVehicles().get(0).getRoute(), r); assertSame(campaign.getVehicles().get(22).getRoute(), r); } @Test void arrivalFunctionsWorkFine() { ArrayList buses = new ArrayList<>(); buses.add(new Bus()); buses.add(new Bus()); buses.add(new Bus()); buses.add(new Bus()); Street s = new Street(500, 3, StreetNames.FOURTH_HIGHWAY3); Route r = new Route(s); for (Vehicle v : buses) { ((Bus)v).setCampaign(campaign); v.setCurrentStreet(s); v.setRoute(r); } campaign = new Campaign(District.ALAZIZIYA, buses); assertFalse(campaign.isDone()); assertEquals(campaign.getNumberOfArrivedBuses(), 0); assertEquals(campaign.getArrivedVehicles().size(), 0); campaign.getVehicles().get(0).arrive();//Vehicle notifies camp assertEquals(campaign.getNumberOfArrivedBuses(), 1); assertEquals(campaign.getArrivedVehicles().size(), 1); } }