1212import com .mindee .parsing .v2 .field .ObjectField ;
1313import com .mindee .parsing .v2 .field .DynamicField .FieldType ;
1414import java .io .IOException ;
15+ import java .util .HashMap ;
16+ import java .util .LinkedHashMap ;
1517import java .util .List ;
1618import java .util .Map ;
1719import java .util .Objects ;
@@ -189,8 +191,8 @@ void deepNestedFields_mustExposeCorrectTypes() throws IOException {
189191 class StandardFieldTypes {
190192
191193 @ Test
192- @ DisplayName ("simple / object / list variants must be recognised" )
193- void standardFieldTypes_mustExposeCorrectTypes () throws IOException {
194+ @ DisplayName ("simple fields must be recognised" )
195+ void standardFieldTypes_mustExposeSimpleFieldValues () throws IOException {
194196 InferenceResponse response = loadFromResource ("v2/inference/standard_field_types.json" );
195197 Inference inference = response .getInference ();
196198 assertNotNull (inference );
@@ -202,18 +204,25 @@ void standardFieldTypes_mustExposeCorrectTypes() throws IOException {
202204 SimpleField fieldSimpleString = fields .get ("field_simple_string" ).getSimpleField ();
203205 assertNotNull (fieldSimpleString );
204206 assertInstanceOf (String .class , fieldSimpleString .getValue ());
207+ assertEquals (fieldSimpleString .getValue (), fieldSimpleString .getStringValue ());
208+ assertThrows (ClassCastException .class , fieldSimpleString ::getDoubleValue );
209+ assertThrows (ClassCastException .class , fieldSimpleString ::getBooleanValue );
205210 assertEquals (FieldConfidence .Certain , fieldSimpleString .getConfidence ());
206211 assertInstanceOf (List .class , fieldSimpleString .getLocations ());
207212 assertEquals (1 , fieldSimpleString .getLocations ().size ());
208213
209214 SimpleField fieldSimpleFloat = fields .get ("field_simple_float" ).getSimpleField ();
210215 assertNotNull (fieldSimpleFloat );
211216 assertInstanceOf (Double .class , fieldSimpleFloat .getValue ());
217+ assertEquals (fieldSimpleFloat .getValue (), fieldSimpleFloat .getDoubleValue ());
218+ assertThrows (ClassCastException .class , fieldSimpleFloat ::getStringValue );
219+ assertThrows (ClassCastException .class , fieldSimpleFloat ::getBooleanValue );
212220 assertEquals (FieldConfidence .High , fieldSimpleFloat .getConfidence ());
213221
214222 SimpleField fieldSimpleInt = fields .get ("field_simple_int" ).getSimpleField ();
215223 assertNotNull (fieldSimpleInt );
216224 assertInstanceOf (Double .class , fieldSimpleInt .getValue ());
225+ assertEquals (fieldSimpleInt .getValue (), fieldSimpleInt .getDoubleValue ());
217226 assertEquals (FieldConfidence .Medium , fieldSimpleInt .getConfidence ());
218227
219228 SimpleField fieldSimpleZero = fields .get ("field_simple_zero" ).getSimpleField ();
@@ -224,47 +233,136 @@ void standardFieldTypes_mustExposeCorrectTypes() throws IOException {
224233 SimpleField fieldSimpleBool = fields .get ("field_simple_bool" ).getSimpleField ();
225234 assertNotNull (fieldSimpleBool );
226235 assertInstanceOf (Boolean .class , fieldSimpleBool .getValue ());
236+ assertEquals (fieldSimpleBool .getValue (), fieldSimpleBool .getBooleanValue ());
237+ assertThrows (ClassCastException .class , fieldSimpleBool ::getStringValue );
238+ assertThrows (ClassCastException .class , fieldSimpleBool ::getDoubleValue );
227239
228240 SimpleField fieldSimpleNull = fields .get ("field_simple_null" ).getSimpleField ();
229241 assertNotNull (fieldSimpleNull );
230242 assertNull (fieldSimpleNull .getValue ());
243+ assertNull (fieldSimpleNull .getStringValue ());
244+ assertNull (fieldSimpleNull .getBooleanValue ());
245+ assertNull (fieldSimpleNull .getDoubleValue ());
246+ }
247+
248+ @ Test
249+ @ DisplayName ("simple list fields must be recognised" )
250+ void standardFieldTypes_mustExposeSimpleListFieldValues () throws IOException {
251+ InferenceResponse response = loadFromResource ("v2/inference/standard_field_types.json" );
252+ Inference inference = response .getInference ();
253+ assertNotNull (inference );
254+
255+ InferenceFields fields = inference .getResult ().getFields ();
256+
257+ ListField listField = fields .get ("field_simple_list" ).getListField ();
258+ assertNotNull (listField );
259+
260+ // Low level (dynamic) access
261+ List <DynamicField > dynamicItems = listField .getItems ();
262+ assertEquals (2 , dynamicItems .size ());
263+ SimpleField firstDynamicItem = dynamicItems .get (0 ).getSimpleField ();
264+ assertNotNull (firstDynamicItem );
265+ assertEquals (FieldConfidence .Medium , firstDynamicItem .getConfidence ());
266+ assertInstanceOf (String .class , firstDynamicItem .getValue ());
267+ for (DynamicField item : dynamicItems ) {
268+ SimpleField itemField = item .getSimpleField ();
269+ assertInstanceOf (String .class , itemField .getValue ());
270+ assertEquals (itemField .getValue (), itemField .getStringValue ());
271+ assertEquals (1 , itemField .getLocations ().size ());
272+ }
231273
232- ListField fieldSimpleList = fields .get ("field_simple_list" ).getListField ();
233- assertNotNull (fieldSimpleList );
234- List <DynamicField > simpleItems = fieldSimpleList .getItems ();
274+ // High level (typed) access
275+ List <SimpleField > simpleItems = listField .getSimpleItems ();
235276 assertEquals (2 , simpleItems .size ());
236- SimpleField firstSimpleItem = simpleItems .get (0 ).getSimpleField ();
237- assertNotNull (firstSimpleItem );
277+ SimpleField firstSimpleItem = simpleItems .get (0 );
238278 assertEquals (FieldConfidence .Medium , firstSimpleItem .getConfidence ());
239- assertInstanceOf (String .class , firstSimpleItem .getValue ());
240- for (DynamicField item : fieldSimpleList .getItems ()) {
241- SimpleField itemField = item .getSimpleField ();
279+ for (SimpleField itemField : simpleItems ) {
242280 assertInstanceOf (String .class , itemField .getValue ());
281+ assertEquals (itemField .getValue (), itemField .getStringValue ());
243282 assertEquals (1 , itemField .getLocations ().size ());
244283 }
245284
246- ObjectField fieldObject = fields .get ("field_object" ).getObjectField ();
247- assertNotNull (fieldObject );
248- InferenceFields fieldObjectFields = fieldObject .getFields ();
249- assertEquals (2 , fieldObjectFields .size ());
250- SimpleField subfield1 = fieldObjectFields .get ("subfield_1" ).getSimpleField ();
251- assertInstanceOf (String .class , subfield1 .getValue ());
252- assertEquals (FieldConfidence .High , subfield1 .getConfidence ());
253-
254- ListField fieldObjectList = fields .get ("field_object_list" ).getListField ();
255- assertNotNull (fieldObjectList );
256- List <DynamicField > objectItems = fieldObjectList .getItems ();
285+ assertThrows (IllegalStateException .class , listField ::getObjectItems );
286+ }
287+
288+ @ Test
289+ @ DisplayName ("object list fields must be recognised" )
290+ void standardFieldTypes_mustExposeObjectListFieldValues () throws IOException {
291+ InferenceResponse response = loadFromResource ("v2/inference/standard_field_types.json" );
292+ Inference inference = response .getInference ();
293+ assertNotNull (inference );
294+
295+ InferenceFields fields = inference .getResult ().getFields ();
296+
297+ ListField listField = fields .get ("field_object_list" ).getListField ();
298+ assertNotNull (listField );
299+
300+ List <DynamicField > dynamicItems = listField .getItems ();
301+ assertEquals (2 , dynamicItems .size ());
302+ ObjectField firstDynamicItem = dynamicItems .get (0 ).getObjectField ();
303+ assertEquals (
304+ FieldConfidence .Low ,
305+ firstDynamicItem .getFields ().get ("subfield_1" ).getSimpleField ().getConfidence ()
306+ );
307+ for (DynamicField item : dynamicItems ) {
308+ ObjectField itemField = item .getObjectField ();
309+ assertNotNull (itemField );
310+ InferenceFields itemFields = itemField .getFields ();
311+ assertEquals (2 , itemFields .size ());
312+ }
313+
314+ List <ObjectField > objectItems = listField .getObjectItems ();
257315 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 ()
316+ ObjectField firstObjectItem = objectItems .get (0 );
317+ assertEquals (
318+ FieldConfidence .Low ,
319+ firstObjectItem .getSimpleFields ().get ("subfield_1" ).getConfidence ()
263320 );
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 ());
321+ for (ObjectField itemField : objectItems ) {
322+ assertNotNull (itemField );
323+ HashMap <String , SimpleField > itemFields = itemField .getSimpleFields ();
324+ assertEquals (2 , itemFields .size ());
325+ InferenceFields itemSubFields = itemField .getFields ();
326+ SimpleField itemSubfield1 = itemSubFields .getSimpleField ("subfield_1" );
327+ assertInstanceOf (String .class , itemSubfield1 .getValue ());
328+ for (Map .Entry <String , SimpleField > entry : itemFields .entrySet ()) {
329+ SimpleField subfield = entry .getValue ();
330+ assertEquals (subfield .getValue (), subfield .getStringValue ());
331+ }
332+ }
333+
334+ assertThrows (IllegalStateException .class , listField ::getSimpleItems );
335+ }
336+
337+ @ Test
338+ @ DisplayName ("simple / object / list variants must be recognised" )
339+ void standardFieldTypes_mustExposeObjectFieldValues () throws IOException {
340+ InferenceResponse response = loadFromResource ("v2/inference/standard_field_types.json" );
341+ Inference inference = response .getInference ();
342+ assertNotNull (inference );
343+
344+ InferenceFields fields = inference .getResult ().getFields ();
345+
346+ ObjectField fieldObject = fields .get ("field_object" ).getObjectField ();
347+ assertNotNull (fieldObject );
348+
349+ InferenceFields subFieldsDynamic = fieldObject .getFields ();
350+ assertEquals (2 , subFieldsDynamic .size ());
351+ SimpleField dynamicSubfield1 = subFieldsDynamic .get ("subfield_1" ).getSimpleField ();
352+ assertInstanceOf (String .class , dynamicSubfield1 .getValue ());
353+ assertEquals (FieldConfidence .High , dynamicSubfield1 .getConfidence ());
354+ for (Map .Entry <String , DynamicField > entry : subFieldsDynamic .entrySet ()) {
355+ String fieldName = entry .getKey ();
356+ SimpleField subField = entry .getValue ().getSimpleField ();
357+ }
358+
359+ LinkedHashMap <String , SimpleField > subFieldsSimple = fieldObject .getSimpleFields ();
360+ assertEquals (2 , subFieldsSimple .size ());
361+ SimpleField simpleSubfield1 = subFieldsSimple .get ("subfield_1" );
362+ assertEquals (FieldConfidence .High , simpleSubfield1 .getConfidence ());
363+ for (Map .Entry <String , SimpleField > entry : subFieldsSimple .entrySet ()) {
364+ String fieldName = entry .getKey ();
365+ SimpleField subField = entry .getValue ();
268366 }
269367 }
270368 }
0 commit comments