@@ -2530,4 +2530,47 @@ public void extensionWriterReader() throws Exception {
25302530 }
25312531 }
25322532 }
2533+
2534+ @ Test
2535+ void testListOfDenseUnionWriterNPE () {
2536+ // Regression test for https://github.com/apache/arrow-java/issues/399
2537+ try (ListVector listVector = ListVector .empty ("list" , allocator )) {
2538+ listVector .addOrGetVector (FieldType .nullable (MinorType .DENSEUNION .getType ()));
2539+ UnionListWriter listWriter = listVector .getWriter ();
2540+
2541+ listWriter .startList ();
2542+ listWriter .endList ();
2543+ }
2544+ }
2545+
2546+ @ Test
2547+ void testListOfDenseUnionWriterWithData () {
2548+ try (ListVector listVector = ListVector .empty ("list" , allocator )) {
2549+ listVector .addOrGetVector (FieldType .nullable (MinorType .DENSEUNION .getType ()));
2550+
2551+ UnionListWriter listWriter = listVector .getWriter ();
2552+ listWriter .startList ();
2553+ listWriter .writeInt (100 );
2554+ listWriter .writeBigInt (200L );
2555+ listWriter .endList ();
2556+
2557+ listWriter .startList ();
2558+ listWriter .writeFloat4 (3.14f );
2559+ listWriter .endList ();
2560+
2561+ listVector .setValueCount (2 );
2562+
2563+ assertEquals (2 , listVector .getValueCount ());
2564+
2565+ List <?> value0 = (List <?>) listVector .getObject (0 );
2566+ List <?> value1 = (List <?>) listVector .getObject (1 );
2567+
2568+ assertEquals (2 , value0 .size ());
2569+ assertEquals (100 , value0 .get (0 ));
2570+ assertEquals (200L , value0 .get (1 ));
2571+
2572+ assertEquals (1 , value1 .size ());
2573+ assertEquals (3.14f , value1 .get (0 ));
2574+ }
2575+ }
25332576}
0 commit comments