Span implements Comparable<Span> { public int compareTo(Span s) { if (getStart() < s.getStart()) { return -1; } else if (getStart() == s.getStart()) { if (getEnd() > s.getEnd()) { return -1; } else if (getEnd() < s.getEnd()) { return 1; } else { if (getType() == null && s.getType() == null) { return 0; } else if (getType() != null && s.getType() != null) { return getType().compareTo(s.getType()); } else if(getType() != null) { return -1; } return 1; } } else { return 1; } } Span(int s, int e, String type);  Span(int s, int e);  Span(Span span, int offset); int getStart(); int getEnd(); String getType(); int length(); boolean contains(Span s); boolean contains(int index); boolean startsWith(Span s); boolean intersects(Span s); boolean crosses(Span s); CharSequence getCoveredText(CharSequence text); int compareTo(Span s); @Override int hashCode(); @Override boolean equals(Object o); @Override String toString(); static String[] spansToStrings(Span[] spans, CharSequence s); static String[] spansToStrings(Span[] spans, String[] tokens);  }
@Test public void testCompareToLower() { Span a = new Span(100, 1000); Span b = new Span(10, 50); assertEquals(true, a.compareTo(b) > 0); }
@Test public void testCompareToHigher() { Span a = new Span(100, 200); Span b = new Span(300, 400); assertEquals(true, a.compareTo(b) < 0); }
@Test public void testCompareToEquals() { Span a = new Span(30, 1000); Span b = new Span(30, 1000); assertEquals(true, a.compareTo(b) == 0); }
@Test public void testCompareToEqualsSameType() { Span a = new Span(30, 1000, "a"); Span b = new Span(30, 1000, "a"); assertEquals(true, a.compareTo(b) == 0); }
@Test public void testCompareToEqualsDiffType1() { Span a = new Span(30, 1000, "a"); Span b = new Span(30, 1000, "b"); assertEquals(true, a.compareTo(b) == -1); }
@Test public void testCompareToEqualsDiffType2() { Span a = new Span(30, 1000, "b"); Span b = new Span(30, 1000, "a"); assertEquals(true, a.compareTo(b) == 1); }
@Test public void testCompareToEqualsNullType1() { Span a = new Span(30, 1000); Span b = new Span(30, 1000, "b"); assertEquals(true, a.compareTo(b) == 1); }
@Test public void testCompareToEqualsNullType2() { Span a = new Span(30, 1000, "b"); Span b = new Span(30, 1000); assertEquals(true, a.compareTo(b) == -1); }