Example #1
0
 def test_comments(self):
   document = dedent("""
   # Top level comment.
   {
     # Nested comment
     "hobbies": [1, 2, 3]
   }
   """)
   results = parsers.parse_json(document)
   self.assertEqual(1, len(results))
   self.assertEqual([dict(hobbies=[1, 2, 3])],
                    parsers.parse_json(parsers.encode_json(results[0])))
Example #2
0
 def test_single(self):
   document = dedent("""
   # An simple example with a single Bob.
   {
     "typename": "pants_test.engine.exp.test_parsers.Bob",
     "hobbies": [1, 2, 3]
   }
   """)
   results = parsers.parse_json(document)
   self.assertEqual(1, len(results))
   self.assertEqual([Bob(hobbies=[1, 2, 3])],
                    parsers.parse_json(parsers.encode_json(results[0])))
   self.assertEqual('pants_test.engine.exp.test_parsers.Bob', results[0]._asdict()['typename'])
Example #3
0
 def test_shallow_encoding(self):
   expected_json = dedent("""
   {
     "name": "bob",
     "type_alias": "pants_test.engine.exp.test_parsers.Bob",
     "friend": {
       "name": "bill",
       "type_alias": "pants_test.engine.exp.test_parsers.Bob"
     },
     "relative": "::an opaque address::"
   }
   """).strip()
   self.assertEqual(json.dumps(json.loads(expected_json)),
                    parsers.encode_json(self.bob, inline=False))
Example #4
0
 def test_symbol_table(self):
   symbol_table = {'bob': Bob}
   document = dedent("""
   # An simple example with a single Bob.
   {
     "typename": "bob",
     "hobbies": [1, 2, 3]
   }
   """)
   results = parsers.parse_json(document, symbol_table=symbol_table)
   self.assertEqual(1, len(results))
   self.assertEqual([Bob(hobbies=[1, 2, 3])],
                    parsers.parse_json(parsers.encode_json(results[0]), symbol_table=symbol_table))
   self.assertEqual('bob', results[0]._asdict()['typename'])
Example #5
0
 def test_shallow_encoding(self):
   expected_json = dedent("""
   {
     "name": "bob",
     "type_alias": "pants_test.engine.exp.test_parsers.Bob",
     "friend": {
       "name": "bill",
       "type_alias": "pants_test.engine.exp.test_parsers.Bob"
     },
     "relative": "::an opaque address::"
   }
   """).strip()
   self.assertEqual(json.dumps(json.loads(expected_json)),
                    parsers.encode_json(self.bob, inline=False))
Example #6
0
 def test_nested_single(self):
   document = dedent("""
   # An example with nested Bobs.
   {
     "typename": "pants_test.engine.exp.test_parsers.Bob",
     "uncle": {
       "typename": "pants_test.engine.exp.test_parsers.Bob",
       "age": 42
     },
     "hobbies": [1, 2, 3]
   }
   """)
   results = parsers.parse_json(document)
   self.assertEqual(1, len(results))
   self.assertEqual([Bob(uncle=Bob(age=42), hobbies=[1, 2, 3])],
                    parsers.parse_json(parsers.encode_json(results[0])))
Example #7
0
 def test_nested_deep(self):
   document = dedent("""
   # An example with deeply nested Bobs.
   {
     "typename": "pants_test.engine.exp.test_parsers.Bob",
     "configs": [
       {
         "mappings": {
           "uncle": {
             "typename": "pants_test.engine.exp.test_parsers.Bob",
             "age": 42
           }
         }
       }
     ]
   }
   """)
   results = parsers.parse_json(document)
   self.assertEqual(1, len(results))
   self.assertEqual([Bob(configs=[dict(mappings=dict(uncle=Bob(age=42)))])],
                    parsers.parse_json(parsers.encode_json(results[0])))
Example #8
0
 def test_nested_many(self):
   document = dedent("""
   # An example with many nested Bobs.
   {
     "typename": "pants_test.engine.exp.test_parsers.Bob",
     "cousins": [
       {
         "typename": "pants_test.engine.exp.test_parsers.Bob",
         "name": "Jake",
         "age": 42
       },
       {
         "typename": "pants_test.engine.exp.test_parsers.Bob",
         "name": "Jane",
         "age": 37
       }
     ]
   }
   """)
   results = parsers.parse_json(document)
   self.assertEqual(1, len(results))
   self.assertEqual([Bob(cousins=[Bob(name='Jake', age=42), Bob(name='Jane', age=37)])],
                    parsers.parse_json(parsers.encode_json(results[0])))
Example #9
0
 def round_trip(self, obj, symbol_table_cls=None):
   document = parsers.encode_json(obj, inline=True)
   return self.parse(document, symbol_table_cls=symbol_table_cls)
Example #10
0
 def round_trip(self, obj, symbol_table=None):
   document = parsers.encode_json(obj, inline=True)
   return self.parse(document, symbol_table=symbol_table)