package mil.nga.giat.geowave.core.index.dimension;
import mil.nga.giat.geowave.core.index.dimension.BasicDimensionDefinition;
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 BasicDimensionDefinitionTest
{
private double MINIMUM = 20;
private double MAXIMUM = 100;
private double DELTA = 1e-15;
@Test
public void testNormalizeMidValue() {
final double midValue = 60;
final double normalizedValue = 0.5;
Assert.assertEquals(
normalizedValue,
getNormalizedValueUsingBounds(
MINIMUM,
MAXIMUM,
midValue),
DELTA);
}
@Test
public void testNormalizeUpperValue() {
final double lowerValue = 20;
final double normalizedValue = 0.0;
Assert.assertEquals(
normalizedValue,
getNormalizedValueUsingBounds(
MINIMUM,
MAXIMUM,
lowerValue),
DELTA);
}
@Test
public void testNormalizeLowerValue() {
final double upperValue = 100;
final double normalizedValue = 1.0;
Assert.assertEquals(
normalizedValue,
getNormalizedValueUsingBounds(
MINIMUM,
MAXIMUM,
upperValue),
DELTA);
}
@Test
public void testNormalizeClampOutOfBoundsValue() {
final double value = 1;
final double normalizedValue = 0.0;
Assert.assertEquals(
normalizedValue,
getNormalizedValueUsingBounds(
MINIMUM,
MAXIMUM,
value),
DELTA);
}
@Test
public void testNormalizeRangesBinRangeCount() {
final double minRange = 40;
final double maxRange = 50;
final int binCount = 1;
BinRange[] binRange = getNormalizedRangesUsingBounds(
minRange,
maxRange);
Assert.assertEquals(
binCount,
binRange.length);
}
@Test
public void testNormalizeClampOutOfBoundsRanges() {
final double minRange = 1;
final double maxRange = 150;
BinRange[] binRange = getNormalizedRangesUsingBounds(
minRange,
maxRange);
Assert.assertEquals(
MINIMUM,
binRange[0].getNormalizedMin(),
DELTA);
Assert.assertEquals(
MAXIMUM,
binRange[0].getNormalizedMax(),
DELTA);
}
private double getNormalizedValueUsingBounds(
final double min,
final double max,
final double value ) {
return new BasicDimensionDefinition(
min,
max).normalize(value);
}
private BinRange[] getNormalizedRangesUsingBounds(
final double minRange,
final double maxRange ) {
return new BasicDimensionDefinition(
MINIMUM,
MAXIMUM).getNormalizedRanges(new NumericRange(
minRange,
maxRange));
}
}