diff --git a/src/tp10/IPriority.java b/src/tp10/IPriority.java new file mode 100644 index 0000000000000000000000000000000000000000..c055694e0c125ca42b7797a613195415cb74e2c7 --- /dev/null +++ b/src/tp10/IPriority.java @@ -0,0 +1,6 @@ +package tp10; + +public interface IPriority +{ + int getPriority(); +} diff --git a/src/tp10/IScheduler.java b/src/tp10/IScheduler.java new file mode 100644 index 0000000000000000000000000000000000000000..e7523bdb1f462292fad5c21e0f84d5989170928a --- /dev/null +++ b/src/tp10/IScheduler.java @@ -0,0 +1,9 @@ +package tp10; + +public interface IScheduler<IPriority> +{ + void addElement(IPriority type); + IPriority highestPriority(); + boolean isEmpty(); + int size(); +} diff --git a/src/tp10/PriorityScheduler.java b/src/tp10/PriorityScheduler.java new file mode 100644 index 0000000000000000000000000000000000000000..6ef3e0a2685b46a4ae4aa75052e65a471c61606b --- /dev/null +++ b/src/tp10/PriorityScheduler.java @@ -0,0 +1,68 @@ +package tp10; + +import java.util.LinkedList; + +public class PriorityScheduler<IPriority> implements IScheduler<IPriority> +{ + protected LinkedList<Task> theQueue = new LinkedList<>(); + private int pri; + + public PriorityScheduler(int prio) + { + this.pri = prio; + } + + public int size(int priority) + { + int nbTask = 0; + for(Task t : theQueue) + { + if(t.getPriority() == priority) + { + nbTask=nbTask+1; + } + } + return nbTask; + } + + @Override + public void addElement(IPriority type) + { + this.theQueue.add((Task) type); + } + + @Override + public IPriority highestPriority() + { + int highPrio = 0; + for(Task ty : theQueue) + { + if(ty.getPriority() > highPrio) + { + highPrio = ty.getPriority(); + } + } + + Task t = null; + for(Task ty : theQueue) + { + if(ty.getPriority() == highPrio) + { + t = ty; + } + } + return (IPriority) t; + } + + @Override + public boolean isEmpty() + { + return theQueue.isEmpty(); + } + + @Override + public int size() + { + return theQueue.size(); + } +} diff --git a/src/tp10/PrioritySchedulingQueue.java b/src/tp10/PrioritySchedulingQueue.java new file mode 100644 index 0000000000000000000000000000000000000000..779471e00c5fee14964914e6472139120ef306c0 --- /dev/null +++ b/src/tp10/PrioritySchedulingQueue.java @@ -0,0 +1,27 @@ +package tp10; + +public class PrioritySchedulingQueue<T extends IPriority> extends SchedulingQueue<T> +{ + @Override + public T highestPriority() + { + int highPrio = 0; + for(T ty : theQueue) + { + if(ty.getPriority() > highPrio) + { + highPrio = ty.getPriority(); + } + } + + T t = null; + for(T ty : theQueue) + { + if(ty.getPriority() == highPrio) + { + t = ty; + } + } + return t; + } +} diff --git a/src/tp10/Scheduler.java b/src/tp10/Scheduler.java new file mode 100644 index 0000000000000000000000000000000000000000..2b60459af3b6c2be10d57dc274194a7a55b09021 --- /dev/null +++ b/src/tp10/Scheduler.java @@ -0,0 +1,9 @@ +package tp10; + +public class Scheduler +{ + void highestPriority() + { + + } +} \ No newline at end of file diff --git a/src/tp10/SchedulingQueue.java b/src/tp10/SchedulingQueue.java new file mode 100644 index 0000000000000000000000000000000000000000..69fd9ba5d36dd2cd85d70bbd5130b0388be1cf54 --- /dev/null +++ b/src/tp10/SchedulingQueue.java @@ -0,0 +1,52 @@ +package tp10; + +import java.util.LinkedList; + +@SuppressWarnings("hiding") +public class SchedulingQueue<IPriority> implements IScheduler<IPriority> +{ + public static int queueCounter; + protected LinkedList<IPriority> theQueue = new LinkedList<>(); + + public int getID() + { + return 0; + } + + @Override + public String toString() + { + if(theQueue.isEmpty()) + { + return "Queue"+getID()+" -> []"; + } + else + { + return "Queue"+getID()+" -> "+theQueue.get(getID()).toString(); + } + } + + @Override + public void addElement(IPriority type) + { + theQueue.add(type); + } + + @Override + public IPriority highestPriority() + { + return theQueue.getFirst(); + } + + @Override + public boolean isEmpty() + { + return theQueue.isEmpty(); + } + + @Override + public int size() + { + return theQueue.size(); + } +} \ No newline at end of file diff --git a/src/tp10/Task.java b/src/tp10/Task.java new file mode 100644 index 0000000000000000000000000000000000000000..89e46a4fdb5bbfa550940cc7e412a89cf27cdcaf --- /dev/null +++ b/src/tp10/Task.java @@ -0,0 +1,34 @@ +package tp10; + +public class Task implements IPriority +{ + int priority; + String label; + + public Task(String l, int p) + { + this.label = l; + this.priority = p; + } + + public int getPriority() + { + return this.priority; + } + + public String getLabel() + { + return this.label; + } + + public void setLabel(String l) + { + this.label = l; + } + + @Override + public String toString() + { + return "Task:"+getLabel()+"("+getPriority()+")"; + } +} \ No newline at end of file diff --git a/src/tp10/UsePrioritySchedulingQueue.java b/src/tp10/UsePrioritySchedulingQueue.java new file mode 100644 index 0000000000000000000000000000000000000000..0a001225691deeb7b88f4760d26f6d76100b6643 --- /dev/null +++ b/src/tp10/UsePrioritySchedulingQueue.java @@ -0,0 +1,26 @@ +package tp10; + +public class UsePrioritySchedulingQueue +{ + public static void main(String[] args) + { + PrioritySchedulingQueue<Task> tasks = new PrioritySchedulingQueue<>(); + + Task t1 = new Task("t1", 3); + Task t2 = new Task("t2", 1); + Task t3 = new Task("t3", 2); + Task t4 = new Task("t4", 5); + Task t5 = new Task("t5", 10); + + System.out.println(tasks.isEmpty()); + tasks.addElement(t1); + tasks.addElement(t2); + tasks.addElement(t3); + tasks.addElement(t4); + tasks.addElement(t5); + System.out.println(tasks.isEmpty()); + System.out.println(tasks.size()); + System.out.println(tasks.highestPriority()); + System.out.println("\nFinish !"); + } +} \ No newline at end of file diff --git a/src/tp10/UseSchedulingQueue.java b/src/tp10/UseSchedulingQueue.java new file mode 100644 index 0000000000000000000000000000000000000000..9950c8332b58f20ae99f3618445c3621415e6cc7 --- /dev/null +++ b/src/tp10/UseSchedulingQueue.java @@ -0,0 +1,35 @@ +package tp10; + +import tp05.Book; + +public class UseSchedulingQueue +{ + public static void main(String[] args) + { + SchedulingQueue<Book> superBook = new SchedulingQueue<>(); + SchedulingQueue<Task> amongus = new SchedulingQueue<>(); + + Book b1 = new Book("pfj", "ao", "zez", 1951, 0); + Book b2 = new Book("kko", "ss", "neo", 1985, 0); + + Task t1 = new Task("t1", 3); + Task t2 = new Task("t2", 1); + + superBook.addElement(b1); + superBook.addElement(b2); + + amongus.addElement(t1); + amongus.addElement(t2); + + System.out.println(superBook.isEmpty()); + System.out.println(amongus.isEmpty()); + System.out.println(superBook.size()); + System.out.println(amongus.size()); + + System.out.println(superBook); + System.out.println(amongus); + + System.out.println(superBook); + System.out.println(amongus); + } +} \ No newline at end of file diff --git a/test/CompanyTest.java b/test/tp06/CompanyTest.java similarity index 100% rename from test/CompanyTest.java rename to test/tp06/CompanyTest.java diff --git a/test/BreedingGroundTest.java b/test/tp08/BreedingGroundTest.java similarity index 99% rename from test/BreedingGroundTest.java rename to test/tp08/BreedingGroundTest.java index 7c4ab87d94fc2c71f8c8640481f2bc167995166b..830a75fdd94ee59be75a272c7d479100345e5e63 100644 --- a/test/BreedingGroundTest.java +++ b/test/tp08/BreedingGroundTest.java @@ -1,4 +1,4 @@ -package tpOO.tp08; +package tp08; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/test/ShopTest.java b/test/tp08/ShopTest.java similarity index 97% rename from test/ShopTest.java rename to test/tp08/ShopTest.java index f86d050b0a41366600962bb41ea19ae7dbf0e2df..38a1bb737412bf2577f388ce9c577b4cfee36d78 100644 --- a/test/ShopTest.java +++ b/test/tp08/ShopTest.java @@ -1,4 +1,4 @@ -package tpOO.tp08; +package tp08; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -69,7 +69,7 @@ public class ShopTest { @Test public void closeBeforeDateTest() { m.tidy(this.aStock); - ArrayList<IProduct> res = m.closeBestBeforeDate(-3); + ArrayList<Food> res = m.closeBestBeforeDate(-3); assertEquals(2, res.size()); assertEquals(this.p1, res.get(0)); assertEquals(this.p5, res.get(1)); diff --git a/test/tp10/PrioritySchedulerTest.java b/test/tp10/PrioritySchedulerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..bd68ea4c1c26972774788e4474b067440c777931 --- /dev/null +++ b/test/tp10/PrioritySchedulerTest.java @@ -0,0 +1,148 @@ +package tp10; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PrioritySchedulerTest { + public Task t1, t2, t3, t4, t5; + public PriorityScheduler myScheduler; + public int width; + + @BeforeEach + void initialization() { + SchedulingQueue.queueCounter = 0; // reset of automatic numbering from SchedulingQueue + width = 4; + myScheduler = new PriorityScheduler(width); + t1 = new Task("t1", 3); + t2 = new Task("t2", 3); + t3 = new Task("t3", 1); + t4 = new Task("t4", 5); + t5 = new Task("t5", 2); + } + + @Test + void testSize(){ + assertEquals(0, myScheduler.size()); // empty PriorityScheduler + for(int i=0; i<=width+1; i++) assertEquals(0, myScheduler.size(i)); + myScheduler.addElement(t1); // 1 task, priority 3 + assertEquals(1, myScheduler.size()); + for(int i=0; i<=width+1; i++) + if(i==3) assertEquals(1, myScheduler.size(i)); + else assertEquals(0, myScheduler.size(i)); + myScheduler.addElement(t2); // 2 tasks, same priority + assertEquals(2, myScheduler.size()); + for(int i=0; i<=width+1; i++) + if(i==3) assertEquals(2, myScheduler.size(i)); + else assertEquals(0, myScheduler.size(i)); + myScheduler.addElement(t3); // 3 tasks, 2 priority values + assertEquals(3, myScheduler.size()); + for(int i=0; i<=width+1; i++) + if(i==1) assertEquals(1, myScheduler.size(i)); + else if(i==3) assertEquals(2, myScheduler.size(i)); + else assertEquals(0, myScheduler.size(i)); + myScheduler.addElement(t4); // new task with priority > nbQueue + assertEquals(4, myScheduler.size()); + for(int i=0; i<=width+1; i++) + if(i==1) assertEquals(1, myScheduler.size(i)); + else if(i==3) assertEquals(3, myScheduler.size(i)); + else assertEquals(0, myScheduler.size(i)); + } + + @Test + void testHighestPriorityTask_noElement() { + assertEquals(0, myScheduler.size()); + assertNull(myScheduler.highestPriority()); + } + + @Test + void testHighestPriorityTask_oneElement() { + myScheduler.addElement(t1); + assertEquals(1, myScheduler.size()); + assertEquals(t1, myScheduler.highestPriority()); + assertEquals(0, myScheduler.size()); + assertNull(myScheduler.highestPriority()); + } + + @Test + void testHighestPriorityTask_twoElements_samePriority() { + myScheduler.addElement(t2); + myScheduler.addElement(t1); + assertEquals(2, myScheduler.size()); + assertEquals(t2, myScheduler.highestPriority()); + assertEquals(1, myScheduler.size()); + assertEquals(t1, myScheduler.highestPriority()); + assertEquals(0, myScheduler.size()); + assertNull(myScheduler.highestPriority()); + } + + @Test + void testHighestPriorityTask_twoElements_nonOrdered() { + myScheduler.addElement(t4); + myScheduler.addElement(t2); + assertEquals(2, myScheduler.size()); + assertEquals(t4, myScheduler.highestPriority()); + assertEquals(1, myScheduler.size()); + assertEquals(t2, myScheduler.highestPriority()); + assertEquals(0, myScheduler.size()); + assertNull(myScheduler.highestPriority()); + } + + @Test + void testHighestPriorityTask_threeElements() { + myScheduler.addElement(t1); + myScheduler.addElement(t3); + myScheduler.addElement(t2); + assertEquals(3, myScheduler.size()); + assertEquals(t3, myScheduler.highestPriority()); + assertEquals(2, myScheduler.size()); + assertEquals(t1, myScheduler.highestPriority()); + assertEquals(1, myScheduler.size()); + assertEquals(t2, myScheduler.highestPriority()); + assertEquals(0, myScheduler.size()); + assertNull(myScheduler.highestPriority()); + } + + @Test + void testIsEmptyTask() { + assertTrue(myScheduler.isEmpty()); + assertEquals(0, myScheduler.size()); + myScheduler.addElement(t1); + assertFalse(myScheduler.isEmpty()); + assertEquals(1, myScheduler.size()); + assertEquals(t1, myScheduler.highestPriority()); + assertTrue(myScheduler.isEmpty()); + assertEquals(0, myScheduler.size()); + } + + @Test + void testToStringTask() { + assertEquals(0, myScheduler.size()); + assertEquals("PriorityQueue:\nQueue0 -> []\nQueue1 -> []\nQueue2 -> []\nQueue3 -> []\n", myScheduler.toString()); + myScheduler.addElement(t1); + assertEquals(1, myScheduler.size()); + assertEquals("PriorityQueue:\nQueue0 -> []\nQueue1 -> []\nQueue2 -> []\nQueue3 -> [t1(3)]\n", myScheduler.toString()); + myScheduler.addElement(t2); + assertEquals(2, myScheduler.size()); + assertEquals("PriorityQueue:\nQueue0 -> []\nQueue1 -> []\nQueue2 -> []\nQueue3 -> [t1(3), t2(3)]\n", myScheduler.toString()); + myScheduler.addElement(t3); + assertEquals(3, myScheduler.size()); + assertEquals("PriorityQueue:\nQueue0 -> []\nQueue1 -> [t3(1)]\nQueue2 -> []\nQueue3 -> [t1(3), t2(3)]\n", myScheduler.toString()); + } + + class Task implements IPriority{ + String name; + int priority; + + Task(String name, int priority) { + this.name = name; + this.priority = priority; + } + public String toString() {return this.name + "(" + this.priority + ")";} + public int getPriority() {return this.priority;} + } +} diff --git a/test/tp10/PrioritySchedulingQueueTest.java b/test/tp10/PrioritySchedulingQueueTest.java new file mode 100644 index 0000000000000000000000000000000000000000..dd6ea7fff0c4c7e5b0641d22f8baf6e96da5b3fb --- /dev/null +++ b/test/tp10/PrioritySchedulingQueueTest.java @@ -0,0 +1,116 @@ +package tp10; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PrioritySchedulingQueueTest { + public Task t1, t2, t3; + public PrioritySchedulingQueue<Task> orderedTasks; + + @BeforeEach + void initialization() { + SchedulingQueue.queueCounter = 0; + this.orderedTasks = new PrioritySchedulingQueue<>(); + t1 = new Task("t1", 6); + t2 = new Task("t2", 4); + t3 = new Task("t3", 2); + } + + @Test + void testAddElementTask() { + assertEquals(0, orderedTasks.size()); + orderedTasks.addElement(t1); + assertEquals(1, orderedTasks.size()); + orderedTasks.addElement(t2); + assertEquals(2, orderedTasks.size()); + } + + @Test + void testHighestPriorityTask_oneElement() { + orderedTasks.addElement(t1); + assertEquals(1, orderedTasks.size()); + assertEquals(t1, orderedTasks.highestPriority()); + assertEquals(0, orderedTasks.size()); + assertNull(orderedTasks.highestPriority()); + } + + @Test + void testHighestPriorityTask_twoElements_ordered() { + orderedTasks.addElement(t2); + orderedTasks.addElement(t1); + assertEquals(2, orderedTasks.size()); + assertEquals(t2, orderedTasks.highestPriority()); + assertEquals(1, orderedTasks.size()); + assertEquals(t1, orderedTasks.highestPriority()); + assertEquals(0, orderedTasks.size()); + assertNull(orderedTasks.highestPriority()); + } + + @Test + void testHighestPriorityTask_twoElements_nonOrdered() { + orderedTasks.addElement(t1); + orderedTasks.addElement(t2); + assertEquals(2, orderedTasks.size()); + assertEquals(t2, orderedTasks.highestPriority()); + assertEquals(1, orderedTasks.size()); + assertEquals(t1, orderedTasks.highestPriority()); + assertEquals(0, orderedTasks.size()); + assertNull(orderedTasks.highestPriority()); + } + + @Test + void testHighestPriorityTask_threeElements() { + orderedTasks.addElement(t1); + orderedTasks.addElement(t3); + orderedTasks.addElement(t2); + assertEquals(3, orderedTasks.size()); + assertEquals(t3, orderedTasks.highestPriority()); + assertEquals(2, orderedTasks.size()); + assertEquals(t2, orderedTasks.highestPriority()); + assertEquals(1, orderedTasks.size()); + assertEquals(t1, orderedTasks.highestPriority()); + assertEquals(0, orderedTasks.size()); + assertNull(orderedTasks.highestPriority()); + } + + @Test + void testIsEmptyTask() { + assertTrue(orderedTasks.isEmpty()); + assertEquals(0, orderedTasks.size()); + orderedTasks.addElement(t1); + assertFalse(orderedTasks.isEmpty()); + assertEquals(1, orderedTasks.size()); + assertEquals(t1, orderedTasks.highestPriority()); + assertTrue(orderedTasks.isEmpty()); + assertEquals(0, orderedTasks.size()); + } + + @Test + void testToStringTask() { + assertEquals(0, orderedTasks.size()); + assertEquals("Queue0 -> []", orderedTasks.toString()); + orderedTasks.addElement(t1); + assertEquals(1, orderedTasks.size()); + assertEquals("Queue0 -> [t1(6)]", orderedTasks.toString()); + orderedTasks.addElement(t2); + assertEquals(2, orderedTasks.size()); + assertEquals("Queue0 -> [t2(4), t1(6)]", orderedTasks.toString()); + } + + class Task implements IPriority{ + String name; + int priority; + + Task(String name, int priority) { + this.name = name; + this.priority = priority; + } + public String toString() {return this.name + "(" + this.priority + ")";} + public int getPriority() {return this.priority;} + } +} diff --git a/test/tp10/SchedulingQueueTest.java b/test/tp10/SchedulingQueueTest.java new file mode 100644 index 0000000000000000000000000000000000000000..81ac07934ef4e4f4472d59fd560e534b29f2a2aa --- /dev/null +++ b/test/tp10/SchedulingQueueTest.java @@ -0,0 +1,185 @@ +package tp10; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.time.LocalDate; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class SchedulingQueueTest { + public Book b1, b2; + public Task t1, t2; + public SchedulingQueue<Book> qBook; + public SchedulingQueue<Task> qTask; + + @BeforeEach + void initialization() { + SchedulingQueue.queueCounter = 0; + this.qBook = new SchedulingQueue<>(); + this.qTask = new SchedulingQueue<>(); + b1 = new Book("H2G2", "D. Adams", 1979); + b2 = new Book("Flatland", "E.Abbott Abbott", 1884); + t1 = new Task("a0", 2); + t2 = new Task("a1", 4); + } + + @Test + void testAddElementBook() { + assertEquals(0, qBook.size()); + qBook.addElement(b1); + assertEquals(1, qBook.size()); + qBook.addElement(b2); + assertEquals(2, qBook.size()); + } + + @Test + void testHighestPriorityBook() { + qBook.addElement(b1);qBook.addElement(b2); + assertEquals(2, qBook.size()); + assertEquals(b1, qBook.highestPriority()); + assertEquals(1, qBook.size()); + assertEquals(b2, qBook.highestPriority()); + assertEquals(0, qBook.size()); + assertNull(qBook.highestPriority()); + qBook.addElement(b2);qBook.addElement(b1); + assertEquals(2, qBook.size()); + assertEquals(b2, qBook.highestPriority()); + assertEquals(1, qBook.size()); + assertEquals(b1, qBook.highestPriority()); + assertEquals(0, qBook.size()); + assertNull(qBook.highestPriority()); + } + + @Test + void testIsEmptyBook() { + assertTrue(qBook.isEmpty()); + assertEquals(0, qBook.size()); + qBook.addElement(b1); + assertFalse(qBook.isEmpty()); + assertEquals(1, qBook.size()); + assertEquals(b1, qBook.highestPriority()); + assertTrue(qBook.isEmpty()); + assertEquals(0, qBook.size()); + } + + @Test + void testToStringBook() { + assertEquals(0, qBook.size()); + assertEquals("Queue0 -> []", qBook.toString()); + qBook.addElement(b1); + assertEquals(1, qBook.size()); + assertEquals("Queue0 -> [H2G2:D. Adams(1979)]", qBook.toString()); + qBook.addElement(b2); + assertEquals(2, qBook.size()); + assertEquals("Queue0 -> [H2G2:D. Adams(1979), Flatland:E.Abbott Abbott(1884)]", qBook.toString()); + } + + @Test + void testAddElementTask() { + assertEquals(0, qTask.size()); + qTask.addElement(t1); + assertEquals(1, qTask.size()); + qTask.addElement(t2); + assertEquals(2, qTask.size()); + } + + @Test + void testHighestPriorityTask() { + qTask.addElement(t1);qTask.addElement(t2); + assertEquals(2, qTask.size()); + assertEquals(t1, qTask.highestPriority()); + assertEquals(1, qTask.size()); + assertEquals(t2, qTask.highestPriority()); + assertEquals(0, qTask.size()); + assertNull(qTask.highestPriority()); + } + + @Test + void testIsEmptyTask() { + assertTrue(qTask.isEmpty()); + assertEquals(0, qTask.size()); + qTask.addElement(t1); + assertFalse(qTask.isEmpty()); + assertEquals(1, qTask.size()); + assertEquals(t1, qTask.highestPriority()); + assertTrue(qTask.isEmpty()); + assertEquals(0, qTask.size()); + } + + @Test + void testToStringTask() { + assertEquals(0, qTask.size()); + assertEquals("Queue1 -> []", qTask.toString()); + qTask.addElement(t1); + assertEquals(1, qTask.size()); + assertEquals("Queue1 -> [a0:"+LocalDate.now().plusDays(2)+"(2)]", qTask.toString()); + qTask.addElement(t2); + assertEquals(2, qTask.size()); + assertEquals("Queue1 -> [a0:"+LocalDate.now().plusDays(2)+"(2), a1:" + LocalDate.now().plusDays(4)+"(4)]", qTask.toString()); + } + + class Task { + String name; + LocalDate deadline; + int duration; + + Task(String name, int duration) { + this.name = name; + this.deadline = LocalDate.now().plusDays(duration); + this.duration = duration; + } + public String toString() {return this.name + ":" + this.deadline + "(" + this.duration + ")";} + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null) return false; + if (getClass() != obj.getClass()) return false; + Task other = (Task) obj; + if (!getEnclosingInstance().equals(other.getEnclosingInstance())) return false; + if (deadline == null) { + if (other.deadline != null) return false; + } else if (!deadline.equals(other.deadline)) return false; + if (duration != other.duration) return false; + if (name == null) { + if (other.name != null) return false; + } else if (!name.equals(other.name)) return false; + return true; + } + private SchedulingQueueTest getEnclosingInstance() {return SchedulingQueueTest.this;} + } + + class Book { + String title; + String author; + int publicationYear; + Book(String title, String author, int publicationYear) { + this.title = title; + this.author = author; + this.publicationYear = publicationYear; + } + public String toString() { + return this.title + ":" + this.author + "(" + this.publicationYear + ")"; + } + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null) return false; + if (getClass() != obj.getClass()) return false; + Book other = (Book) obj; + if (!getEnclosingInstance().equals(other.getEnclosingInstance())) return false; + if (author == null) { + if (other.author != null) return false; + } else if (!author.equals(other.author)) return false; + if (publicationYear != other.publicationYear) return false; + if (title == null) { + if (other.title != null) return false; + } else if (!title.equals(other.title)) return false; + return true; + } + private SchedulingQueueTest getEnclosingInstance() {return SchedulingQueueTest.this;} + } +} diff --git a/test/tp10/scheduler.log b/test/tp10/scheduler.log new file mode 100644 index 0000000000000000000000000000000000000000..8930317352546b8e05263fbaac7c1b405e4dd5c4 --- /dev/null +++ b/test/tp10/scheduler.log @@ -0,0 +1,102 @@ +IN:DISPLAY:msg0 +IN:DISPLAY:msg1 +IN:LOOP:msg2:4:1 +IN:DYNAMIC:msg3:2:true +IN:DISPLAY:msg4 +IN:LOOP:msg5:2 +IN:DYNAMIC:msg6:4:true +IN:DYNAMIC:msg7:1:true:1 +IN:DISPLAY:msg8 +IN:LOOP:msg9:1 +IN:DISPLAY:msg10 +OUT:DYNAMIC:msg3:2:true +IN:LOOP:msg11:5:1 +IN:DYNAMIC:msg12:5:false:1 +IN:DISPLAY:msg13 +OUT:DYNAMIC:msg6:4:true +OUT:LOOP:msg2:4:1 +OUT:DYNAMIC:msg7:1:true:1 +OUT:LOOP:msg11:5:1 +OUT:DYNAMIC:msg12:5:false:1 +IN:DISPLAY:msg14 +IN:DISPLAY:msg15 +IN:DISPLAY:msg16 +IN:DISPLAY:msg17:0 +IN:DISPLAY:msg18 +OUT:DISPLAY:msg17:0 +IN:DISPLAY:msg19 +IN:DISPLAY:msg20:2 +IN:DYNAMIC:msg21:4:false:1 +IN:DYNAMIC:msg22:4:false +IN:DISPLAY:msg23 +OUT:DYNAMIC:msg22:4:false +IN:DYNAMIC:msg24:4:false +OUT:DYNAMIC:msg24:4:false +OUT:DYNAMIC:msg21:4:false:1 +IN:DISPLAY:msg25:0 +IN:DYNAMIC:msg26:4:true +IN:DISPLAY:msg27:1 +IN:DYNAMIC:msg28:4:false:1 +IN:DYNAMIC:msg29:5:false +OUT:DISPLAY:msg25:0 +OUT:DYNAMIC:msg26:4:true +IN:DYNAMIC:msg30:2:false +OUT:DYNAMIC:msg29:5:false +IN:LOOP:msg31:5 +IN:LOOP:msg32:3 +OUT:DYNAMIC:msg30:2:false +IN:DISPLAY:msg33:0 +OUT:DISPLAY:msg33:0 +OUT:DISPLAY:msg27:1 +OUT:DYNAMIC:msg28:4:false:1 +IN:DYNAMIC:msg34:2:false:2 +OUT:LOOP:msg5:2 +OUT:LOOP:msg9:1 +IN:DISPLAY:msg35 +IN:LOOP:msg36:5:3 +IN:LOOP:msg37:2 +IN:DISPLAY:msg38 +OUT:DISPLAY:msg20:2 +OUT:LOOP:msg31:5 +OUT:LOOP:msg32:3 +IN:DYNAMIC:msg39:5:false:3 +OUT:DYNAMIC:msg34:2:false:2 +IN:DYNAMIC:msg40:4:false +IN:LOOP:msg41:1 +IN:DISPLAY:msg42:0 +IN:DYNAMIC:msg43:1:true +OUT:DYNAMIC:msg40:4:false +OUT:DISPLAY:msg42:0 +OUT:DYNAMIC:msg43:1:true +OUT:LOOP:msg37:2 +IN:LOOP:msg44:3 +IN:DISPLAY:msg45 +IN:DISPLAY:msg46 +OUT:LOOP:msg41:1 +OUT:LOOP:msg44:3 +IN:DISPLAY:msg47:2 +OUT:DISPLAY:msg47:2 +OUT:DISPLAY:msg0 +IN:DISPLAY:msg48 +IN:LOOP:msg49:5 +OUT:LOOP:msg49:5 +IN:LOOP:msg50:2 +OUT:LOOP:msg50:2 +OUT:DISPLAY:msg1 +OUT:DISPLAY:msg4 +OUT:DISPLAY:msg8 +OUT:DISPLAY:msg10 +OUT:DISPLAY:msg13 +OUT:DISPLAY:msg14 +OUT:DISPLAY:msg15 +OUT:DISPLAY:msg16 +OUT:DISPLAY:msg18 +OUT:DISPLAY:msg19 +OUT:DISPLAY:msg23 +OUT:DISPLAY:msg35 +OUT:LOOP:msg36:5:3 +OUT:DISPLAY:msg38 +OUT:DYNAMIC:msg39:5:false:3 +OUT:DISPLAY:msg45 +OUT:DISPLAY:msg46 +OUT:DISPLAY:msg48 diff --git a/test/tp10/schedulerDisplayJobOnly.log b/test/tp10/schedulerDisplayJobOnly.log new file mode 100644 index 0000000000000000000000000000000000000000..ded59f840033c16560df769f89a363274febac95 --- /dev/null +++ b/test/tp10/schedulerDisplayJobOnly.log @@ -0,0 +1,103 @@ +IN:DISPLAY:msg0 +IN:DISPLAY:msg1:1 +IN:DISPLAY:msg2:2 +IN:DISPLAY:msg3:2 +IN:DISPLAY:msg4:0 +IN:DISPLAY:msg5:1 +IN:DISPLAY:msg6:2 +IN:DISPLAY:msg7:2 +IN:DISPLAY:msg8:1 +IN:DISPLAY:msg9:1 +IN:DISPLAY:msg10:0 +OUT:DISPLAY:msg4:0 +OUT:DISPLAY:msg10:0 +IN:DISPLAY:msg11 +OUT:DISPLAY:msg1:1 +OUT:DISPLAY:msg5:1 +OUT:DISPLAY:msg8:1 +OUT:DISPLAY:msg9:1 +OUT:DISPLAY:msg2:2 +IN:DISPLAY:msg12 +OUT:DISPLAY:msg3:2 +IN:DISPLAY:msg13 +IN:DISPLAY:msg14:0 +OUT:DISPLAY:msg14:0 +OUT:DISPLAY:msg6:2 +IN:DISPLAY:msg15:2 +OUT:DISPLAY:msg7:2 +OUT:DISPLAY:msg15:2 +OUT:DISPLAY:msg0 +IN:DISPLAY:msg16:1 +IN:DISPLAY:msg17:0 +IN:DISPLAY:msg18:2 +OUT:DISPLAY:msg17:0 +OUT:DISPLAY:msg16:1 +IN:DISPLAY:msg19:0 +IN:DISPLAY:msg20 +IN:DISPLAY:msg21:0 +IN:DISPLAY:msg22:2 +IN:DISPLAY:msg23:2 +IN:DISPLAY:msg24:2 +OUT:DISPLAY:msg19:0 +IN:DISPLAY:msg25:0 +IN:DISPLAY:msg26 +OUT:DISPLAY:msg21:0 +OUT:DISPLAY:msg25:0 +IN:DISPLAY:msg27 +OUT:DISPLAY:msg18:2 +OUT:DISPLAY:msg22:2 +IN:DISPLAY:msg28:0 +OUT:DISPLAY:msg28:0 +OUT:DISPLAY:msg23:2 +OUT:DISPLAY:msg24:2 +IN:DISPLAY:msg29 +IN:DISPLAY:msg30 +OUT:DISPLAY:msg11 +OUT:DISPLAY:msg12 +IN:DISPLAY:msg31:1 +IN:DISPLAY:msg32:1 +OUT:DISPLAY:msg31:1 +OUT:DISPLAY:msg32:1 +OUT:DISPLAY:msg13 +IN:DISPLAY:msg33:0 +OUT:DISPLAY:msg33:0 +OUT:DISPLAY:msg20 +OUT:DISPLAY:msg26 +OUT:DISPLAY:msg27 +OUT:DISPLAY:msg29 +IN:DISPLAY:msg34:2 +IN:DISPLAY:msg35:2 +IN:DISPLAY:msg36:0 +IN:DISPLAY:msg37:2 +IN:DISPLAY:msg38 +IN:DISPLAY:msg39:0 +OUT:DISPLAY:msg36:0 +IN:DISPLAY:msg40:2 +IN:DISPLAY:msg41 +IN:DISPLAY:msg42 +IN:DISPLAY:msg43:0 +IN:DISPLAY:msg44 +OUT:DISPLAY:msg39:0 +IN:DISPLAY:msg45 +IN:DISPLAY:msg46:2 +OUT:DISPLAY:msg43:0 +OUT:DISPLAY:msg34:2 +IN:DISPLAY:msg47:0 +OUT:DISPLAY:msg47:0 +IN:DISPLAY:msg48:1 +IN:DISPLAY:msg49:0 +OUT:DISPLAY:msg49:0 +IN:DISPLAY:msg50:1 +OUT:DISPLAY:msg48:1 +OUT:DISPLAY:msg50:1 +OUT:DISPLAY:msg35:2 +OUT:DISPLAY:msg37:2 +OUT:DISPLAY:msg40:2 +OUT:DISPLAY:msg46:2 +OUT:DISPLAY:msg30 +OUT:DISPLAY:msg38 +OUT:DISPLAY:msg41 +OUT:DISPLAY:msg42 +OUT:DISPLAY:msg44 +OUT:DISPLAY:msg45 +0