import junit.framework.TestCase; import java.util.List; import java.util.Collection; public class TestSchedule extends TestCase { public TestSchedule(String name) { super(name); } public void testMinCredits() { Schedule schedule = new Schedule("name"); Collection analysis = schedule.analysis(); assertEquals(1, analysis.size()); assertTrue(analysis.contains("Too few credits")); } public void testJustEnoughCredits() { Course cs110 = new Course("CS110", 11); Offering mwf10 = new Offering(1, cs110, "M10,W10,F10"); Schedule schedule = new Schedule("name"); schedule.add(mwf10); List analysis = schedule.analysis(); assertEquals(1, analysis.size()); assertTrue(analysis.contains("Too few credits")); schedule = new Schedule("name"); Course cs101 = new Course("CS101", 12); Offering th11 = new Offering(1, cs101, "T11,H11"); schedule.add(th11); analysis = schedule.analysis(); assertEquals(0, analysis.size()); } public void testMaxCredits() { Course cs110 = new Course("CS110", 20); Offering mwf10 = new Offering(1, cs110, "M10,W10,F10"); Schedule schedule = new Schedule("name"); schedule.add(mwf10); List analysis = schedule.analysis(); assertEquals(1, analysis.size()); assertTrue(analysis.contains("Too many credits")); schedule.authorizeOverload(true); analysis = schedule.analysis(); assertEquals(0, analysis.size()); } public void testJustBelowMax() { Course cs110 = new Course("CS110", 19); Offering mwf10 = new Offering(1, cs110, "M10,W10,F10"); Schedule schedule = new Schedule("name"); schedule.add(mwf10); List analysis = schedule.analysis(); assertEquals(1, analysis.size()); assertTrue(analysis.contains("Too many credits")); schedule = new Schedule("name"); Course cs101 = new Course("CS101", 18); Offering th11 = new Offering(1, cs101, "T11,H11"); schedule.add(th11); analysis = schedule.analysis(); assertEquals(0, analysis.size()); } public void testDupCourses() { Course cs110 = new Course("CS110", 6); Offering mwf10 = new Offering(1, cs110, "M10,W10,F10"); Offering th11 = new Offering(1, cs110, "T11,H11"); Schedule schedule = new Schedule("name"); schedule.add(mwf10); schedule.add(th11); List analysis = schedule.analysis(); assertEquals(1, analysis.size()); assertTrue(analysis.contains("Same course twice - CS110")); } public void testOverlap() { Schedule schedule = new Schedule("name"); Course cs110 = new Course("CS110", 6); Offering mwf10 = new Offering(1, cs110, "M10,W10,F10"); schedule.add(mwf10); Course cs101 = new Course("CS101", 6); Offering mixed = new Offering(1, cs101, "M10,W11,F11"); schedule.add(mixed); List analysis = schedule.analysis(); assertEquals(1, analysis.size()); assertTrue(analysis.contains("Course overlap - M10")); Course cs102 = new Course("CS102", 1); Offering mixed2 = new Offering(1, cs102, "M9,W10,F11"); schedule.add(mixed2); analysis = schedule.analysis(); assertEquals(3, analysis.size()); assertTrue(analysis.contains("Course overlap - M10")); assertTrue(analysis.contains("Course overlap - W10")); assertTrue(analysis.contains("Course overlap - F11")); } public void testCourseCreate() throws Exception { Course c = Course.create("CS202", 1); Course c2 = Course.find("CS202"); assertEquals("CS202", c2.getName()); Course c3 = Course.find("Nonexistent"); assertNull(c3); } public void testOfferingCreate() throws Exception { Course c = Course.create("CS202", 2); Offering offering = Offering.create(c, "M10"); assertNotNull(offering); } public void testPersistentSchedule() throws Exception { Schedule s = Schedule.create("Bob"); assertNotNull(s); } public void testScheduleUpdate() throws Exception { Course cs101 = Course.create("CS101", 3); cs101.update(); Offering off1 = Offering.create(cs101, "M10"); off1.update(); Offering off2 = Offering.create(cs101, "T9"); off2.update(); Schedule s = Schedule.create("Bob"); s.add(off1); s.add(off2); s.update(); Schedule s2 = Schedule.create("Alice"); s2.add(off1); s2.update(); Schedule s3 = Schedule.find("Bob"); assertEquals(2, s3.schedule.size()); Schedule s4 = Schedule.find("Alice"); assertEquals(1, s4.schedule.size()); } } |