source: pyyaml/trunk/tests/test_representer.py @ 153

Revision 153, 1.8 KB checked in by xi, 9 years ago (diff)

Fix #11 (Thanks to edemaine(at)mit.edu).

RevLine 
[133]1
2import test_appliance
[144]3from test_constructor import *
[133]4
5from yaml import *
6
[144]7class TestRepresenterTypes(test_appliance.TestAppliance):
[133]8
[153]9    def _testTypesUnicode(self, test_name, data_filename, code_filename):
10        return self._testTypes(test_name, data_filename, code_filename, allow_unicode=True)
11
12    def _testTypes(self, test_name, data_filename, code_filename, allow_unicode=False):
[136]13        data1 = eval(file(code_filename, 'rb').read())
14        data2 = None
[133]15        output = None
16        try:
[153]17            output = dump(data1, Dumper=MyDumper, allow_unicode=allow_unicode)
[136]18            data2 = load(output, Loader=MyLoader)
[144]19            self.failUnlessEqual(type(data1), type(data2))
[133]20            try:
[136]21                self.failUnlessEqual(data1, data2)
[133]22            except AssertionError:
[136]23                if isinstance(data1, dict):
[150]24                    data1 = [(repr(key), value) for key, value in data1.items()]
[136]25                    data1.sort()
26                    data1 = repr(data1)
[150]27                    data2 = [(repr(key), value) for key, value in data2.items()]
[136]28                    data2.sort()
29                    data2 = repr(data2)
[147]30                    if data1 != data2:
31                        raise
32                elif isinstance(data1, list):
33                    self.failUnlessEqual(type(data1), type(data2))
34                    self.failUnlessEqual(len(data1), len(data2))
35                    for item1, item2 in zip(data1, data2):
36                        self.failUnlessEqual(item1, item2)
37                else:
[133]38                    raise
39        except:
40            print
41            print "OUTPUT:"
42            print output
[136]43            print "NATIVES1:", data1
44            print "NATIVES2:", data2
[133]45            raise
46
[144]47TestRepresenterTypes.add_tests('testTypes', '.data', '.code')
[153]48TestRepresenterTypes.add_tests('testTypesUnicode', '.data', '.code')
[133]49
Note: See TracBrowser for help on using the repository browser.