package mil.nga.giat.geowave.core.store.index.numeric; import java.util.ArrayList; import java.util.List; import mil.nga.giat.geowave.core.index.ByteArrayId; import mil.nga.giat.geowave.core.index.ByteArrayRange; import mil.nga.giat.geowave.core.index.lexicoder.Lexicoders; import mil.nga.giat.geowave.core.store.base.DataStoreEntryInfo.FieldInfo; import mil.nga.giat.geowave.core.store.data.PersistentValue; import org.junit.Assert; import org.junit.Test; public class NumericIndexStrategyTest { private final NumericFieldIndexStrategy strategy = new NumericFieldIndexStrategy(); private final ByteArrayId fieldId = new ByteArrayId( "fieldId"); private final int number = 10; @Test public void testInsertions() { final List<FieldInfo<Number>> fieldInfoList = new ArrayList<>(); final FieldInfo<Number> fieldInfo = new FieldInfo<>( new PersistentValue<Number>( null, number), null, null); fieldInfoList.add(fieldInfo); final List<ByteArrayId> insertionIds = strategy.getInsertionIds(fieldInfoList); Assert.assertTrue(insertionIds.contains(new ByteArrayId( Lexicoders.DOUBLE.toByteArray((double) number)))); Assert.assertTrue(insertionIds.size() == 1); } @Test public void testEquals() { final List<ByteArrayRange> ranges = strategy.getQueryRanges(new NumericEqualsConstraint( fieldId, number)); Assert.assertTrue(ranges.size() == 1); Assert.assertTrue(ranges.get( 0).equals( new ByteArrayRange( new ByteArrayId( Lexicoders.DOUBLE.toByteArray((double) number)), new ByteArrayId( Lexicoders.DOUBLE.toByteArray((double) number))))); } @Test public void testGreaterThanOrEqualTo() { final List<ByteArrayRange> ranges = strategy.getQueryRanges(new NumericGreaterThanOrEqualToConstraint( fieldId, number)); Assert.assertTrue(ranges.size() == 1); Assert.assertTrue(ranges.get( 0).equals( new ByteArrayRange( new ByteArrayId( Lexicoders.DOUBLE.toByteArray((double) number)), new ByteArrayId( Lexicoders.DOUBLE.toByteArray((double) Lexicoders.DOUBLE.getMaximumValue()))))); } @Test public void testLessThanOrEqualTo() { final NumericFieldIndexStrategy strategy = new NumericFieldIndexStrategy(); final List<ByteArrayRange> ranges = strategy.getQueryRanges(new NumericLessThanOrEqualToConstraint( fieldId, number)); Assert.assertTrue(ranges.size() == 1); Assert.assertTrue(ranges.get( 0).equals( new ByteArrayRange( new ByteArrayId( Lexicoders.DOUBLE.toByteArray((double) Lexicoders.DOUBLE.getMinimumValue())), new ByteArrayId( Lexicoders.DOUBLE.toByteArray((double) number))))); } }