Ignore:
Timestamp:
02/20/06 15:46:35 (8 years ago)
Author:
xi
Message:

Fix bugs in Resolver and add more tests.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/pyyaml3000/tests/test_structure.py

    r53 r54  
    55from yaml.scanner import Scanner 
    66from yaml.parser import * 
     7from yaml.composer import * 
     8from yaml.resolver import * 
     9from yaml.nodes import * 
    710 
    811class TestStructure(test_appliance.TestAppliance): 
     
    97100                pass 
    98101 
     102TestParser.add_tests('testParser', '.data', '.canonical') 
    99103 
    100 TestParser.add_tests('testParser', '.data', '.canonical') 
     104class TestResolver(test_appliance.TestAppliance): 
     105 
     106    def _testResolver(self, test_name, data_filename, canonical_filename): 
     107        nodes1 = None 
     108        nodes2 = None 
     109        try: 
     110            resolver1 = Resolver(Composer(Parser(Scanner(Reader(file(data_filename, 'rb')))))) 
     111            nodes1 = list(iter(resolver1)) 
     112            canonical = test_appliance.CanonicalParser(file(canonical_filename, 'rb').read()) 
     113            canonical.parse() 
     114            resolver2 = Resolver(Composer(canonical)) 
     115            nodes2 = list(iter(resolver2)) 
     116            self.failUnlessEqual(len(nodes1), len(nodes2)) 
     117            for node1, node2 in zip(nodes1, nodes2): 
     118                self._compare(node1, node2) 
     119        except: 
     120            print 
     121            print "DATA1:" 
     122            print file(data_filename, 'rb').read() 
     123            print "DATA2:" 
     124            print file(canonical_filename, 'rb').read() 
     125            print "NODES1:", nodes1 
     126            print "NODES2:", nodes2 
     127            raise 
     128 
     129    def _compare(self, node1, node2): 
     130        self.failUnlessEqual(node1.__class__, node2.__class__) 
     131        if isinstance(node1, ScalarNode): 
     132            #self.failUnlessEqual(node1.tag, node2.tag) 
     133            self.failUnlessEqual(node1.value, node2.value) 
     134        elif isinstance(node1, SequenceNode): 
     135            self.failUnlessEqual(len(node1.value), len(node2.value)) 
     136            for item1, item2 in zip(node1.value, node2.value): 
     137                self._compare(item1, item2) 
     138        elif isinstance(node1, MappingNode): 
     139            self.failUnlessEqual(len(node1.value), len(node2.value)) 
     140            for (key1, value1), (key2, value2) in zip(node1.value, node2.value): 
     141                self._compare(key1, key2) 
     142                self._compare(value1, value2) 
     143 
     144TestResolver.add_tests('testResolver', '.data', '.canonical') 
    101145 
    102146class TestParserOnCanonical(test_appliance.TestAppliance): 
Note: See TracChangeset for help on using the changeset viewer.