Skip to content

Commit e6bb3e3

Browse files
improve enum types testing
1 parent 84814ba commit e6bb3e3

File tree

1 file changed

+70
-28
lines changed

1 file changed

+70
-28
lines changed

src/test/java/io/tiledb/java/api/DatatypeTest.java

Lines changed: 70 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package io.tiledb.java.api;
22

33
import static io.tiledb.java.api.ArrayType.TILEDB_DENSE;
4+
import static io.tiledb.java.api.Constants.TILEDB_VAR_NUM;
45
import static io.tiledb.java.api.Layout.TILEDB_ROW_MAJOR;
56
import static io.tiledb.java.api.QueryType.TILEDB_READ;
67
import static io.tiledb.java.api.QueryType.TILEDB_WRITE;
8+
import static io.tiledb.libtiledb.tiledb_query_condition_op_t.TILEDB_EQ;
79

810
import java.math.BigInteger;
911
import java.util.ArrayList;
@@ -106,6 +108,7 @@ private List<Datatype> allDatatypes() {
106108

107109
@Test
108110
public void testEnumeratedDatatype() throws Exception {
111+
// test api
109112
Dimension<Integer> rows =
110113
new Dimension<>(ctx, "rows", Integer.class, new Pair<Integer, Integer>(1, 4), 2);
111114

@@ -118,25 +121,28 @@ public void testEnumeratedDatatype() throws Exception {
118121
schema.setTileOrder(TILEDB_ROW_MAJOR);
119122
schema.setCellOrder(TILEDB_ROW_MAJOR);
120123
schema.setDomain(domain);
121-
schema.addAttribute(a1);
122124

123-
NativeArray enums = new NativeArray(ctx, new int[] {0, 1, 2, 3}, Datatype.TILEDB_INT32);
125+
NativeArray enumsOffsets =
126+
new NativeArray(ctx, new long[] {0, 2, 4, 6}, Datatype.TILEDB_UINT64);
127+
NativeArray enums = new NativeArray(ctx, "aabbccdd", Datatype.TILEDB_STRING_ASCII);
124128

125129
Enumeration en =
126130
new Enumeration(
127131
ctx,
128132
"test_enum",
129-
1,
133+
TILEDB_VAR_NUM,
130134
Datatype.TILEDB_INT32,
131135
false,
132136
enums,
133-
BigInteger.valueOf(enums.getSize() * Datatype.TILEDB_INT32.getNativeSize()),
134-
null,
135-
BigInteger.ZERO);
137+
BigInteger.valueOf(enums.getSize() * Datatype.TILEDB_STRING_ASCII.getNativeSize()),
138+
enumsOffsets,
139+
BigInteger.valueOf(enumsOffsets.getSize() * Datatype.TILEDB_UINT64.getNativeSize()));
136140

137141
schema.addEnumeration(en);
138142
a1.setEnumerationName("test_enum");
139143

144+
schema.addAttribute(a1);
145+
140146
Array.create(arrayURI, schema);
141147

142148
Array array = new Array(ctx, arrayURI);
@@ -147,31 +153,67 @@ public void testEnumeratedDatatype() throws Exception {
147153

148154
Assert.assertEquals("test_enum", e.getName());
149155
Assert.assertEquals(Datatype.TILEDB_INT32, e.getType());
150-
Assert.assertEquals(1, e.getCellValNum());
151156
Assert.assertFalse(e.getOrdered());
152-
Assert.assertArrayEquals(new int[] {0, 1, 2, 3}, (int[]) e.getData());
157+
// Assert.assertArrayEquals(new int[] {0, 1, 2, 3}, (int[]) e.getData());
153158
array.close();
154159

155-
// Schema evolution
156-
ArraySchemaEvolution evolution = new ArraySchemaEvolution(ctx);
157-
Enumeration en2 =
158-
new Enumeration(
159-
ctx,
160-
"test_enum2",
161-
1,
162-
Datatype.TILEDB_INT32,
163-
false,
164-
enums,
165-
BigInteger.valueOf(enums.getSize() * Datatype.TILEDB_INT32.getNativeSize()),
166-
null,
167-
BigInteger.ZERO);
168-
evolution.addEnumeration(en2);
169-
evolution.evolveArray(arrayURI);
170-
171-
// reopen array
172-
array = new Array(ctx, arrayURI);
173-
e = array.getEnumeration("test_enum2");
174-
Assert.assertEquals(e.getName(), "test_enum2");
160+
// test data write
161+
NativeArray na1 = new NativeArray(ctx, new int[] {0, 1, 2, 10}, Datatype.TILEDB_INT32);
162+
array = new Array(ctx, arrayURI, TILEDB_WRITE);
163+
Query query = new Query(array, TILEDB_WRITE);
164+
165+
query.setDataBuffer("a1", na1);
166+
query.submit();
167+
168+
query.close();
169+
array.close();
170+
171+
// test data read
172+
array = new Array(ctx, arrayURI, TILEDB_READ);
173+
query = new Query(array, TILEDB_READ);
174+
SubArray sub = new SubArray(ctx, array);
175+
sub.addRange(0, 1, 4, null);
176+
query.setSubarray(sub);
177+
query.setDataBuffer("a1", new NativeArray(ctx, 4, Datatype.TILEDB_INT32));
178+
query.submit();
179+
180+
int[] a1Result = (int[]) query.getBuffer("a1");
181+
Assert.assertArrayEquals(new int[] {0, 1, 2, 10}, a1Result);
182+
183+
// test data read with QC
184+
query = new Query(array, TILEDB_READ);
185+
query.setSubarray(sub);
186+
QueryCondition qc =
187+
new QueryCondition(ctx, Datatype.TILEDB_STRING_ASCII, "a1", "aa", TILEDB_EQ);
188+
query.setCondition(qc);
189+
query.setDataBuffer("a1", new NativeArray(ctx, 4, Datatype.TILEDB_INT32));
190+
query.submit();
191+
int[] a1ResultAfterQC = (int[]) query.getBuffer("a1");
192+
Assert.assertArrayEquals(
193+
new int[] {0, Integer.MIN_VALUE, Integer.MIN_VALUE, 0}, a1ResultAfterQC);
194+
195+
// test Schema evolution
196+
// ArraySchemaEvolution evolution = new ArraySchemaEvolution(ctx);
197+
// Enumeration en2 =
198+
// new Enumeration(
199+
// ctx,
200+
// "test_enum2",
201+
// TILEDB_VAR_NUM,
202+
// Datatype.TILEDB_INT32,
203+
// false,
204+
// enums,
205+
// BigInteger.valueOf(enums.getSize() *
206+
// Datatype.TILEDB_STRING_ASCII.getNativeSize()),
207+
// enumsOffsets,
208+
// BigInteger.valueOf(enumsOffsets.getSize() *
209+
// Datatype.TILEDB_UINT64.getNativeSize()));
210+
// evolution.addEnumeration(en2);
211+
// evolution.evolveArray(arrayURI);
212+
//
213+
// // reopen array
214+
// array = new Array(ctx, arrayURI);
215+
// e = array.getEnumeration("test_enum2");
216+
// Assert.assertEquals(e.getName(), "test_enum2");
175217
}
176218

177219
public void arrayCreate() throws Exception {

0 commit comments

Comments
 (0)