@@ -364,8 +364,8 @@ public void contentOperations() {
364364 assertTrue ("2. content array found" , jsonObject .get ("content" ) instanceof JSONArray );
365365 JSONArray jsonArray = jsonObject .getJSONArray ("content" );
366366 assertTrue ("2. array size" , jsonArray .length () == 2 );
367- assertTrue ("2. content array entry 1 " , "if (a < b && a > 0) then return" .equals (jsonArray .get (0 )));
368- assertTrue ("2. content array entry 2 " , "here is another cdata" .equals (jsonArray .get (1 )));
367+ assertTrue ("2. content array entry 0 " , "if (a < b && a > 0) then return" .equals (jsonArray .get (0 )));
368+ assertTrue ("2. content array entry 1 " , "here is another cdata" .equals (jsonArray .get (1 )));
369369
370370 /**
371371 * text content is accumulated in a "content" inside a local JSONObject.
@@ -388,8 +388,8 @@ public void contentOperations() {
388388 assertTrue ("4. content array found" , jsonObject .get ("tag1" ) instanceof JSONArray );
389389 jsonArray = jsonObject .getJSONArray ("tag1" );
390390 assertTrue ("4. array size" , jsonArray .length () == 3 );
391- assertTrue ("4. content array entry 1 " , "value 1" .equals (jsonArray .get (0 )));
392- assertTrue ("4. content array entry 2 " , jsonArray .getInt (1 ) == 2 );
391+ assertTrue ("4. content array entry 0 " , "value 1" .equals (jsonArray .get (0 )));
392+ assertTrue ("4. content array entry 1 " , jsonArray .getInt (1 ) == 2 );
393393 assertTrue ("4. content array entry 2" , jsonArray .getBoolean (2 ) == true );
394394
395395 /**
@@ -407,8 +407,8 @@ public void contentOperations() {
407407 assertTrue ("5. contained content jsonArray found" , jsonObject .get ("content" ) instanceof JSONArray );
408408 jsonArray = jsonObject .getJSONArray ("content" );
409409 assertTrue ("5. array size" , jsonArray .length () == 2 );
410- assertTrue ("5. content array entry 1 " , "val1" .equals (jsonArray .get (0 )));
411- assertTrue ("5. content array entry 2 " , "val2" .equals (jsonArray .get (1 )));
410+ assertTrue ("5. content array entry 0 " , "val1" .equals (jsonArray .get (0 )));
411+ assertTrue ("5. content array entry 1 " , "val2" .equals (jsonArray .get (1 )));
412412
413413 /**
414414 * If there is only 1 complex text content, then it is accumulated in a
@@ -421,5 +421,22 @@ public void contentOperations() {
421421 jsonObject = jsonObject .getJSONObject ("tag1" );
422422 assertTrue ("6. contained content found" , "val1" .equals (jsonObject .get ("content" )));
423423 assertTrue ("6. contained tag2" , "" .equals (jsonObject .get ("tag2" )));
424- }
424+
425+ /**
426+ * In this corner case, the content sibling happens to have key=content
427+ * We end up with an array within an array, and no content element.
428+ * This is probably a bug.
429+ */
430+ xmlStr = "<tag1>val1<content/></tag1>" ;
431+ jsonObject = XML .toJSONObject (xmlStr );
432+ assertTrue ("7. 1 item" , 1 == jsonObject .length ());
433+ assertTrue ("7. jsonArray found" , jsonObject .get ("tag1" ) instanceof JSONArray );
434+ jsonArray = jsonObject .getJSONArray ("tag1" );
435+ assertTrue ("array size 1" , jsonArray .length () == 1 );
436+ assertTrue ("7. contained array found" , jsonArray .get (0 ) instanceof JSONArray );
437+ jsonArray = jsonArray .getJSONArray (0 );
438+ assertTrue ("7. inner array size 2" , jsonArray .length () == 2 );
439+ assertTrue ("7. inner array item 0" , "val1" .equals (jsonArray .get (0 )));
440+ assertTrue ("7. inner array item 1" , "" .equals (jsonArray .get (1 )));
441+ }
425442}
0 commit comments