1212import com .mindee .parsing .v2 .field .ObjectField ;
1313import com .mindee .parsing .v2 .field .DynamicField .FieldType ;
1414import java .io .IOException ;
15+ import java .util .HashMap ;
1516import java .util .List ;
1617import java .util .Map ;
1718import java .util .Objects ;
@@ -189,8 +190,8 @@ void deepNestedFields_mustExposeCorrectTypes() throws IOException {
189190 class StandardFieldTypes {
190191
191192 @ Test
192- @ DisplayName ("simple / object / list variants must be recognised" )
193- void standardFieldTypes_mustExposeCorrectTypes () throws IOException {
193+ @ DisplayName ("simple fields must be recognised" )
194+ void standardFieldTypes_mustExposeSimpleFieldValues () throws IOException {
194195 InferenceResponse response = loadFromResource ("v2/inference/standard_field_types.json" );
195196 Inference inference = response .getInference ();
196197 assertNotNull (inference );
@@ -202,18 +203,25 @@ void standardFieldTypes_mustExposeCorrectTypes() throws IOException {
202203 SimpleField fieldSimpleString = fields .get ("field_simple_string" ).getSimpleField ();
203204 assertNotNull (fieldSimpleString );
204205 assertInstanceOf (String .class , fieldSimpleString .getValue ());
206+ assertEquals (fieldSimpleString .getValue (), fieldSimpleString .getStringValue ());
207+ assertThrows (ClassCastException .class , fieldSimpleString ::getDoubleValue );
208+ assertThrows (ClassCastException .class , fieldSimpleString ::getBooleanValue );
205209 assertEquals (FieldConfidence .Certain , fieldSimpleString .getConfidence ());
206210 assertInstanceOf (List .class , fieldSimpleString .getLocations ());
207211 assertEquals (1 , fieldSimpleString .getLocations ().size ());
208212
209213 SimpleField fieldSimpleFloat = fields .get ("field_simple_float" ).getSimpleField ();
210214 assertNotNull (fieldSimpleFloat );
211215 assertInstanceOf (Double .class , fieldSimpleFloat .getValue ());
216+ assertEquals (fieldSimpleFloat .getValue (), fieldSimpleFloat .getDoubleValue ());
217+ assertThrows (ClassCastException .class , fieldSimpleFloat ::getStringValue );
218+ assertThrows (ClassCastException .class , fieldSimpleFloat ::getBooleanValue );
212219 assertEquals (FieldConfidence .High , fieldSimpleFloat .getConfidence ());
213220
214221 SimpleField fieldSimpleInt = fields .get ("field_simple_int" ).getSimpleField ();
215222 assertNotNull (fieldSimpleInt );
216223 assertInstanceOf (Double .class , fieldSimpleInt .getValue ());
224+ assertEquals (fieldSimpleInt .getValue (), fieldSimpleInt .getDoubleValue ());
217225 assertEquals (FieldConfidence .Medium , fieldSimpleInt .getConfidence ());
218226
219227 SimpleField fieldSimpleZero = fields .get ("field_simple_zero" ).getSimpleField ();
@@ -224,47 +232,128 @@ void standardFieldTypes_mustExposeCorrectTypes() throws IOException {
224232 SimpleField fieldSimpleBool = fields .get ("field_simple_bool" ).getSimpleField ();
225233 assertNotNull (fieldSimpleBool );
226234 assertInstanceOf (Boolean .class , fieldSimpleBool .getValue ());
235+ assertEquals (fieldSimpleBool .getValue (), fieldSimpleBool .getBooleanValue ());
236+ assertThrows (ClassCastException .class , fieldSimpleBool ::getStringValue );
237+ assertThrows (ClassCastException .class , fieldSimpleBool ::getDoubleValue );
227238
228239 SimpleField fieldSimpleNull = fields .get ("field_simple_null" ).getSimpleField ();
229240 assertNotNull (fieldSimpleNull );
230241 assertNull (fieldSimpleNull .getValue ());
242+ assertNull (fieldSimpleNull .getStringValue ());
243+ assertNull (fieldSimpleNull .getBooleanValue ());
244+ assertNull (fieldSimpleNull .getDoubleValue ());
245+ }
246+
247+ @ Test
248+ @ DisplayName ("simple list fields must be recognised" )
249+ void standardFieldTypes_mustExposeSimpleListFieldValues () throws IOException {
250+ InferenceResponse response = loadFromResource ("v2/inference/standard_field_types.json" );
251+ Inference inference = response .getInference ();
252+ assertNotNull (inference );
253+
254+ InferenceFields fields = inference .getResult ().getFields ();
231255
232- ListField fieldSimpleList = fields .get ("field_simple_list" ).getListField ();
233- assertNotNull (fieldSimpleList );
234- List <DynamicField > simpleItems = fieldSimpleList .getItems ();
256+ ListField listField = fields .get ("field_simple_list" ).getListField ();
257+ assertNotNull (listField );
258+
259+ // Low level (dynamic) access
260+ List <DynamicField > dynamicItems = listField .getItems ();
261+ assertEquals (2 , dynamicItems .size ());
262+ SimpleField firstDynamicItem = dynamicItems .get (0 ).getSimpleField ();
263+ assertNotNull (firstDynamicItem );
264+ assertEquals (FieldConfidence .Medium , firstDynamicItem .getConfidence ());
265+ assertInstanceOf (String .class , firstDynamicItem .getValue ());
266+ for (DynamicField item : dynamicItems ) {
267+ SimpleField itemField = item .getSimpleField ();
268+ assertInstanceOf (String .class , itemField .getValue ());
269+ assertEquals (itemField .getValue (), itemField .getStringValue ());
270+ assertEquals (1 , itemField .getLocations ().size ());
271+ }
272+
273+ // High level (typed) access
274+ List <SimpleField > simpleItems = listField .getSimpleItems ();
235275 assertEquals (2 , simpleItems .size ());
236- SimpleField firstSimpleItem = simpleItems .get (0 ).getSimpleField ();
237- assertNotNull (firstSimpleItem );
276+ SimpleField firstSimpleItem = simpleItems .get (0 );
238277 assertEquals (FieldConfidence .Medium , firstSimpleItem .getConfidence ());
239- assertInstanceOf (String .class , firstSimpleItem .getValue ());
240- for (DynamicField item : fieldSimpleList .getItems ()) {
241- SimpleField itemField = item .getSimpleField ();
278+ for (SimpleField itemField : simpleItems ) {
242279 assertInstanceOf (String .class , itemField .getValue ());
280+ assertEquals (itemField .getValue (), itemField .getStringValue ());
243281 assertEquals (1 , itemField .getLocations ().size ());
244282 }
245283
284+ assertThrows (IllegalStateException .class , listField ::getObjectItems );
285+ }
286+
287+ @ Test
288+ @ DisplayName ("object list fields must be recognised" )
289+ void standardFieldTypes_mustExposeObjectListFieldValues () throws IOException {
290+ InferenceResponse response = loadFromResource ("v2/inference/standard_field_types.json" );
291+ Inference inference = response .getInference ();
292+ assertNotNull (inference );
293+
294+ InferenceFields fields = inference .getResult ().getFields ();
295+
296+ ListField listField = fields .get ("field_object_list" ).getListField ();
297+ assertNotNull (listField );
298+
299+ List <DynamicField > dynamicItems = listField .getItems ();
300+ assertEquals (2 , dynamicItems .size ());
301+ ObjectField firstDynamicItem = dynamicItems .get (0 ).getObjectField ();
302+ assertEquals (
303+ FieldConfidence .Low ,
304+ firstDynamicItem .getFields ().get ("subfield_1" ).getSimpleField ().getConfidence ()
305+ );
306+ for (DynamicField item : dynamicItems ) {
307+ ObjectField itemField = item .getObjectField ();
308+ assertNotNull (itemField );
309+ InferenceFields itemFields = itemField .getFields ();
310+ assertEquals (2 , itemFields .size ());
311+ }
312+
313+ List <ObjectField > objectItems = listField .getObjectItems ();
314+ assertEquals (2 , objectItems .size ());
315+ ObjectField firstObjectItem = objectItems .get (0 );
316+ assertEquals (
317+ FieldConfidence .Low ,
318+ firstObjectItem .getSimpleFields ().get ("subfield_1" ).getConfidence ()
319+ );
320+ for (ObjectField itemField : objectItems ) {
321+ assertNotNull (itemField );
322+ HashMap <String , SimpleField > itemFields = itemField .getSimpleFields ();
323+ assertEquals (2 , itemFields .size ());
324+ InferenceFields itemSubFields = itemField .getFields ();
325+ SimpleField itemSubfield1 = itemSubFields .getSimpleField ("subfield_1" );
326+ assertInstanceOf (String .class , itemSubfield1 .getValue ());
327+ for (Map .Entry <String , SimpleField > entry : itemFields .entrySet ()) {
328+ SimpleField subfield = entry .getValue ();
329+ assertEquals (subfield .getValue (), subfield .getStringValue ());
330+ }
331+ }
332+
333+ assertThrows (IllegalStateException .class , listField ::getSimpleItems );
334+ }
335+
336+ @ Test
337+ @ DisplayName ("simple / object / list variants must be recognised" )
338+ void standardFieldTypes_mustExposeObjectFieldValues () throws IOException {
339+ InferenceResponse response = loadFromResource ("v2/inference/standard_field_types.json" );
340+ Inference inference = response .getInference ();
341+ assertNotNull (inference );
342+
343+ InferenceFields fields = inference .getResult ().getFields ();
344+
246345 ObjectField fieldObject = fields .get ("field_object" ).getObjectField ();
247346 assertNotNull (fieldObject );
248347 InferenceFields fieldObjectFields = fieldObject .getFields ();
348+
249349 assertEquals (2 , fieldObjectFields .size ());
250350 SimpleField subfield1 = fieldObjectFields .get ("subfield_1" ).getSimpleField ();
251351 assertInstanceOf (String .class , subfield1 .getValue ());
252352 assertEquals (FieldConfidence .High , subfield1 .getConfidence ());
253353
254- ListField fieldObjectList = fields .get ("field_object_list" ).getListField ();
255- assertNotNull (fieldObjectList );
256- List <DynamicField > objectItems = fieldObjectList .getItems ();
257- assertEquals (2 , objectItems .size ());
258- ObjectField firstObjectItem = objectItems .get (0 ).getObjectField ();
259- assertNotNull (firstObjectItem );
260- assertInstanceOf (
261- String .class ,
262- firstObjectItem .getFields ().get ("subfield_1" ).getSimpleField ().getValue ()
263- );
264- for (DynamicField item : fieldObjectList .getItems ()) {
265- SimpleField listSubfield1 = item .getObjectField ().getFields ().get ("subfield_1" ).getSimpleField ();
266- assertInstanceOf (String .class , listSubfield1 .getValue ());
267- assertEquals (1 , listSubfield1 .getLocations ().size ());
354+ for (Map .Entry <String , DynamicField > entry : fieldObjectFields .entrySet ()) {
355+ String fieldName = entry .getKey ();
356+ SimpleField subField = entry .getValue ().getSimpleField ();
268357 }
269358 }
270359 }
0 commit comments