PASSED - loaded input data PASSED - all json_object_deep_copy() returned succesful PASSED - all json_object_deep_copy() returned EINVAL for non-null pointer PASSED - all json_object_equal() tests returned succesful PASSED - comparison of string output PASSED - trying to overrwrite an object that has refcount > 1 Printing JSON objects for visual inspection ------------------------------------------------ JSON1 { "glossary":{ "title":"example glossary", "GlossDiv":{ "title":"S", "null_obj":null, "GlossList":{ "GlossEntry":{ "ID":"SGML", "SortAs":"SGML", "GlossTerm":"Standard Generalized Markup Language", "Acronym":"SGML", "Abbrev":"ISO 8879:1986", "GlossDef":{ "para":"A meta-markup language, used to create markup languages such as DocBook.", "GlossSeeAlso":[ "GML", "XML" ] }, "GlossSee":"markup" } } } } } ------------------------------------------------ ------------------------------------------------ JSON2 { "menu":{ "header":"SVG Viewer", "items":[ { "id":"Open" }, { "id":"OpenNew", "label":"Open New" }, null, { "id":"ZoomIn", "label":"Zoom In" }, { "id":"ZoomOut", "label":"Zoom Out" }, { "id":"OriginalView", "label":"Original View" }, null, { "id":"Quality", "another_null":null }, { "id":"Pause" }, { "id":"Mute" }, null, { "id":"Find", "label":"Find..." }, { "id":"FindAgain", "label":"Find Again" }, { "id":"Copy" }, { "id":"CopyAgain", "label":"Copy Again" }, { "id":"CopySVG", "label":"Copy SVG" }, { "id":"ViewSVG", "label":"View SVG" }, { "id":"ViewSource", "label":"View Source" }, { "id":"SaveAs", "label":"Save As" }, null, { "id":"Help" }, { "id":"About", "label":"About Adobe CVG Viewer..." } ] } } ------------------------------------------------ ------------------------------------------------ JSON3 ------------------------------------------------ { "menu":{ "id":"file", "value":"File", "popup":{ "menuitem":[ { "value":"New", "onclick":"CreateNewDoc()" }, { "value":"Open", "onclick":"OpenDoc()" }, { "value":"Close", "onclick":"CloseDoc()" } ] } } } ------------------------------------------------ Testing deep_copy with a custom serializer set CALLED: my_shallow_copy on with_serializer object deep_copy with custom serializer worked OK.