import static org.junit.jupiter.api.Assertions.*; import java.util.Arrays; import java.util.HashSet; import java.util.Set; import org.junit.jupiter.api.Test; class CoveringSegmentsTest { @Test void testSegment() { CoveringSegments.Segment s = new CoveringSegments.Segment(1, 2); assertEquals(s.start, 1); } @Test void testSegmentArray() { CoveringSegments.Segment[] s = new CoveringSegments.Segment[2]; s[0] = new CoveringSegments.Segment(3, 4); s[1] = new CoveringSegments.Segment(1, 2); Arrays.sort(s); assertEquals(1, s[0].start); } @Test void testSegmentArrayRemoveDups() { CoveringSegments.Segment[] s = new CoveringSegments.Segment[3]; s[0] = new CoveringSegments.Segment(3, 4); s[1] = new CoveringSegments.Segment(1, 2); s[2] = new CoveringSegments.Segment(1, 2); Arrays.sort(s); Set set = new HashSet(Arrays.asList(s)); assertEquals(2, set.size()); } @Test void testGetOptimalPoints() { Set set = new HashSet(); set.add(new CoveringSegments.Segment(1, 3)); set.add(new CoveringSegments.Segment(2, 5)); set.add(new CoveringSegments.Segment(3, 6)); CoveringSegments.Segment[] s = set.stream().toArray(CoveringSegments.Segment[]::new); Arrays.sort(s); int[] results = CoveringSegments.getOptimalPoints(s); assertEquals(3, results[0]); } @Test void testGetOptimalPoints1() { Set set = new HashSet(); set.add(new CoveringSegments.Segment(4, 7)); set.add(new CoveringSegments.Segment(1, 3)); set.add(new CoveringSegments.Segment(2, 5)); set.add(new CoveringSegments.Segment(5, 6)); CoveringSegments.Segment[] s = set.stream().toArray(CoveringSegments.Segment[]::new); Arrays.sort(s); assertEquals(2, CoveringSegments.getOptimalPoints(s).length); } @Test void testGetOptimalPoints2() { Set set = new HashSet(); set.add(new CoveringSegments.Segment(1, 1)); set.add(new CoveringSegments.Segment(1, 1)); set.add(new CoveringSegments.Segment(1, 1)); CoveringSegments.Segment[] s = set.stream().toArray(CoveringSegments.Segment[]::new); Arrays.sort(s); assertEquals(1, CoveringSegments.getOptimalPoints(s).length); } @Test void testGetOptimalPoints3() { Set set = new HashSet(); set.add(new CoveringSegments.Segment(1, 1)); set.add(new CoveringSegments.Segment(1, 2)); set.add(new CoveringSegments.Segment(1, 1)); CoveringSegments.Segment[] s = set.stream().toArray(CoveringSegments.Segment[]::new); Arrays.sort(s); assertEquals(1, CoveringSegments.getOptimalPoints(s).length); } @Test void testGetOptimalPoints4() { Set set = new HashSet(); set.add(new CoveringSegments.Segment(5, 6)); set.add(new CoveringSegments.Segment(3, 4)); set.add(new CoveringSegments.Segment(1, 2)); CoveringSegments.Segment[] s = set.stream().toArray(CoveringSegments.Segment[]::new); Arrays.sort(s); assertEquals(3, CoveringSegments.getOptimalPoints(s).length); } @Test void testGetOptimalPoints5() { Set set = new HashSet(); set.add(new CoveringSegments.Segment(1, 1)); set.add(new CoveringSegments.Segment(2, 2)); set.add(new CoveringSegments.Segment(1, 1)); CoveringSegments.Segment[] s = set.stream().toArray(CoveringSegments.Segment[]::new); Arrays.sort(s); assertEquals(2, CoveringSegments.getOptimalPoints(s).length); } @Test void testGetOptimalPoints6() { Set set = new HashSet(); set.add(new CoveringSegments.Segment(1, 5)); set.add(new CoveringSegments.Segment(2, 2)); set.add(new CoveringSegments.Segment(1, 1)); CoveringSegments.Segment[] s = set.stream().toArray(CoveringSegments.Segment[]::new); Arrays.sort(s); assertEquals(2, CoveringSegments.getOptimalPoints(s).length); } @Test void testGetOptimalPoints7() { Set set = new HashSet(); set.add(new CoveringSegments.Segment(1, 5)); set.add(new CoveringSegments.Segment(2, 4)); set.add(new CoveringSegments.Segment(1, 3)); CoveringSegments.Segment[] s = set.stream().toArray(CoveringSegments.Segment[]::new); Arrays.sort(s); assertEquals(1, CoveringSegments.getOptimalPoints(s).length); } @Test void testGetOptimalPoints8() { Set set = new HashSet(); set.add(new CoveringSegments.Segment(1, 4)); set.add(new CoveringSegments.Segment(2, 4)); set.add(new CoveringSegments.Segment(1, 3)); CoveringSegments.Segment[] s = set.stream().toArray(CoveringSegments.Segment[]::new); Arrays.sort(s); assertEquals(1, CoveringSegments.getOptimalPoints(s).length); } @Test void testGetOptimalPoints9() { Set set = new HashSet(); set.add(new CoveringSegments.Segment(1, 7)); set.add(new CoveringSegments.Segment(1, 6)); set.add(new CoveringSegments.Segment(1, 3)); CoveringSegments.Segment[] s = set.stream().toArray(CoveringSegments.Segment[]::new); Arrays.sort(s); assertEquals(1, CoveringSegments.getOptimalPoints(s).length); } @Test void testGetOptimalPoints10() { Set set = new HashSet(); set.add(new CoveringSegments.Segment(1, 7)); set.add(new CoveringSegments.Segment(1, 6)); set.add(new CoveringSegments.Segment(1, 3)); set.add(new CoveringSegments.Segment(7, 7)); CoveringSegments.Segment[] s = set.stream().toArray(CoveringSegments.Segment[]::new); Arrays.sort(s); assertEquals(2, CoveringSegments.getOptimalPoints(s).length); } @Test void testGetOptimalPoints11() { Set set = new HashSet(); set.add(new CoveringSegments.Segment(1, 2)); set.add(new CoveringSegments.Segment(3, 4)); set.add(new CoveringSegments.Segment(6, 12)); set.add(new CoveringSegments.Segment(7, 8)); CoveringSegments.Segment[] s = set.stream().toArray(CoveringSegments.Segment[]::new); Arrays.sort(s); assertEquals(3, CoveringSegments.getOptimalPoints(s).length); } @Test void testGetOptimalPoints12() { Set set = new HashSet(); set.add(new CoveringSegments.Segment(1, 15)); set.add(new CoveringSegments.Segment(2, 14)); set.add(new CoveringSegments.Segment(6, 12)); set.add(new CoveringSegments.Segment(7, 8)); CoveringSegments.Segment[] s = set.stream().toArray(CoveringSegments.Segment[]::new); Arrays.sort(s); assertEquals(1, CoveringSegments.getOptimalPoints(s).length); } @Test void testGetOptimalPoints13() { Set set = new HashSet(); set.add(new CoveringSegments.Segment(1, 15)); set.add(new CoveringSegments.Segment(2, 3)); set.add(new CoveringSegments.Segment(4, 8)); CoveringSegments.Segment[] s = set.stream().toArray(CoveringSegments.Segment[]::new); Arrays.sort(s); assertEquals(2, CoveringSegments.getOptimalPoints(s).length); } }