2828import io .objectbox .BoxStoreBuilder ;
2929import io .objectbox .DebugFlags ;
3030import io .objectbox .TestEntity ;
31+ import io .objectbox .TestEntityCursor ;
3132import io .objectbox .query .QueryBuilder .StringOrder ;
3233
3334import static io .objectbox .TestEntity_ .*;
@@ -80,6 +81,50 @@ public void testFindStrings() {
8081 assertTrue (list .contains ("banana milk shake" ));
8182 }
8283
84+ @ Test
85+ public void testFindStrings_nullValue () {
86+ putTestEntity (null , 3 );
87+ putTestEntitiesStrings ();
88+ Query <TestEntity > query = box .query ().equal (simpleInt , 3 ).build ();
89+
90+ String [] strings = query .property (simpleString ).findStrings ();
91+ assertEquals (1 , strings .length );
92+ assertEquals ("bar" , strings [0 ]);
93+
94+ strings = query .property (simpleString ).nullValue ("****" ).findStrings ();
95+ assertEquals (2 , strings .length );
96+ assertEquals ("****" , strings [0 ]);
97+ assertEquals ("bar" , strings [1 ]);
98+
99+ putTestEntity (null , 3 );
100+
101+ assertEquals (3 , query .property (simpleString ).nullValue ("****" ).findStrings ().length );
102+ assertEquals (2 , query .property (simpleString ).nullValue ("****" ).distinct ().findStrings ().length );
103+ }
104+
105+ @ Test
106+ public void testFindInts_nullValue () {
107+ putTestEntity (null , 1 );
108+ TestEntityCursor .INT_NULL_HACK = true ;
109+ try {
110+ putTestEntities (3 );
111+ } finally {
112+ TestEntityCursor .INT_NULL_HACK = false ;
113+ }
114+ Query <TestEntity > query = box .query ().equal (simpleLong , 1001 ).build ();
115+
116+ int [] results = query .property (simpleInt ).findInts ();
117+ assertEquals (1 , results .length );
118+ assertEquals (1 , results [0 ]);
119+
120+ results = query .property (simpleInt ).nullValue (-1977 ).findInts ();
121+ assertEquals (2 , results .length );
122+ assertEquals (1 , results [0 ]);
123+ assertEquals (-1977 , results [1 ]);
124+ }
125+
126+ // TODO add null tests for other types
127+
83128 @ Test (expected = IllegalArgumentException .class )
84129 public void testFindStrings_wrongPropertyType () {
85130 putTestEntitiesStrings ();
@@ -107,7 +152,7 @@ public void testFindLongs() {
107152 public void testFindInts () {
108153 putTestEntities (5 );
109154 Query <TestEntity > query = box .query ().greater (simpleInt , 2 ).build ();
110- int [] result = query .property (simpleInt ).findInts () ;
155+ int [] result = query .property (simpleInt ).findInts ();
111156 assertEquals (3 , result .length );
112157 assertEquals (3 , result [0 ]);
113158 assertEquals (4 , result [1 ]);
@@ -124,7 +169,7 @@ public void testFindInts() {
124169 public void testFindShorts () {
125170 putTestEntities (5 );
126171 Query <TestEntity > query = box .query ().greater (simpleInt , 2 ).build ();
127- short [] result = query .property (simpleShort ).findShorts () ;
172+ short [] result = query .property (simpleShort ).findShorts ();
128173 assertEquals (3 , result .length );
129174 assertEquals (103 , result [0 ]);
130175 assertEquals (104 , result [1 ]);
@@ -143,7 +188,7 @@ public void testFindShorts() {
143188 public void testFindFloats () {
144189 putTestEntities (5 );
145190 Query <TestEntity > query = box .query ().greater (simpleInt , 2 ).build ();
146- float [] result = query .property (simpleFloat ).findFloats () ;
191+ float [] result = query .property (simpleFloat ).findFloats ();
147192 assertEquals (3 , result .length );
148193 assertEquals (200.3f , result [0 ], 0.0001f );
149194 assertEquals (200.4f , result [1 ], 0.0001f );
@@ -160,7 +205,7 @@ public void testFindFloats() {
160205 public void testFindDoubles () {
161206 putTestEntities (5 );
162207 Query <TestEntity > query = box .query ().greater (simpleInt , 2 ).build ();
163- double [] result = query .property (simpleDouble ).findDoubles () ;
208+ double [] result = query .property (simpleDouble ).findDoubles ();
164209 assertEquals (3 , result .length );
165210 assertEquals (2000.03 , result [0 ], 0.0001 );
166211 assertEquals (2000.04 , result [1 ], 0.0001 );
@@ -177,7 +222,7 @@ public void testFindDoubles() {
177222 public void testFindBytes () {
178223 putTestEntities (5 );
179224 Query <TestEntity > query = box .query ().greater (simpleByte , 12 ).build ();
180- byte [] result = query .property (simpleByte ).findBytes () ;
225+ byte [] result = query .property (simpleByte ).findBytes ();
181226 assertEquals (3 , result .length );
182227 assertEquals (13 , result [0 ]);
183228 assertEquals (14 , result [1 ]);
0 commit comments