Skip to content

Commit 5266e4d

Browse files
committed
TestRangeEqualsVisitor
1 parent 304fe6f commit 5266e4d

1 file changed

Lines changed: 52 additions & 0 deletions

File tree

vector/src/test/java/org/apache/arrow/vector/compare/TestRangeEqualsVisitor.java

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import java.nio.charset.Charset;
2424
import java.util.Arrays;
25+
import java.util.List;
2526
import org.apache.arrow.memory.BufferAllocator;
2627
import org.apache.arrow.memory.RootAllocator;
2728
import org.apache.arrow.vector.BigIntVector;
@@ -39,6 +40,7 @@
3940
import org.apache.arrow.vector.complex.LargeListViewVector;
4041
import org.apache.arrow.vector.complex.ListVector;
4142
import org.apache.arrow.vector.complex.ListViewVector;
43+
import org.apache.arrow.vector.complex.RunEndEncodedVector;
4244
import org.apache.arrow.vector.complex.StructVector;
4345
import org.apache.arrow.vector.complex.UnionVector;
4446
import org.apache.arrow.vector.complex.impl.NullableStructWriter;
@@ -53,7 +55,9 @@
5355
import org.apache.arrow.vector.holders.NullableUInt4Holder;
5456
import org.apache.arrow.vector.types.FloatingPointPrecision;
5557
import org.apache.arrow.vector.types.Types;
58+
import org.apache.arrow.vector.types.Types.MinorType;
5659
import org.apache.arrow.vector.types.pojo.ArrowType;
60+
import org.apache.arrow.vector.types.pojo.ArrowType.RunEndEncoded;
5761
import org.apache.arrow.vector.types.pojo.Field;
5862
import org.apache.arrow.vector.types.pojo.FieldType;
5963
import org.junit.jupiter.api.AfterEach;
@@ -1003,6 +1007,54 @@ public void testLargeListViewVectorApproxEquals() {
10031007
}
10041008
}
10051009

1010+
@Test
1011+
public void testRunEndEncodedFloat8ApproxEquals() {
1012+
try (final Float8Vector vector1 = new Float8Vector("float", allocator);
1013+
final Float8Vector vector2 = new Float8Vector("float", allocator);
1014+
final Float8Vector vector3 = new Float8Vector("float", allocator);
1015+
final IntVector reeVector = new IntVector("ree", allocator)) {
1016+
1017+
final float epsilon = 1.0E-6f;
1018+
setVector(vector1, 1.1, 2.2);
1019+
setVector(vector2, 1.1 + epsilon / 2, 2.2 + epsilon / 2);
1020+
setVector(vector3, 1.1 + epsilon * 2, 2.2 + epsilon * 2);
1021+
setVector(reeVector, 1, 3);
1022+
1023+
ArrowType type = MinorType.FLOAT8.getType();
1024+
final FieldType valueType = FieldType.notNullable(type);
1025+
final FieldType runEndType = FieldType.notNullable(MinorType.INT.getType());
1026+
1027+
final Field valueField = new Field("value", valueType, null);
1028+
final Field runEndField = new Field("ree", runEndType, null);
1029+
1030+
Field field =
1031+
new Field(
1032+
"ree_float",
1033+
FieldType.notNullable(RunEndEncoded.INSTANCE),
1034+
List.of(runEndField, valueField));
1035+
1036+
try (final RunEndEncodedVector encodedVector1 =
1037+
new RunEndEncodedVector(field, allocator, reeVector, vector1, null);
1038+
final RunEndEncodedVector encodedVector2 =
1039+
new RunEndEncodedVector(field, allocator, reeVector, vector2, null);
1040+
final RunEndEncodedVector encodedVector3 =
1041+
new RunEndEncodedVector(field, allocator, reeVector, vector3, null)) {
1042+
1043+
encodedVector1.setValueCount(3);
1044+
encodedVector2.setValueCount(3);
1045+
encodedVector3.setValueCount(3);
1046+
1047+
Range range = new Range(0, 0, encodedVector1.getValueCount());
1048+
assertTrue(
1049+
new ApproxEqualsVisitor(encodedVector1, encodedVector2, epsilon, epsilon)
1050+
.rangeEquals(range));
1051+
assertFalse(
1052+
new ApproxEqualsVisitor(encodedVector1, encodedVector3, epsilon, epsilon)
1053+
.rangeEquals(range));
1054+
}
1055+
}
1056+
}
1057+
10061058
private void writeStructVector(NullableStructWriter writer, int value1, long value2) {
10071059
writer.start();
10081060
writer.integer("f0").writeInt(value1);

0 commit comments

Comments
 (0)