Ignore:
Timestamp:
02/18/06 18:52:18 (8 years ago)
Author:
xi
Message:

Scanner is complete.

File:
1 edited

Legend:

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

    r46 r48  
    7777        else: 
    7878            self.failUnlessEqual(value1.__class__.__name__, value2.__class__.__name__) 
    79             if isinstance(value1, SequenceNode) or isinstance(value1, MappingNode): 
     79            if isinstance(value1, SequenceNode): # or isinstance(value1, MappingNode): 
    8080                self._compare(value1.value, value2.value) 
     81            elif isinstance(value1, ScalarNode): 
     82                self.failUnlessEqual(value1.value, value2.value) 
    8183 
    8284TestParser.add_tests('testParser', '.data', '.canonical') 
    8385 
     86class TestParserOnCanonical(test_appliance.TestAppliance): 
     87 
     88    def _testParserOnCanonical(self, test_name, canonical_filename): 
     89        documents1 = None 
     90        documents2 = None 
     91        try: 
     92            parser = Parser(Scanner(Reader(file(canonical_filename, 'rb')))) 
     93            documents1 = parser.parse() 
     94            canonical = test_appliance.CanonicalParser(canonical_filename, file(canonical_filename, 'rb').read()) 
     95            documents2 = canonical.parse() 
     96            self._compare(documents1, documents2) 
     97        except: 
     98            print 
     99            print "DATA:" 
     100            print file(canonical_filename, 'rb').read() 
     101            print "DOCUMENTS1:", documents1 
     102            print "DOCUMENTS2:", documents2 
     103            raise 
     104 
     105    def _compare(self, value1, value2): 
     106        if value1 is None and hasattr(value2, 'tag') and value2.tag == 'tag:yaml.org,2002:null': 
     107            return 
     108        self.failUnlessEqual(type(value1), type(value2)) 
     109        if isinstance(value1, list) or isinstance(value1, tuple): 
     110            self.failUnlessEqual(len(value1), len(value2)) 
     111            for item1, item2 in zip(value1, value2): 
     112                self._compare(item1, item2) 
     113        else: 
     114            self.failUnlessEqual(value1.__class__.__name__, value2.__class__.__name__) 
     115            if isinstance(value1, SequenceNode) or isinstance(value1, MappingNode): 
     116                self._compare(value1.value, value2.value) 
     117            elif isinstance(value1, ScalarNode): 
     118                self.failUnlessEqual(value1.value, value2.value) 
     119 
     120TestParserOnCanonical.add_tests('testParserOnCanonical', '.canonical') 
     121 
Note: See TracChangeset for help on using the changeset viewer.