示例#1
0
 def test_decode_nested_unsized_values(self):
     data = self.decode(b('a\xffa\xffB\x2aEo\xffs\x03fooB\x2aEE'))
     self.assertTrue(isinstance(data, GeneratorType))
     item = data.next()
     self.assertTrue(isinstance(item, list))
     self.assertEqual(item, [42])
     item = data.next()
     self.assertTrue(isinstance(item, list))
     self.assertEqual(item, [(b('foo'), 42)])
示例#2
0
    def test_allow_emit_noop_for_objects(self):
        data = self.decode(b('{NSi\x03fooNSi\x03barN}'), allow_noop=True)
        self.assertTrue(isinstance(data, GeneratorType))
        data = list(data)
        N = simpleubjson.NOOP
        self.assertEqual(data, [(N, N), ('foo', 'bar'), (N, N)])
        self.assertEqual(dict(data), {'foo': 'bar', N: N})

        data = self.decode(b('[i\x00Ni\x01Ni\x02Ni\x03Ni\x04]'),
                           allow_noop=True)
        N = simpleubjson.NOOP
        self.assertEqual(list(data), [0, N, 1, N, 2, N, 3, N, 4])
示例#3
0
    def test_allow_emit_noop_for_objects(self):
        data = self.decode(b('{NSi\x03fooNSi\x03barN}'),
                                   allow_noop=True)
        self.assertTrue(isinstance(data, GeneratorType))
        data = list(data)
        N = simpleubjson.NOOP
        self.assertEqual(data, [(N, N), ('foo', 'bar'), (N, N)])
        self.assertEqual(dict(data), {'foo': 'bar', N: N})

        data = self.decode(b('[i\x00Ni\x01Ni\x02Ni\x03Ni\x04]'),
                                   allow_noop=True)
        N = simpleubjson.NOOP
        self.assertEqual(list(data), [0, N, 1, N, 2, N, 3, N, 4])
示例#4
0
 def test_custom_default_handler(self):
     sentinel = object()
     def dummy(value):
         assert value is sentinel
         return [b('sentinel')]
     data = self.encode(sentinel, default=dummy)
     self.assertEqual(data, b('a\x01s\x08sentinel'))
示例#5
0
 def test_custom_default_handler(self):
     sentinel = object()
     def dummy(value):
         assert value is sentinel
         return [b('sentinel')]
     data = self.encode(sentinel, default=dummy)
     self.assertEqual(data, b('[Si\x08sentinel]'))
示例#6
0
 def test_decode_huge_float(self):
     source = b(
         'Hi\x35-3.14159265358979323846264338327950288419716939937510')
     expected = Decimal(
         '-3.14159265358979323846264338327950288419716939937510')
     data = self.decode(source)
     self.assertEqual(data, expected)
示例#7
0
    def test_custom_default_handler(self):
        def dummy(stream, markers, tag):
            assert tag == '%'
            return markers['s'], ('s', 3, b('foo'))
#        data = self.decode(b('%'), default=dummy)
#        self.assertEqual(data, 'foo')
        self.assertRaises(TypeError, self.decode, b('%'), default=dummy)
示例#8
0
 def test_custom_default_handler(self):
     def dummy(stream, markers, tag):
         assert tag == '%'
         return markers['s'], ('s', 3, b('foo'))
     #        data = self.decode(b('%'), default=dummy)
     #        self.assertEqual(data, 'foo')
     self.assertRaises(TypeError, self.decode, b('%'), default=dummy)
示例#9
0
 def test_decode_nested_unsized_values(self):
     data = self.decode(b('[[i\x2a]{Si\x03fooi\x2a}]'))
     self.assertTrue(isinstance(data, GeneratorType))
     for item in data:
         break
     else:
         self.fail('next item expected')
     self.assertTrue(isinstance(item, list))
     self.assertEqual(item, [42])
     for item in data:
         break
     else:
         self.fail('next item expected')
     self.assertTrue(isinstance(item, list))
     self.assertEqual(item, [('foo', 42)])
示例#10
0
 def test_decode_nested_unsized_values(self):
     data = self.decode(b('[[i\x2a]{Si\x03fooi\x2a}]'))
     self.assertTrue(isinstance(data, GeneratorType))
     for item in data:
         break
     else:
         self.fail('next item expected')
     self.assertTrue(isinstance(item, list))
     self.assertEqual(item, [42])
     for item in data:
         break
     else:
         self.fail('next item expected')
     self.assertTrue(isinstance(item, list))
     self.assertEqual(item, [('foo', 42)])
示例#11
0
 def dummy(stream, markers, tag):
     assert tag == '%'
     return markers['s'], ('s', 3, b('foo'))
示例#12
0
 def test_decode_unsized_array_with_noops(self):
     data = self.decode(b('[Ni\x01NNNi\x02NNNNNNNNNNNNNi\x03]'))
     self.assertTrue(isinstance(data, GeneratorType))
     self.assertEqual(list(data), [1, 2, 3])
示例#13
0
 def test_false_encode(self):
     data = self.encode(False)
     self.assertEqual(data, b('F'))
示例#14
0
 def test_fail_decode_on_early_end(self):
     self.assertRaises(ValueError, list, self.decode(b('{i\x01')))
示例#15
0
 def test_encode_object(self):
     data = self.encode({'foo': 'bar'})
     self.assertEqual(data, b('{Si\x03fooSi\x03bar}'))
示例#16
0
 def test_allow_emit_noop_for_arrays(self):
     data = self.decode(b('[i\x00Ni\x01Ni\x02Ni\x03Ni\x04]'),
                        allow_noop=True)
     N = simpleubjson.NOOP
     self.assertEqual(list(data), [0, N, 1, N, 2, N, 3, N, 4])
示例#17
0
 def test_fail_decode_on_early_eos(self):
     data = self.decode(b('{Si\x03foo}'))
     self.assertRaises(ValueError, list, data)
示例#18
0
 def test_encode_dict_iteritems(self):
     data = {'foo': 'bar'}
     data = self.encode(getattr(data, 'iteritems', data.items)())
     self.assertEqual(data, b('{Si\x03fooSi\x03bar}'))
示例#19
0
 def test_encode_dict_itervalues(self):
     data = {'foo': 'bar'}
     data = self.encode(getattr(data, 'itervalues', data.values)())
     self.assertEqual(data, b('[Si\x03bar]'))
示例#20
0
 def test_encode_dict_iterkeys(self):
     data = {'foo': 'bar'}
     data = self.encode(getattr(data, 'iterkeys', data.keys)())
     self.assertEqual(data, b('[Si\x03foo]'))
示例#21
0
 def test_encode_xrange(self):
     data = self.encode(xrange(4))
     self.assertEqual(data, b('[i\x00i\x01i\x02i\x03]'))
示例#22
0
 def dummy(stream, markers, tag):
     assert tag == '%'
     return markers['s'], ('s', 3, b('foo'))
示例#23
0
 def test_encode_dict_itervalues(self):
     data = {'foo': 'bar'}
     data = self.encode(getattr(data, 'itervalues', data.values)())
     self.assertEqual(data, b('[Si\x03bar]'))
示例#24
0
 def test_fail_decode_on_early_eos(self):
     data = self.decode(b('{Si\x03foo}'))
     self.assertRaises(ValueError, list, data)
示例#25
0
 def test_fail_decode_object_with_nonstring_key(self):
     data = self.decode(b('{i\x03Si\x03foo}'))
     self.assertRaises(ValueError, list, data)
示例#26
0
 def test_decode_object(self):
     data = dict(self.decode(b('{Si\x03fooSi\x03barSi\x03barSi\x03baz}')))
     self.assertEqual(data, {'foo': 'bar', 'bar': 'baz'})
示例#27
0
 def test_allow_emit_noop_for_arrays(self):
     data = self.decode(b('[i\x00Ni\x01Ni\x02Ni\x03Ni\x04]'),
                                allow_noop=True)
     N = simpleubjson.NOOP
     self.assertEqual(list(data), [0, N, 1, N, 2, N, 3, N, 4])
示例#28
0
 def test_should_skip_noop_markers_in_sized_object(self):
     data = dict(self.decode(
         b('{Si\x03fooSi\x03barNNNSi\x03barSi\x03baz}')))
     self.assertEqual(data, {'foo': 'bar', 'bar': 'baz'})
示例#29
0
 def test_decode_unsized_array(self):
     data = self.decode(b('[i\x01i\x02i\x03]'))
     self.assertTrue(isinstance(data, GeneratorType))
     self.assertEqual(list(data), [1, 2, 3])
示例#30
0
 def test_decode_unsized_array(self):
     data = self.decode(b('[i\x01i\x02i\x03]'))
     self.assertTrue(isinstance(data, GeneratorType))
     self.assertEqual(list(data), [1, 2, 3])
示例#31
0
 def test_decode_unsized_object(self):
     data = self.decode(b('{Si\x03fooSi\x03barSi\x03barSi\x03baz}'))
     self.assertTrue(isinstance(data, GeneratorType))
     self.assertEqual(dict(data), {'foo': 'bar', 'bar': 'baz'})
示例#32
0
 def test_decode_object(self):
     data = dict(self.decode(b('{Si\x03fooSi\x03barSi\x03barSi\x03baz}')))
     self.assertEqual(data, {'foo': 'bar', 'bar': 'baz'})
示例#33
0
 def test_decode_unsized_object(self):
     data = self.decode(b('{Si\x03fooSi\x03barSi\x03barSi\x03baz}'))
     self.assertTrue(isinstance(data, GeneratorType))
     self.assertEqual(dict(data), {'foo': 'bar', 'bar': 'baz'})
示例#34
0
 def test_encode_generator(self):
     data = self.encode((i for i in range(7)))
     self.assertEqual(data, b('[i\x00i\x01i\x02i\x03i\x04i\x05i\x06]'))
示例#35
0
 def test_decode_object_with_char_key(self):
     data = dict(self.decode(b('{CUSi\x06UBJSON}')))
     self.assertEqual(data, {'U': 'UBJSON'})
示例#36
0
 def test_decode_unsized_array_with_noops(self):
     data = self.decode(b('[Ni\x01NNNi\x02NNNNNNNNNNNNNi\x03]'))
     self.assertTrue(isinstance(data, GeneratorType))
     self.assertEqual(list(data), [1, 2, 3])
示例#37
0
 def test_encode_object(self):
     data = self.encode({'foo': 'bar'})
     self.assertEqual(data, b('{Si\x03fooSi\x03bar}'))
示例#38
0
 def test_encode_xrange(self):
     data = self.encode(xrange(4))
     self.assertEqual(data, b('[i\x00i\x01i\x02i\x03]'))
示例#39
0
 def test_decode_object_with_nested_unsized_objects(self):
     source = b('{Si\x03bar[i\x2a]Si\x03baz{NNNSi\x03fooi\x2a}}')
     data = dict(self.decode(source))
     self.assertEqual(data, {'baz': [('foo', 42)], 'bar': [42]})
示例#40
0
 def test_encode_dict_iterkeys(self):
     data = {'foo': 'bar'}
     data = self.encode(getattr(data, 'iterkeys', data.keys)())
     self.assertEqual(data, b('[Si\x03foo]'))
示例#41
0
 def test_should_skip_noop_markers_in_sized_object(self):
     data = dict(self.decode(b('{Si\x03fooSi\x03barNNNSi\x03barSi\x03baz}')))
     self.assertEqual(data, {'foo': 'bar', 'bar': 'baz'})
示例#42
0
 def test_encode_dict_iteritems(self):
     data = {'foo': 'bar'}
     data = self.encode(getattr(data, 'iteritems', data.items)())
     self.assertEqual(data, b('{Si\x03fooSi\x03bar}'))
示例#43
0
 def test_fail_decode_non_string_object_keys(self):
     self.assertRaises(ValueError,
                       list,
                       self.decode(b('{i\x03Si\x03bar}')))
示例#44
0
 def test_fail_decode_object_with_nonstring_key(self):
     data = self.decode(b('{i\x03Si\x03foo}'))
     self.assertRaises(ValueError, list, data)
示例#45
0
 def test_fail_decode_on_early_end(self):
     self.assertRaises(ValueError, list, self.decode(b('{i\x01')))
示例#46
0
 def test_encode_frozenset(self):
     data = self.encode(frozenset(['foo', 'foo', 'foo']))
     self.assertEqual(data, b('[Si\x03foo]'))
示例#47
0
 def test_write_encoded_data_to_stream(self):
     stream = StringIO()
     self.encode((i for i in range(5)), stream)
     self.assertEqual(stream.getvalue(),
                      b('[i\x00i\x01i\x02i\x03i\x04]'))
示例#48
0
 def test_decode_object_with_char_key(self):
     data = dict(self.decode(b('{CUSi\x06UBJSON}')))
     self.assertEqual(data, {'U': 'UBJSON'})
示例#49
0
 def dummy(value):
     assert value is sentinel
     return [b('sentinel')]
示例#50
0
 def test_decode_object_with_nested_unsized_objects(self):
     source = b('{Si\x03bar[i\x2a]Si\x03baz{NNNSi\x03fooi\x2a}}')
     data = dict(self.decode(source))
     self.assertEqual(data, {'baz': [('foo', 42)], 'bar': [42]})
示例#51
0
 def test_encode(self):
     data = self.encode(None)
     self.assertEqual(data, b('Z'))
示例#52
0
 def test_fail_decode_non_string_object_keys(self):
     self.assertRaises(ValueError, list, self.decode(b('{i\x03Si\x03bar}')))
示例#53
0
 def test_encode(self):
     data = self.encode(None)
     self.assertEqual(data, b('Z'))
示例#54
0
 def test_write_encoded_data_to_stream(self):
     stream = StringIO()
     self.encode((i for i in range(5)), stream)
     self.assertEqual(stream.getvalue(), b('[i\x00i\x01i\x02i\x03i\x04]'))
示例#55
0
 def test_encode_generator(self):
     data = self.encode((i for i in range(7)))
     self.assertEqual(data, b('[i\x00i\x01i\x02i\x03i\x04i\x05i\x06]'))
示例#56
0
 def test_encode(self):
     data = self.encode(simpleubjson.NOOP)
     self.assertEqual(data, b('N'))
示例#57
0
 def dummy(value):
     assert value is sentinel
     return [b('sentinel')]
示例#58
0
 def test_false_encode(self):
     data = self.encode(False)
     self.assertEqual(data, b('F'))
示例#59
0
 def test_encode(self):
     data = self.encode(simpleubjson.NOOP)
     self.assertEqual(data, b('N'))