summaryrefslogtreecommitdiff
path: root/tests/test_representer.py
blob: f814705541896c2c0049ca4c2287a9ac9ff23073 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

import yaml
import test_constructor
import pprint

def test_representer_types(code_filename, verbose=False):
    test_constructor._make_objects()
    for allow_unicode in [False, True]:
        native1 = test_constructor._load_code(open(code_filename, 'rb').read())
        native2 = None
        try:
            output = yaml.dump(native1, Dumper=test_constructor.MyDumper,
                        allow_unicode=allow_unicode)
            native2 = yaml.load(output, Loader=test_constructor.MyLoader)
            try:
                if native1 == native2:
                    continue
            except TypeError:
                pass
            value1 = test_constructor._serialize_value(native1)
            value2 = test_constructor._serialize_value(native2)
            if verbose:
                print "SERIALIZED NATIVE1:"
                print value1
                print "SERIALIZED NATIVE2:"
                print value2
            assert value1 == value2, (native1, native2)
        finally:
            if verbose:
                print "NATIVE1:"
                pprint.pprint(native1)
                print "NATIVE2:"
                pprint.pprint(native2)
                print "OUTPUT:"
                print output

test_representer_types.unittest = ['.code']

if __name__ == '__main__':
    import test_appliance
    test_appliance.run(globals())