@Test public void testNullableFloat() { final MaterializedField field = MaterializedField.create(EMPTY_SCHEMA_PATH, NullableFloat4Holder.TYPE); // Create a new value vector for 1024 integers try (final NullableFloat4Vector vector = (NullableFloat4Vector) TypeHelper.getNewVector(field, allocator)) { final NullableFloat4Vector.Mutator m = vector.getMutator(); vector.allocateNew(1024); // Put and set a few values. m.set(0, 100.1f); m.set(1, 101.2f); m.set(100, 102.3f); m.set(1022, 103.4f); m.set(1023, 104.5f); final NullableFloat4Vector.Accessor accessor = vector.getAccessor(); assertEquals(100.1f, accessor.get(0), 0); assertEquals(101.2f, accessor.get(1), 0); assertEquals(102.3f, accessor.get(100), 0); assertEquals(103.4f, accessor.get(1022), 0); assertEquals(104.5f, accessor.get(1023), 0); // Ensure null values throw. { boolean b = false; try { vector.getAccessor().get(3); } catch (IllegalStateException e) { b = true; } finally { assertTrue(b); } } vector.allocateNew(2048); { boolean b = false; try { accessor.get(0); } catch (IllegalStateException e) { b = true; } finally { assertTrue(b); } } } }
@Test public void testReAllocNullableFixedWidthVector() { final MaterializedField field = MaterializedField.create(EMPTY_SCHEMA_PATH, NullableFloat4Holder.TYPE); // Create a new value vector for 1024 integers try (final NullableFloat4Vector vector = (NullableFloat4Vector) TypeHelper.getNewVector(field, allocator)) { final NullableFloat4Vector.Mutator m = vector.getMutator(); vector.allocateNew(1024); assertEquals(1024, vector.getValueCapacity()); // Put values in indexes that fall within the initial allocation m.setSafe(0, 100.1f); m.setSafe(100, 102.3f); m.setSafe(1023, 104.5f); // Now try to put values in space that falls beyond the initial allocation m.setSafe(2000, 105.5f); // Check valueCapacity is more than initial allocation assertEquals(1024 * 2, vector.getValueCapacity()); final NullableFloat4Vector.Accessor accessor = vector.getAccessor(); assertEquals(100.1f, accessor.get(0), 0); assertEquals(102.3f, accessor.get(100), 0); assertEquals(104.5f, accessor.get(1023), 0); assertEquals(105.5f, accessor.get(2000), 0); // Set the valueCount to be more than valueCapacity of current allocation. This is possible // for NullableValueVectors // as we don't call setSafe for null values, but we do call setValueCount when all values are // inserted into the // vector m.setValueCount(vector.getValueCapacity() + 200); } }