package de.westnordost.streetcomplete.quests.opening_hours; import junit.framework.TestCase; public class CircularSectionTest extends TestCase { public void testStartEnd() { CircularSection cs = new CircularSection(0,10); assertEquals(0, cs.getStart()); assertEquals(10, cs.getEnd()); assertFalse(cs.loops()); } public void testLoops() { CircularSection cs = new CircularSection(10,0); assertTrue(cs.loops()); } public void testIntersect() { CircularSection cs = new CircularSection(0,10); CircularSection tooHigh = new CircularSection(11,12); CircularSection tooLow = new CircularSection(11,12); CircularSection touchesUpperEnd = new CircularSection(10,10); CircularSection touchesLowerEnd = new CircularSection(-1,0); CircularSection contains = new CircularSection(-10,20); CircularSection intersectsLowerSection = new CircularSection(-10,3); CircularSection intersectUpperSection = new CircularSection(8,20); CircularSection loopsOutside = new CircularSection(11,-1); CircularSection loopsIntersectsLowerSection = new CircularSection(11,3); CircularSection loopsIntersectsUpperSection = new CircularSection(8,-5); assertTrue(cs.intersects(cs)); assertFalse(cs.intersects(tooHigh)); assertFalse(cs.intersects(tooLow)); assertTrue(cs.intersects(touchesLowerEnd)); assertTrue(cs.intersects(touchesUpperEnd)); assertTrue(cs.intersects(contains)); assertTrue(cs.intersects(intersectsLowerSection)); assertTrue(cs.intersects(intersectUpperSection)); assertFalse(cs.intersects(loopsOutside)); assertTrue(cs.intersects(loopsIntersectsLowerSection)); assertTrue(cs.intersects(loopsIntersectsUpperSection)); assertTrue(loopsIntersectsLowerSection.intersects(loopsIntersectsUpperSection)); } public void testCompare() { CircularSection looper = new CircularSection(10,0); CircularSection lowStart = new CircularSection(0,10); CircularSection lowStartButHighEnd = new CircularSection(0,50); CircularSection highStart = new CircularSection(10,20); assertTrue(looper.compareTo(lowStart) < 0); assertTrue(looper.compareTo(lowStartButHighEnd) < 0); assertTrue(looper.compareTo(highStart) < 0); assertTrue(lowStart.compareTo(looper) > 0); assertTrue(lowStartButHighEnd.compareTo(looper) > 0); assertTrue(highStart.compareTo(looper) > 0); assertTrue(lowStart.compareTo(lowStartButHighEnd) < 0); assertTrue(lowStart.compareTo(highStart) < 0); assertTrue(lowStartButHighEnd.compareTo(lowStart) > 0); assertTrue(highStart.compareTo(lowStart) > 0); assertTrue(lowStartButHighEnd.compareTo(highStart) < 0); assertTrue(highStart.compareTo(lowStartButHighEnd) > 0); } public void testEquals() { CircularSection cs = new CircularSection(0,10); assertFalse(cs.equals(null)); assertEquals(cs, cs); assertFalse(cs.equals(new Object())); assertFalse(cs.equals(new CircularSection(10,0))); assertEquals(cs, new CircularSection(0,10)); } public void testHashCodeIdentity() { assertEquals( new CircularSection(0,10).hashCode(), new CircularSection(0,10).hashCode()); } public void testHashCodeNotTooSimple() { assertFalse( new CircularSection(0,10).hashCode() == new CircularSection(10,0).hashCode()); } }