package mil.nga.giat.geowave.core.geotime.index.dimension;
import mil.nga.giat.geowave.core.geotime.index.dimension.LongitudeDefinition;
import mil.nga.giat.geowave.core.index.dimension.bin.BinRange;
import mil.nga.giat.geowave.core.index.sfc.data.NumericRange;
import org.junit.Assert;
import org.junit.Test;
public class LongitudeDefinitionTest
{
private double DELTA = 1e-15;
@Test
public void testNormalizeWithinBoundsRanges() {
final double minRange = 10;
final double maxRange = 100;
BinRange[] binRange = getNormalizedRanges(
minRange,
maxRange);
Assert.assertEquals(
minRange,
binRange[0].getNormalizedMin(),
DELTA);
Assert.assertEquals(
maxRange,
binRange[0].getNormalizedMax(),
DELTA);
}
@Test
public void testNormalizeWithinBoundsValue() {
final double easternNormalizedValue = -160;
final double westernNormalizedValue = 160;
final double easternValue = 200;
final double westernValue = -200;
Assert.assertEquals(
easternNormalizedValue,
getNormalizedLongitudeValue(easternValue),
DELTA);
Assert.assertEquals(
westernNormalizedValue,
getNormalizedLongitudeValue(westernValue),
DELTA);
}
@Test
public void testNormalizeDateLineCrossingEast() {
final double minRange = 150;
final double maxRange = 200;
final int expectedBinCount = 2;
final BinRange[] expectedBinRanges = new BinRange[] {
new BinRange(
-180,
-160),
new BinRange(
150,
180)
};
BinRange[] binRange = getNormalizedRanges(
minRange,
maxRange);
Assert.assertEquals(
expectedBinCount,
binRange.length);
for (int i = 0; i < binRange.length; i++) {
Assert.assertEquals(
expectedBinRanges[i].getNormalizedMin(),
binRange[i].getNormalizedMin(),
DELTA);
Assert.assertEquals(
expectedBinRanges[i].getNormalizedMax(),
binRange[i].getNormalizedMax(),
DELTA);
}
}
@Test
public void testNormalizeDateLineCrossingWest() {
final double minRange = -200;
final double maxRange = -170;
final int expectedBinCount = 2;
final BinRange[] expectedBinRanges = new BinRange[] {
new BinRange(
-180,
-170),
new BinRange(
160,
180)
};
BinRange[] binRange = getNormalizedRanges(
minRange,
maxRange);
Assert.assertEquals(
expectedBinCount,
binRange.length);
for (int i = 0; i < binRange.length; i++) {
Assert.assertEquals(
expectedBinRanges[i].getNormalizedMin(),
binRange[i].getNormalizedMin(),
DELTA);
Assert.assertEquals(
expectedBinRanges[i].getNormalizedMax(),
binRange[i].getNormalizedMax(),
DELTA);
}
}
private BinRange[] getNormalizedRanges(
final double minRange,
final double maxRange ) {
return new LongitudeDefinition().getNormalizedRanges(new NumericRange(
minRange,
maxRange));
}
private double getNormalizedLongitudeValue(
final double value ) {
return LongitudeDefinition.getNormalizedLongitude(value);
}
}