def test_noeval(self): decoder = pyson.PYSONDecoder(noeval=True) encoder = pyson.PYSONEncoder() for instance in [ pyson.Eval('test', 0), pyson.Not(True), pyson.Bool('test'), pyson.And(True, False, True), pyson.Or(False, True, True), pyson.Equal('foo', 'bar'), pyson.Greater(1, 0), pyson.Less(0, 1), pyson.If(True, 'foo', 'bar'), pyson.Get({'foo': 'bar'}, 'foo', 'default'), pyson.In('foo', ['foo', 'bar']), pyson.Date(), pyson.DateTime(), pyson.Len([1, 2, 3]), ]: self.assertEqual(decoder.decode(encoder.encode(instance)).pyson(), instance.pyson())
def test_Len(self): 'Test pyson.Len' self.assertEqual(pyson.Len([1, 2, 3]).pyson(), { '__class__': 'Len', 'v': [1, 2, 3], }) self.assertRaises(AssertionError, pyson.Len, object()) self.assertEqual(pyson.Len([1, 2, 3]).types(), set([int])) eval = pyson.PYSONEncoder().encode(pyson.Len([1, 2, 3])) self.assertEqual(pyson.PYSONDecoder().decode(eval), 3) eval = pyson.PYSONEncoder().encode(pyson.Len({1: 2, 3: 4})) self.assertEqual(pyson.PYSONDecoder().decode(eval), 2) eval = pyson.PYSONEncoder().encode(pyson.Len('foo bar')) self.assertEqual(pyson.PYSONDecoder().decode(eval), 7) self.assertEqual(repr(pyson.Len([1, 2, 3])), 'Len([1, 2, 3])')