diff --git a/src/tpQU/tp03/Defense.java b/src/tpQU/tp03/Defense.java new file mode 100644 index 0000000000000000000000000000000000000000..3936f54f63b70f3a36a34c5123d40aae7869fe75 --- /dev/null +++ b/src/tpQU/tp03/Defense.java @@ -0,0 +1,5 @@ +package tpQU.tp03; + +public class Defense { + +} diff --git a/src/tpQU/tp03/Person.java b/src/tpQU/tp03/Person.java new file mode 100644 index 0000000000000000000000000000000000000000..0382a7c0220642f0f2afc7656eaf5e6f40e27ac8 --- /dev/null +++ b/src/tpQU/tp03/Person.java @@ -0,0 +1,20 @@ +package tpQU.tp03; + +public class Person { + String name; + String forename; + + Person(String name, String forename){ + this.name = name; + this.forename = forename; + } + + String getName(){ + return this.name; + } + + String getForeame(){ + return this.forename; + } +} + diff --git a/src/tpQU/tp03/Planning.java b/src/tpQU/tp03/Planning.java new file mode 100644 index 0000000000000000000000000000000000000000..55cebc9059c7a0008b083079eaeedf38674a55aa --- /dev/null +++ b/src/tpQU/tp03/Planning.java @@ -0,0 +1,5 @@ +package tpQU.tp03; + +public class Planning { + +} diff --git a/src/tpQU/tp03/Student.java b/src/tpQU/tp03/Student.java new file mode 100644 index 0000000000000000000000000000000000000000..478cdbb1cf576d4b24120df5c505a43ad99ed0ab --- /dev/null +++ b/src/tpQU/tp03/Student.java @@ -0,0 +1,5 @@ +package tpQU.tp03; + +public class Student { + +} diff --git a/src/tpQU/tp03/Student1.java b/src/tpQU/tp03/Student1.java new file mode 100644 index 0000000000000000000000000000000000000000..c1db5f7dcd70c22e35911dfe2d6dff4842b32983 --- /dev/null +++ b/src/tpQU/tp03/Student1.java @@ -0,0 +1,12 @@ +package tpQU.tp03; + +public class Student1 extends Person{ + boolean thirdtimecredit; + final static int DEFAULT_DURATION_STUDENT1=20; + + Student1(boolean thirdtimecredit, String name, String forename){ + super(name, forename); + this.thirdtimecredit = thirdtimecredit; + } + +} diff --git a/src/tpQU/tp03/Student2.java b/src/tpQU/tp03/Student2.java new file mode 100644 index 0000000000000000000000000000000000000000..9e341a6a6879af988107eda4b1c27165aafeb0a0 --- /dev/null +++ b/src/tpQU/tp03/Student2.java @@ -0,0 +1,5 @@ +package tpQU.tp03; + +public class Student2 { + +} diff --git a/src/tpQU/tp03/StudentBUT1.java b/src/tpQU/tp03/StudentBUT1.java new file mode 100644 index 0000000000000000000000000000000000000000..a749fc2c1881c64d640f10ea195ee8598ae01b7d --- /dev/null +++ b/src/tpQU/tp03/StudentBUT1.java @@ -0,0 +1,5 @@ +package tpQU.tp03; + +public class StudentBUT1 { + +} diff --git a/src/tpQU/tp03/StudentBUT2.java b/src/tpQU/tp03/StudentBUT2.java new file mode 100644 index 0000000000000000000000000000000000000000..b8fc6b9dbf7c78d4013e297b50a701260e64303c --- /dev/null +++ b/src/tpQU/tp03/StudentBUT2.java @@ -0,0 +1,5 @@ +package tpQU.tp03; + +public class StudentBUT2 { + +} diff --git a/src/tpQU/tp03/UseStudent.java b/src/tpQU/tp03/UseStudent.java new file mode 100644 index 0000000000000000000000000000000000000000..01cf9145bac4534b77c653b4d3d5829b0768ff85 --- /dev/null +++ b/src/tpQU/tp03/UseStudent.java @@ -0,0 +1,5 @@ +package tpQU.tp03; + +public class UseStudent { + +} diff --git a/test/tpQU/tp03/DefenseTest.java b/test/tpQU/tp03/DefenseTest.java new file mode 100644 index 0000000000000000000000000000000000000000..6865e39ebbc454f5f7d8a3e88c0f4a42efc3ba23 --- /dev/null +++ b/test/tpQU/tp03/DefenseTest.java @@ -0,0 +1,90 @@ +package tpQU.tp03; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +import java.time.LocalDate; +import java.time.LocalTime; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class DefenseTest { + public LocalDate day1, day2; + public LocalTime time1, time2; + public Student s1, s2, s3; + public Defense d1, d2, d3; + public String titleA, titleB, titleC; + + @BeforeEach + public void initialization() { + titleA = "defenseA"; + titleB = "defenseB"; + titleC = "defenseC"; + day1 = LocalDate.of(2022, 2, 2); + day2 = LocalDate.of(2023, 3, 3); + time1 = LocalTime.of(11, 11); + time2 = LocalTime.of(22, 22); + s1 = new StudentBUT1("Alice", "a"); + s2 = new StudentBUT1("Bruno", "b"); + s3 = new StudentBUT2("Clément", "c"); + d1 = new Defense(Room.r0A20, s1, titleA); + d2 = new Defense(day1, Room.r0A20, s2, time1, titleB); + d3 = new Defense(day2, Room.r0A49, s3, time2, titleC); + } + + @Test + void testGetDay() { + assertNull(d1.getDay()); + assertEquals(day1, d2.getDay()); + assertEquals(day2, d3.getDay()); + } + + @Test + void testGetDuration() { + assertEquals(s1.getDuration(), d1.getDuration()); + assertEquals(s2.getDuration(), d2.getDuration()); + assertEquals(s3.getDuration(), d3.getDuration()); + } + + @Test + void testGetHour() { + assertNull(d1.getHour()); + assertEquals(time1, d2.getHour()); + assertEquals(time2, d3.getHour()); + } + + @Test + void testSetDay() { + assertNull(d1.getDay()); + d1.setDay(day1); + assertEquals(day1, d1.getDay()); + d1.setDay(day2); + assertEquals(day2, d1.getDay()); + d1.setDay(LocalDate.now()); + assertEquals(LocalDate.now(), d1.getDay()); + d1.setDay(null); + assertNull(d1.getDay()); + } + + @Test + void testSetHour() { + assertNull(d1.getHour()); + d1.setHour(time1); + assertEquals(time1, d1.getHour()); + d1.setHour(time2); + assertEquals(time2, d1.getHour()); + d1.setHour(null); + assertNull(d1.getHour()); + } + + @Test + void testToString() { + String result = d1.getDay() + ":" + d1.getHour() + " in " + d1.getPlace() + " --> " + d1.getStudent() + " :: " + d1.getTitle(); + assertEquals(result, d1.toString()); + result = d2.getDay() + ":" + d2.getHour() + " in " + d2.getPlace() + " --> " + d2.getStudent() + " :: " + d2.getTitle(); + assertEquals(result, d2.toString()); + result = d3.getDay() + ":" + d3.getHour() + " in " + d3.getPlace() + " --> " + d3.getStudent() + " :: " + d3.getTitle(); + assertEquals(result, d3.toString()); + } +} diff --git a/test/tpQU/tp03/PlanningTest.java b/test/tpQU/tp03/PlanningTest.java new file mode 100644 index 0000000000000000000000000000000000000000..6c8dfd062c6d4d4454ae2765e8f91955ffd2a316 --- /dev/null +++ b/test/tpQU/tp03/PlanningTest.java @@ -0,0 +1,168 @@ +package tpQU.tp03; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +import java.time.LocalDate; +import java.time.LocalTime; +import java.util.ArrayList; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PlanningTest { + public LocalDate day1, day2; + public LocalTime time1, time2; + public Student s1, s2, s3; + public Defense d1, d2, d3; + public String titleA, titleB, titleC; + public Planning plan; + + @BeforeEach + public void initialization() { + titleA = "defenseA"; + titleB = "defenseB"; + titleC = "defenseC"; + day1 = LocalDate.of(2022, 2, 2); + day2 = LocalDate.of(2023, 3, 3); + time1 = LocalTime.of(11, 11); + time2 = LocalTime.of(22, 22); + s1 = new StudentBUT1("Alice", "a"); + s2 = new StudentBUT1("Bruno", "b"); + s3 = new StudentBUT2("Clément", "c"); + d1 = new Defense(Room.r0A20, s1, titleA); + d2 = new Defense(Room.r0A20, s2, titleB); + d3 = new Defense(day2, Room.r0A49, s3, time1, titleC); + plan = new Planning(day1); + } + + @Test + void testAddDefense() { + assertEquals(0, plan.getNbDefense()); + plan.addDefense(d1); + assertEquals(1, plan.getNbDefense()); + assertEquals(d1, plan.getDefense(0)); + plan.addDefense(d2); + assertEquals(2, plan.getNbDefense()); + assertEquals(d1, plan.getDefense(0)); + assertEquals(d2, plan.getDefense(1)); + } + + @Test + void testAddDefense2() { + ArrayList<Defense> tmp = new ArrayList<Defense>(); + tmp.add(d1); tmp.add(d2); + assertEquals(0, plan.getNbDefense()); + plan.addDefense(tmp); + assertEquals(2, plan.getNbDefense()); + assertEquals(d1, plan.getDefense(0)); + assertEquals(d2, plan.getDefense(1)); + } + + @Test + void testSetDay() { + assertEquals(day1, plan.getDay()); + plan.setDay(LocalDate.now()); + assertEquals(LocalDate.now(), plan.getDay()); + } + + @Test + void testGetDefense() { + plan.addDefense(d1); plan.addDefense(d2); plan.addDefense(d3); + assertNull(plan.getDefense(-1)); + assertEquals(d1, plan.getDefense(0)); + assertEquals(d2, plan.getDefense(1)); + assertEquals(d3, plan.getDefense(2)); + assertNull(plan.getDefense(3)); + } + + @Test + void testScheduling() { + assertNull(d1.getHour()); + assertNull(d1.getDay()); + assertNull(d2.getHour()); + assertNull(d2.getDay()); + assertEquals(time1, d3.getHour()); + assertEquals(day2, d3.getDay()); + assertEquals(0, plan.getNbDefense()); + plan.addDefense(d1); plan.addDefense(d2); plan.addDefense(d3); + plan.scheduling(); + assertEquals(d1, plan.getDefense(0)); + assertEquals(d2, plan.getDefense(1)); + assertEquals(d3, plan.getDefense(2)); + assertEquals(day1, d1.getDay()); + assertEquals(day1, d2.getDay()); + assertEquals(day1, d3.getDay()); + assertEquals(Planning.defaultStart, d1.getHour()); + assertEquals(Planning.defaultStart.plusMinutes(d1.getDuration() + Planning.breakDuration), d2.getHour()); + assertEquals(Planning.defaultStart.plusMinutes(d1.getDuration() + d2.getDuration() + (Planning.breakDuration*2)), d3.getHour()); + } + + @Test + void testScheduling2() { + assertEquals(0, plan.getNbDefense()); + assertNull(d1.getHour()); + assertNull(d1.getDay()); + assertNull(d2.getHour()); + assertNull(d2.getDay()); + assertEquals(time1, d3.getHour()); + assertEquals(day2, d3.getDay()); + assertEquals(0, plan.getNbDefense()); + plan.addDefense(d1); plan.addDefense(d2); plan.addDefense(d3); + plan.scheduling(time2); + assertEquals(d1, plan.getDefense(0)); + assertEquals(d2, plan.getDefense(1)); + assertEquals(d3, plan.getDefense(2)); + assertEquals(time2, d1.getHour()); + assertEquals(time2.plusMinutes(d1.getDuration() + Planning.breakDuration), d2.getHour()); + assertEquals(time2.plusMinutes(d1.getDuration() + d2.getDuration() + (Planning.breakDuration*2)), d3.getHour()); + } + + @Test + void testSwapDefense() { + assertEquals(0, plan.getNbDefense()); + plan.addDefense(d1); plan.addDefense(d2); plan.addDefense(d3); + plan.scheduling(time2); + assertEquals(d1, plan.getDefense(0)); + assertEquals(d2, plan.getDefense(1)); + assertEquals(d3, plan.getDefense(2)); + assertEquals(time2, d1.getHour()); + assertEquals(time2.plusMinutes(d1.getDuration() + Planning.breakDuration), d2.getHour()); + assertEquals(time2.plusMinutes(d1.getDuration() + d2.getDuration() + (Planning.breakDuration*2)), d3.getHour()); + plan.swapDefense(d1, d3); + assertEquals(d3, plan.getDefense(0)); + assertEquals(d2, plan.getDefense(1)); + assertEquals(d1, plan.getDefense(2)); + assertEquals(time2, d3.getHour()); + assertEquals(time2.plusMinutes(d3.getDuration() + Planning.breakDuration), d2.getHour()); + assertEquals(time2.plusMinutes(d3.getDuration() + d2.getDuration() + (Planning.breakDuration*2)), d1.getHour()); + } + + @Test + void testDelayDefense() { + assertEquals(0, plan.getNbDefense()); + plan.addDefense(d1); plan.addDefense(d2); plan.addDefense(d3); + plan.scheduling(time2); + assertEquals(d1, plan.getDefense(0)); + assertEquals(d2, plan.getDefense(1)); + assertEquals(d3, plan.getDefense(2)); + assertEquals(time2, d1.getHour()); + assertEquals(time2.plusMinutes(d1.getDuration() + Planning.breakDuration), d2.getHour()); + assertEquals(time2.plusMinutes(d1.getDuration() + d2.getDuration() + (Planning.breakDuration*2)), d3.getHour()); + // 5 minutes delay for d3 only + plan.delayDefense(d3, 5); + assertEquals(time2, d1.getHour()); + assertEquals(time2.plusMinutes(d1.getDuration() + Planning.breakDuration), d2.getHour()); + assertEquals(time2.plusMinutes(d1.getDuration() + d2.getDuration() + (Planning.breakDuration*2)+5), d3.getHour()); + // 10 minutes delay for d2 and d3 + plan.delayDefense(d2, 10); + assertEquals(time2, d1.getHour()); + assertEquals(time2.plusMinutes(d1.getDuration() + Planning.breakDuration + 10), d2.getHour()); + assertEquals(time2.plusMinutes(d1.getDuration() + d2.getDuration() + (Planning.breakDuration*2) + 15), d3.getHour()); + // 20 minutes delay for every defenses + plan.delayDefense(d1, 20); + assertEquals(time2.plusMinutes(20), d1.getHour()); + assertEquals(time2.plusMinutes(d1.getDuration() + Planning.breakDuration + 30), d2.getHour()); + assertEquals(time2.plusMinutes(d1.getDuration() + d2.getDuration() + (Planning.breakDuration*2) + 35), d3.getHour()); + } +}