package com.revolsys.util;
import org.junit.Assert;
import org.junit.Test;
import com.revolsys.util.number.Integers;
public class NumbersTest {
private void assertOverlaps(final int min1, final int max1, final int min2, final int max2,
final boolean expected) {
final boolean actual = Integers.overlaps(min1, max1, min2, max2);
final String message = min1 + "-" + max1 + " " + min2 + "-" + max2;
Assert.assertEquals(message, expected, actual);
}
@Test
public void testOverlaps() {
// same range and min/max reversed
assertOverlaps(0, 10, 0, 10, true);
assertOverlaps(10, 0, 0, 10, true);
assertOverlaps(0, 10, 10, 0, true);
assertOverlaps(10, 0, 10, 0, true);
// ends of range contained
assertOverlaps(1, 1, 1, 1, true);
assertOverlaps(1, 2, 1, 1, true);
assertOverlaps(1, 2, 2, 2, true);
assertOverlaps(1, 1, 1, 2, true);
assertOverlaps(2, 2, 1, 2, true);
// ends of range overlap
assertOverlaps(0, 1, 1, 1, true);
assertOverlaps(1, 1, 0, 1, true);
assertOverlaps(1, 1, 1, 2, true);
assertOverlaps(1, 2, 1, 1, true);
// not overlap touching
assertOverlaps(1, 1, 0, 0, false);
assertOverlaps(1, 1, 2, 2, false);
assertOverlaps(0, 0, 1, 1, false);
assertOverlaps(2, 2, 1, 1, false);
assertOverlaps(1, 2, 0, 0, false);
assertOverlaps(1, 2, 3, 3, false);
assertOverlaps(0, 0, 1, 2, false);
assertOverlaps(3, 3, 1, 2, false);
}
}