Skip to content

Instantly share code, notes, and snippets.

@DanielHons
Created May 19, 2020 12:20
Show Gist options
  • Save DanielHons/e25ed9fa54bfd1da3ae6c18959f06fb7 to your computer and use it in GitHub Desktop.
Save DanielHons/e25ed9fa54bfd1da3ae6c18959f06fb7 to your computer and use it in GitHub Desktop.
One-liner to compare time ranges for overlapping
package io.myplant.maintenanceevents.server.validation;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.junit.Test;
import java.sql.Time;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class OverlapTest {
@Data
@AllArgsConstructor
private static class TimeRange{
private Long left;
private Long right;
}
private boolean overlaps(TimeRange a, TimeRange b){
return a.left.compareTo(b.right) == b.left.compareTo(a.right);
}
@Test
public void overlaps1() {
assertTrue(overlaps(new TimeRange(5L,10L),new TimeRange(9L,11L)));
}
@Test
public void overlaps2() {
assertTrue(overlaps(new TimeRange(9L,11L),new TimeRange(5L,10L)));
}
@Test
public void nonOverlaps1() {
assertFalse(overlaps(new TimeRange(9L,11L),new TimeRange(11L,12L)));
}
@Test
public void nonOverlaps2() {
assertFalse(overlaps(new TimeRange(11L,12L),new TimeRange(9L,11L)));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment