Skip to content

Commit 4ef7cb9

Browse files
committed
Add tests
1 parent b429680 commit 4ef7cb9

2 files changed

Lines changed: 127 additions & 0 deletions

File tree

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
// SPDX-FileCopyrightText: Copyright the Vortex contributors
3+
4+
package dev.vortex.api;
5+
6+
import static org.junit.jupiter.api.Assertions.*;
7+
8+
import org.junit.jupiter.api.Test;
9+
10+
public final class DTypeTest {
11+
12+
@Test
13+
public void testNewFixedSizeListNonNullable() {
14+
try (var elementType = DType.newInt(false);
15+
var fslType = DType.newFixedSizeList(elementType, 3, false)) {
16+
assertEquals(DType.Variant.FIXED_SIZE_LIST, fslType.getVariant());
17+
assertFalse(fslType.isNullable());
18+
assertEquals(3, fslType.getFixedSizeListSize());
19+
20+
var innerType = fslType.getElementType();
21+
assertEquals(DType.Variant.PRIMITIVE_I32, innerType.getVariant());
22+
}
23+
}
24+
25+
@Test
26+
public void testNewFixedSizeListNullable() {
27+
try (var elementType = DType.newUtf8(true);
28+
var fslType = DType.newFixedSizeList(elementType, 5, true)) {
29+
assertEquals(DType.Variant.FIXED_SIZE_LIST, fslType.getVariant());
30+
assertTrue(fslType.isNullable());
31+
assertEquals(5, fslType.getFixedSizeListSize());
32+
33+
var innerType = fslType.getElementType();
34+
assertEquals(DType.Variant.UTF8, innerType.getVariant());
35+
}
36+
}
37+
38+
@Test
39+
public void testNewListGetElementType() {
40+
try (var elementType = DType.newDouble(false);
41+
var listType = DType.newList(elementType, false)) {
42+
assertEquals(DType.Variant.LIST, listType.getVariant());
43+
44+
var innerType = listType.getElementType();
45+
assertEquals(DType.Variant.PRIMITIVE_F64, innerType.getVariant());
46+
}
47+
}
48+
49+
@Test
50+
public void testNestedFixedSizeList() {
51+
try (var innerElement = DType.newLong(false);
52+
var innerFsl = DType.newFixedSizeList(innerElement, 2, false);
53+
var outerFsl = DType.newFixedSizeList(innerFsl, 4, true)) {
54+
assertEquals(DType.Variant.FIXED_SIZE_LIST, outerFsl.getVariant());
55+
assertTrue(outerFsl.isNullable());
56+
assertEquals(4, outerFsl.getFixedSizeListSize());
57+
58+
var inner = outerFsl.getElementType();
59+
assertEquals(DType.Variant.FIXED_SIZE_LIST, inner.getVariant());
60+
}
61+
}
62+
63+
@Test
64+
public void testFixedSizeListInStruct() {
65+
try (var elementType = DType.newFloat(false);
66+
var fslType = DType.newFixedSizeList(elementType, 3, false);
67+
var structType = DType.newStruct(
68+
new String[] {"id", "embedding"},
69+
new DType[] {DType.newInt(false), fslType},
70+
false)) {
71+
assertEquals(DType.Variant.STRUCT, structType.getVariant());
72+
73+
var fieldTypes = structType.getFieldTypes();
74+
assertEquals(2, fieldTypes.size());
75+
76+
try (var embeddingType = fieldTypes.get(1)) {
77+
assertEquals(DType.Variant.FIXED_SIZE_LIST, embeddingType.getVariant());
78+
}
79+
}
80+
}
81+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
// SPDX-FileCopyrightText: Copyright the Vortex contributors
3+
4+
package dev.vortex.spark;
5+
6+
import static org.junit.jupiter.api.Assertions.*;
7+
8+
import dev.vortex.api.DType;
9+
import dev.vortex.jni.NativeLoader;
10+
import org.apache.spark.sql.types.ArrayType;
11+
import org.apache.spark.sql.types.DataTypes;
12+
import org.junit.jupiter.api.BeforeAll;
13+
import org.junit.jupiter.api.DisplayName;
14+
import org.junit.jupiter.api.Test;
15+
16+
public final class SparkTypesTest {
17+
18+
@BeforeAll
19+
public static void loadLibrary() {
20+
NativeLoader.loadJni();
21+
}
22+
23+
@Test
24+
@DisplayName("toDataType should convert FIXED_SIZE_LIST to Spark ArrayType")
25+
public void testFixedSizeListToDataType() {
26+
try (var elementType = DType.newInt(false);
27+
var fslType = DType.newFixedSizeList(elementType, 3, true)) {
28+
var sparkType = SparkTypes.toDataType(fslType);
29+
assertInstanceOf(ArrayType.class, sparkType);
30+
ArrayType arrayType = (ArrayType) sparkType;
31+
assertEquals(DataTypes.IntegerType, arrayType.elementType());
32+
}
33+
}
34+
35+
@Test
36+
@DisplayName("toDataType should convert LIST to Spark ArrayType")
37+
public void testListToDataType() {
38+
try (var elementType = DType.newDouble(false);
39+
var listType = DType.newList(elementType, true)) {
40+
var sparkType = SparkTypes.toDataType(listType);
41+
assertInstanceOf(ArrayType.class, sparkType);
42+
ArrayType arrayType = (ArrayType) sparkType;
43+
assertEquals(DataTypes.DoubleType, arrayType.elementType());
44+
}
45+
}
46+
}

0 commit comments

Comments
 (0)