예제 #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'))