diff options
Diffstat (limited to 'tests3/test_structure.py')
-rw-r--r-- | tests3/test_structure.py | 187 |
1 files changed, 0 insertions, 187 deletions
diff --git a/tests3/test_structure.py b/tests3/test_structure.py deleted file mode 100644 index 4d9c4ea..0000000 --- a/tests3/test_structure.py +++ /dev/null @@ -1,187 +0,0 @@ - -import yaml, canonical -import pprint - -def _convert_structure(loader): - if loader.check_event(yaml.ScalarEvent): - event = loader.get_event() - if event.tag or event.anchor or event.value: - return True - else: - return None - elif loader.check_event(yaml.SequenceStartEvent): - loader.get_event() - sequence = [] - while not loader.check_event(yaml.SequenceEndEvent): - sequence.append(_convert_structure(loader)) - loader.get_event() - return sequence - elif loader.check_event(yaml.MappingStartEvent): - loader.get_event() - mapping = [] - while not loader.check_event(yaml.MappingEndEvent): - key = _convert_structure(loader) - value = _convert_structure(loader) - mapping.append((key, value)) - loader.get_event() - return mapping - elif loader.check_event(yaml.AliasEvent): - loader.get_event() - return '*' - else: - loader.get_event() - return '?' - -def test_structure(data_filename, structure_filename, verbose=False): - nodes1 = [] - nodes2 = eval(open(structure_filename, 'r').read()) - try: - loader = yaml.Loader(open(data_filename, 'rb')) - while loader.check_event(): - if loader.check_event(yaml.StreamStartEvent, yaml.StreamEndEvent, - yaml.DocumentStartEvent, yaml.DocumentEndEvent): - loader.get_event() - continue - nodes1.append(_convert_structure(loader)) - if len(nodes1) == 1: - nodes1 = nodes1[0] - assert nodes1 == nodes2, (nodes1, nodes2) - finally: - if verbose: - print("NODES1:") - pprint.pprint(nodes1) - print("NODES2:") - pprint.pprint(nodes2) - -test_structure.unittest = ['.data', '.structure'] - -def _compare_events(events1, events2, full=False): - assert len(events1) == len(events2), (len(events1), len(events2)) - for event1, event2 in zip(events1, events2): - assert event1.__class__ == event2.__class__, (event1, event2) - if isinstance(event1, yaml.AliasEvent) and full: - assert event1.anchor == event2.anchor, (event1, event2) - if isinstance(event1, (yaml.ScalarEvent, yaml.CollectionStartEvent)): - if (event1.tag not in [None, '!'] and event2.tag not in [None, '!']) or full: - assert event1.tag == event2.tag, (event1, event2) - if isinstance(event1, yaml.ScalarEvent): - assert event1.value == event2.value, (event1, event2) - -def test_parser(data_filename, canonical_filename, verbose=False): - events1 = None - events2 = None - try: - events1 = list(yaml.parse(open(data_filename, 'rb'))) - events2 = list(yaml.canonical_parse(open(canonical_filename, 'rb'))) - _compare_events(events1, events2) - finally: - if verbose: - print("EVENTS1:") - pprint.pprint(events1) - print("EVENTS2:") - pprint.pprint(events2) - -test_parser.unittest = ['.data', '.canonical'] - -def test_parser_on_canonical(canonical_filename, verbose=False): - events1 = None - events2 = None - try: - events1 = list(yaml.parse(open(canonical_filename, 'rb'))) - events2 = list(yaml.canonical_parse(open(canonical_filename, 'rb'))) - _compare_events(events1, events2, full=True) - finally: - if verbose: - print("EVENTS1:") - pprint.pprint(events1) - print("EVENTS2:") - pprint.pprint(events2) - -test_parser_on_canonical.unittest = ['.canonical'] - -def _compare_nodes(node1, node2): - assert node1.__class__ == node2.__class__, (node1, node2) - assert node1.tag == node2.tag, (node1, node2) - if isinstance(node1, yaml.ScalarNode): - assert node1.value == node2.value, (node1, node2) - else: - assert len(node1.value) == len(node2.value), (node1, node2) - for item1, item2 in zip(node1.value, node2.value): - if not isinstance(item1, tuple): - item1 = (item1,) - item2 = (item2,) - for subnode1, subnode2 in zip(item1, item2): - _compare_nodes(subnode1, subnode2) - -def test_composer(data_filename, canonical_filename, verbose=False): - nodes1 = None - nodes2 = None - try: - nodes1 = list(yaml.compose_all(open(data_filename, 'rb'))) - nodes2 = list(yaml.canonical_compose_all(open(canonical_filename, 'rb'))) - assert len(nodes1) == len(nodes2), (len(nodes1), len(nodes2)) - for node1, node2 in zip(nodes1, nodes2): - _compare_nodes(node1, node2) - finally: - if verbose: - print("NODES1:") - pprint.pprint(nodes1) - print("NODES2:") - pprint.pprint(nodes2) - -test_composer.unittest = ['.data', '.canonical'] - -def _make_loader(): - global MyLoader - - class MyLoader(yaml.Loader): - def construct_sequence(self, node): - return tuple(yaml.Loader.construct_sequence(self, node)) - def construct_mapping(self, node): - pairs = self.construct_pairs(node) - pairs.sort() - return pairs - def construct_undefined(self, node): - return self.construct_scalar(node) - - MyLoader.add_constructor('tag:yaml.org,2002:map', MyLoader.construct_mapping) - MyLoader.add_constructor(None, MyLoader.construct_undefined) - -def _make_canonical_loader(): - global MyCanonicalLoader - - class MyCanonicalLoader(yaml.CanonicalLoader): - def construct_sequence(self, node): - return tuple(yaml.CanonicalLoader.construct_sequence(self, node)) - def construct_mapping(self, node): - pairs = self.construct_pairs(node) - pairs.sort() - return pairs - def construct_undefined(self, node): - return self.construct_scalar(node) - - MyCanonicalLoader.add_constructor('tag:yaml.org,2002:map', MyCanonicalLoader.construct_mapping) - MyCanonicalLoader.add_constructor(None, MyCanonicalLoader.construct_undefined) - -def test_constructor(data_filename, canonical_filename, verbose=False): - _make_loader() - _make_canonical_loader() - native1 = None - native2 = None - try: - native1 = list(yaml.load_all(open(data_filename, 'rb'), Loader=MyLoader)) - native2 = list(yaml.load_all(open(canonical_filename, 'rb'), Loader=MyCanonicalLoader)) - assert native1 == native2, (native1, native2) - finally: - if verbose: - print("NATIVE1:") - pprint.pprint(native1) - print("NATIVE2:") - pprint.pprint(native2) - -test_constructor.unittest = ['.data', '.canonical'] - -if __name__ == '__main__': - import test_appliance - test_appliance.run(globals()) - |