package uk.ac.ox.oucs.vle;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import java.util.Date;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.*;
/**
* Check the comparator works correctly.
* @author Matthew Buckett
*/
public class BaseDateComparatorTest {
private BaseDateComparator comp;
private Date now;
@Before
public void setUp() {
comp = new BaseDateComparator();
now = new Date();
}
@Test
public void testSameDates() {
CourseComponent o1 = mockComponent(now, null);
CourseComponent o2 = mockComponent(now, null);
assertEquals(0, comp.compare(o1,o2));
}
@Test
public void testDifferent() {
CourseComponent current = mockComponent(now, null);
CourseComponent before = mockComponent(new Date(now.getTime() - 1000), null);
assertTrue(comp.compare(current, before) > 0);
assertTrue(comp.compare(before, current) < 0);
}
@Test
public void testNoDates() {
CourseComponent hasText = mockComponent(null, "Sometime");
CourseComponent noText = mockComponent(null, null);
// No text should be before one with text.
assertTrue(comp.compare(noText, hasText) < 0);
}
public CourseComponent mockComponent(Date baseDate, String startText) {
CourseComponent component = mock(CourseComponent.class);
when(component.getBaseDate()).thenReturn(baseDate);
when(component.getStartsText()).thenReturn(startText);
return component;
}
}