def test_embedded_json(self): """Tests JSON with child node """ json_data = '{"a": {"b" : true } }' json_flattened = json_flatten(json_data) self.assertEqual(json.loads(json_flattened), json.loads('{"a.b" : true}'))
def test_example_json(self): """ Tests the example JSON provided in the assignment """ json_data = '{ "a": 1, "b": true, "c": { "d": 3, "e": "test" } }' json_flattened = json_flatten(json_data) self.assertEqual( json.loads(json_flattened), json.loads('{ "a": 1, "b": true, "c.d": 3, "c.e": "test" }'))
def test_long_json(self): json_data = ( '{ "glossary": { "title": "example glossary", "GlossDiv": ' '{ "title": "S", "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" }, "GlossSee": "markup" } } } } }') json_flattened = json_flatten(json_data) self.assertEqual( json.loads(json_flattened), json.loads(( '{ "glossary.title": "example glossary", "glossary.GlossDiv.title": "S", ' '"glossary.GlossDiv.GlossList.GlossEntry.ID": "SGML", ' '"glossary.GlossDiv.GlossList.GlossEntry.SortAs": "SGML", ' '"glossary.GlossDiv.GlossList.GlossEntry.GlossTerm":' ' "Standard Generalized Markup Language",' '"glossary.GlossDiv.GlossList.GlossEntry.Acronym": "SGML",' '"glossary.GlossDiv.GlossList.GlossEntry.Abbrev": "ISO 8879:1986", ' '"glossary.GlossDiv.GlossList.GlossEntry.GlossDef.para": "A meta-markup language,' ' used to create markup languages such as DocBook.", ' '"glossary.GlossDiv.GlossList.GlossEntry.GlossDef.GlossSeeAlso": "GML", ' '"glossary.GlossDiv.GlossList.GlossEntry.GlossSee": "markup" }' )))
def test_invalid_json(self): """Tests a sample JSON taken from (https://json.org/example.html) """ json_data = '{ "a": {"b" : true }' json_flattened = json_flatten(json_data) self.assertEqual(json_flattened[0], 400)
def test_base_case_json(self): """ Tests JSON with one key value pair """ json_data = '{"a": 1}' json_flattened = json_flatten(json_data) self.assertEqual(json.loads(json_flattened), json.loads('{"a" : 1}'))
def test_empty_json(self): """ Tests the empty JSON case """ json_data = '{ }' json_flattened = json_flatten(json_data) self.assertEqual(json.loads(json_flattened), json.loads('{ }'))