Skip to content
Snippets Groups Projects
Commit 3e208d65 authored by AIT-RAZZOUK Lina's avatar AIT-RAZZOUK Lina
Browse files

Merge branch 'master' into Lina

parents 870394d8 266a7056
No related branches found
No related tags found
No related merge requests found
Pipeline #16769 failed
package elevator;
public class Request {
int level; // Niveau requete
Boolean up; // Requete de monté ou descente
public Request(int level, boolean up){
this.level = level;
this.up = up;
}
public Request(int level){
this.level = level;
}
@Override
public boolean equals(Object o){
if(o instanceof Request){
return ((Request) o).level == this.level && ((Request) o).up == this.up;
}
return false;
}
@Override
public int hashCode(){
return Integer.hashCode(this.level);
}
}
package elevator;
import java.util.*;
public class Schedule {
List<Request> requests = new ArrayList<>();
public void addLevelRequest(int level, Request request){
requests.add(request);
}
public void addInternRequest(Request request){
requests.add(request);
}
public void delRequest(Request request){
requests.remove(request);
}
public int nextLevel(int level, boolean upside){
return chooseRequest(level, upside).level;
}
private Request chooseRequest(int level, boolean up){
Request out = null;
for(Request request: requests){
if((request.up == null || request.up) && level <= request.level){
if(out == null || request.level < out.level){
out = request;
}
} else if ((request.up == null || !request.up) && level >= request.level) {
if(out == null || request.level > out.level){
out = request;
}
}
}
return out;
}
public List<Request> getRequests(){
return this.requests;
}
}
package elevator;
import static elevatorSimulator.State.ERROR;
import static elevatorSimulator.State.UP;
import static elevatorSimulator.State.*;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
import elevatorSimulator.ElevatorSimulator;
import java.util.Random;
public class TestAutomaticElevator {
@Test
......@@ -19,7 +20,7 @@ public class TestAutomaticElevator {
e.up();
// surveiller l'évolution de l'ascenseur
while (e.getState() == UP) {
System.out.printf("level = %3.2f\n", e.getLevel());
//System.out.printf("level = %3.2f\n", e.getLevel());
Thread.sleep(100);
}
e.stopSimulator();
......@@ -31,6 +32,111 @@ public class TestAutomaticElevator {
// les étapes
assertEquals("-S0-U0-U1-U2-U3-E3", e.getEvents());
}
@Test
public void testStepByStepElevator() throws Exception {
// 3 étages en mode pas-à-pas
var e = new ElevatorSimulator(3, true);
// activer la montée
e.up();
// surveiller l'évolution de l'ascenseur
int etage = 0;
while (e.getState() == UP) {
//System.out.printf("level = %3.2f\n", e.getLevel());
if(e.getAndResetStageSensor()){
etage++;
System.out.println("etage : "+etage);
}
if(etage == 2) {
e.stopNext();
}
e.oneStep();
}
e.stopSimulator();
// l'ascenseur est au 3ème
assertEquals(3.0, e.getLevel());
// l'ascenseur est en open
assertEquals(OPEN, e.getState());
// les étapes
assertEquals("-S0-U0-U1-U2-O3", e.getEvents());
}
@Test
public void testStepByStepElevatorOne() throws Exception {
// 3 étages en mode pas-à-pas
var e = new ElevatorSimulator(3, true);
// Ouvrir les portes
e.openDoor();
// Attends la fermeture des portes
while(e.getState() == OPEN){
e.oneStep();
}
// activer la montée
e.up();
e.stopNext();
// surveiller l'évolution de l'ascenseur
while (e.getState() == UP) {
e.oneStep();
}
e.stopSimulator();
// l'ascenseur est au 3ème
assertEquals(1.0, e.getLevel());
// l'ascenseur est en open
assertEquals(OPEN, e.getState());
// les étapes
assertEquals("-S0-O0-S0-U0-O1", e.getEvents());
}
@Test
public void testAutomaticElevatorError() throws Exception {
// 3 étages en mode automatique
var e = new ElevatorSimulator(3, false);
// activer la montée
e.down();
// surveiller l'évolution de l'ascenseur
while (e.getState() == DOWN) {
Thread.sleep(100);
}
e.reset();
e.stopSimulator();
// l'ascenseur est au 3ème
assertEquals(0.0, e.getLevel());
// l'ascenseur est en erreur
assertEquals(RESET, e.getState());
// les étapes
assertEquals("-S0-D0-E0-R0", e.getEvents());
}
@Test
public void testStepByStepElevatorEmergency() throws Exception {
// 3 étages en mode pas-à-pas
var e = new ElevatorSimulator(3, true);
// activer la montée
e.up();
// surveiller l'évolution de l'ascenseur
while (e.getState() == UP) {
//System.out.printf("level = %3.2f\n", e.getLevel());
if(e.getLevel() >= 1d){
e.halt();
}
e.oneStep();
}
e.stopSimulator();
// l'ascenseur est au 3ème
assertEquals(1.0, e.getLevel());
// l'ascenseur est en open
assertEquals(ERROR, e.getState());
// les étapes
assertEquals("-S0-U0-U1-E1", e.getEvents());
}
@Test
public void testStepByStepElevator() throws Exception {
......
package elevator;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class TestSchedule {
Schedule schedule = new Schedule();
@Test
public void TestLevelRequest(){
Request request = new Request(5);
schedule.addLevelRequest(5, request);
assertTrue(schedule.getRequests().contains(request));
}
@Test
public void TestInternRequest() {
Request request = new Request(4, true);
schedule.addInternRequest(request);
assertTrue(schedule.getRequests().contains(request));
}
@Test
public void TestRemoveRequest() {
Request request = new Request(10, false);
schedule.addInternRequest(request);
schedule.delRequest(request);
assertFalse(schedule.getRequests().contains(request));
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment