/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package org.dlect.model; import com.google.common.collect.Sets; import java.util.Iterator; import org.dlect.events.ListEvent; import org.dlect.logging.TestLogging; import org.dlect.model.Semester.SemesterEventID; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import static org.dlect.test.MarshalCapableTester.*; import static org.junit.Assert.*; /** * * @author lee */ @RunWith(MockitoJUnitRunner.class) @SuppressWarnings("unchecked") public class SemesterTest { @Test public void testJaxB() { Semester s = new Semester(); s.setSubjects(Sets.newHashSet(new Subject(), new Subject())); s.setNum(1020); s.setLongName("Semester 1020 Long Name"); s.setCoursePostfixName("Sem 1020. Course Prefix"); assertEquals(2, s.getSubjects().size()); String xml = testMarshalNonRootObject(s, Semester.class, Subject.class); TestLogging.LOG.error(xml); assertTrue(xml.contains("1020")); assertTrue(xml.contains(s.getLongName())); assertTrue(xml.contains(s.getCoursePostfixName())); Semester loaded = testUnmarshalNonRootObject(xml, Semester.class, Subject.class); assertEquals(s.getNum(), loaded.getNum()); assertEquals(s.getLongName(), loaded.getLongName()); assertEquals(s.getCoursePostfixName(), loaded.getCoursePostfixName()); assertEquals(s.getSubjects().size(), loaded.getSubjects().size()); RecordingEventListener rel = RecordingEventListener.addListener(loaded); Iterator<Subject> sub = loaded.getSubjects().iterator(); loaded.setSubjects(Sets.<Subject>newHashSet()); rel.assertEvent(ListEvent.getRemoveEvent(loaded, SemesterEventID.SUBJECT, sub.next())); rel.assertEvent(ListEvent.getRemoveEvent(loaded, SemesterEventID.SUBJECT, sub.next())); rel.noMoreEvents(); } }