def test_mime(): expected = unhexlify( 'd824787b436f6e74656e742d547970653a20746578742f706c61696e3b20636861727365743d2269736f2d38' '3835392d3135220a4d494d452d56657273696f6e3a20312e300a436f6e74656e742d5472616e736665722d456' 'e636f64696e673a2071756f7465642d7072696e7461626c650a0a48656c6c6f203d413475726f') message = MIMEText(u'Hello \u20acuro', 'plain', 'iso-8859-15') assert dumps(message) == expected
def test_canonical_set(frozen): value = {u'y', u'x', u'aa', u'a'} if frozen: value = frozenset(value) serialized = dumps(value, canonical=True) assert serialized == unhexlify('d9010284616161786179626161')
def test_set(frozen): value = {u'a', u'b', u'c'} if frozen: value = frozenset(value) serialized = dumps(value) assert len(serialized) == 10 assert serialized.startswith(unhexlify('d9010283'))
def test_unimported_type(): """Test that the encoder doesn't break when an extension type is not found in sys.modules.""" encoders = OrderedDict([ (('dummy', 'type'), lambda encoder, obj, fp: None), (('cbor2.encoder', 'CBOREncodeError'), lambda encoder, obj, fp: encoder.encode_string(unicode(obj), fp)) ]) obj = CBOREncodeError(u'foo') assert dumps(obj, encoders=encoders) == b'\x63foo'
def test_default(): class DummyType(object): def __init__(self, state): self.state = state def default_encoder(encoder, value): encoder.encode(value.state) expected = unhexlify('820305') obj = DummyType([3, 5]) serialized = dumps(obj, default=default_encoder) assert serialized == expected
def test_custom_encoder(): class MyOwnType(object): def __init__(self, value_a, value_b): self.value_a = value_a self.value_b = value_b @classmethod def encode(cls, encoder, instance, fp): encoder.encode_semantic(6000, [instance.value_a, instance.value_b], fp, True) expected = unhexlify('d91770820663616263') value = MyOwnType(6, u'abc') assert dumps(value, encoders={MyOwnType: MyOwnType.encode}) == expected
def test_default_cyclic(): class DummyType(object): def __init__(self, value=None): self.value = value @shareable_encoder def default_encoder(encoder, value): state = encoder.encode_to_bytes(value.value) encoder.encode(CBORTag(3000, state)) expected = unhexlify('D81CD90BB849D81CD90BB843D81D00') obj = DummyType() obj2 = DummyType(obj) obj.value = obj2 serialized = dumps(obj, value_sharing=True, default=default_encoder) assert serialized == expected
def test_not_cyclic_same_object(value_sharing, expected): """Test that the same shareable object can be included twice if not in a cyclic structure.""" expected = unhexlify(expected) a = [] b = [a, a] assert dumps(b, value_sharing=value_sharing) == expected
def test_rational(): expected = unhexlify('d81e820205') assert dumps(Fraction(2, 5)) == expected
def test_cyclic_map(): """Test that a dict that contains itself can be serialized with value sharing enabled.""" expected = unhexlify('d81ca100d81d00') a = {} a[0] = a assert dumps(a, value_sharing=True) == expected
def test_custom_tag(): expected = unhexlify('d917706548656c6c6f') assert dumps(CBORTag(6000, u'Hello')) == expected
def test_regex(): expected = unhexlify('d8236d68656c6c6f2028776f726c6429') assert dumps(re.compile(u'hello (world)')) == expected
def test_date(): expected = unhexlify('c074323031332d30332d32315430303a30303a30305a') assert dumps(date(2013, 3, 21), timezone=timezone.utc) == expected
def test_special(value, expected): expected = unhexlify(expected) assert dumps(value) == expected
def test_string(value, expected): expected = unhexlify(expected) assert dumps(value) == expected
def test_bytearray(): expected = unhexlify('4401020304') assert dumps(bytearray(b'\x01\x02\x03\x04')) == expected
def test_float(value, expected): expected = unhexlify(expected) assert dumps(value) == expected
def test_integer(value, expected): expected = unhexlify(expected) assert dumps(value) == expected
def test_cyclic_array(): """Test that an array that contains itself can be serialized with value sharing enabled.""" expected = unhexlify('d81c81d81c81d81d00') a = [[]] a[0].append(a) assert dumps(a, value_sharing=True) == expected
def test_tuple_key(): assert dumps({(2, 1): u''}) == unhexlify('a182020160')
def test_uuid(): expected = unhexlify('d825505eaffac8b51e480581277fdcc7842faf') assert dumps(UUID(hex='5eaffac8b51e480581277fdcc7842faf')) == expected
def test_simple_value(value, expected): expected = unhexlify(expected) assert dumps(value) == expected
def test_datetime(value, as_timestamp, expected): expected = unhexlify(expected) assert dumps(value, datetime_as_timestamp=as_timestamp, timezone=timezone.utc) == expected
def test_minimal_floats(value, expected): expected = unhexlify(expected) assert dumps(value, canonical=True) == expected
def test_dict_key(): assert dumps({FrozenDict({2: 1}): u''}) == unhexlify('a1a1020160')
def test_ordered_map(value, expected): expected = unhexlify(expected) assert dumps(value, canonical=True) == expected