Changeset 51 for branches/pyyaml3000/tests/test_structure.py
- Timestamp:
- 02/19/06 17:17:28 (7 years ago)
- File:
-
- 1 edited
-
branches/pyyaml3000/tests/test_structure.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/pyyaml3000/tests/test_structure.py
r48 r51 13 13 try: 14 14 parser = Parser(Scanner(Reader(file(data_filename, 'rb')))) 15 node1 = parser.parse() 16 node1 = [self._convert(n) for n in node1] 15 node1 = [] 16 while not parser.check(StreamEndEvent): 17 node1.append(self._convert(parser)) 18 parser.get() 17 19 if len(node1) == 1: 18 20 node1 = node1[0] … … 26 28 raise 27 29 28 def _convert(self, node): 29 if isinstance(node, ScalarNode): 30 return True 31 elif isinstance(node, SequenceNode): 30 def _convert(self, parser): 31 if parser.check(ScalarEvent): 32 event = parser.get() 33 if event.tag or event.anchor or event.value: 34 return True 35 else: 36 return None 37 elif parser.check(SequenceEvent): 38 parser.get() 32 39 sequence = [] 33 for item in node.value: 34 sequence.append(self._convert(item)) 40 while not parser.check(CollectionEndEvent): 41 sequence.append(self._convert(parser)) 42 parser.get() 35 43 return sequence 36 elif isinstance(node, MappingNode): 44 elif parser.check(MappingEvent): 45 parser.get() 37 46 mapping = [] 38 for key, value in node.value: 39 mapping.append((self._convert(key), self._convert(value))) 47 while not parser.check(CollectionEndEvent): 48 key = self._convert(parser) 49 value = self._convert(parser) 50 mapping.append((key, value)) 51 parser.get() 40 52 return mapping 41 elif isinstance(node, AliasNode): 53 elif parser.check(AliasEvent): 54 parser.get() 42 55 return '*' 43 56 else: 44 return node 57 parser.get() 58 return '?' 45 59 46 60 TestStructure.add_tests('testStructure', '.data', '.structure') … … 49 63 50 64 def _testParser(self, test_name, data_filename, canonical_filename): 51 documents1 = None52 documents2 = None65 events1 = None 66 events2 = None 53 67 try: 54 68 parser = Parser(Scanner(Reader(file(data_filename, 'rb')))) 55 documents1 = parser.parse()56 canonical = test_appliance.CanonicalParser( canonical_filename,file(canonical_filename, 'rb').read())57 documents2 = canonical.parse()58 self._compare( documents1, documents2)69 events1 = list(iter(parser)) 70 canonical = test_appliance.CanonicalParser(file(canonical_filename, 'rb').read()) 71 events2 = canonical.parse() 72 self._compare(events1, events2) 59 73 except: 60 74 print … … 63 77 print "DATA2:" 64 78 print file(canonical_filename, 'rb').read() 65 print " DOCUMENTS1:", documents166 print " DOCUMENTS2:", documents279 print "EVENTS1:", events1 80 print "EVENTS2:", events2 67 81 raise 68 82 69 def _compare(self, value1, value2): 70 if value1 is None and hasattr(value2, 'tag') and value2.tag == 'tag:yaml.org,2002:null': 71 return 72 self.failUnlessEqual(type(value1), type(value2)) 73 if isinstance(value1, list) or isinstance(value1, tuple): 74 self.failUnlessEqual(len(value1), len(value2)) 75 for item1, item2 in zip(value1, value2): 76 self._compare(item1, item2) 77 else: 78 self.failUnlessEqual(value1.__class__.__name__, value2.__class__.__name__) 79 if isinstance(value1, SequenceNode): # or isinstance(value1, MappingNode): 80 self._compare(value1.value, value2.value) 81 elif isinstance(value1, ScalarNode): 82 self.failUnlessEqual(value1.value, value2.value) 83 def _compare(self, events1, events2): 84 self.failUnlessEqual(len(events1), len(events2)) 85 for event1, event2 in zip(events1, events2): 86 self.failUnlessEqual(event1.__class__, event2.__class__) 87 if isinstance(event1, AliasEvent): 88 #self.failUnlessEqual(event1.name, event2.name) 89 pass 90 elif isinstance(event1, ScalarEvent): 91 #self.failUnlessEqual(event1.anchor, event2.anchor) 92 #self.failUnlessEqual(event1.tag, event2.tag) 93 self.failUnlessEqual(event1.value, event2.value) 94 if isinstance(event1, CollectionEvent): 95 #self.failUnlessEqual(event1.anchor, event2.anchor) 96 #self.failUnlessEqual(event1.tag, event2.tag) 97 pass 98 83 99 84 100 TestParser.add_tests('testParser', '.data', '.canonical') … … 87 103 88 104 def _testParserOnCanonical(self, test_name, canonical_filename): 89 documents1 = None90 documents2 = None105 events1 = None 106 events2 = None 91 107 try: 92 108 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)109 events1 = list(iter(parser)) 110 canonical = test_appliance.CanonicalParser(file(canonical_filename, 'rb').read()) 111 events2 = canonical.parse() 112 self._compare(events1, events2) 97 113 except: 98 114 print 99 115 print "DATA:" 100 116 print file(canonical_filename, 'rb').read() 101 print " DOCUMENTS1:", documents1102 print " DOCUMENTS2:", documents2117 print "EVENTS1:", events1 118 print "EVENTS2:", events2 103 119 raise 104 120 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) 121 def _compare(self, events1, events2): 122 self.failUnlessEqual(len(events1), len(events2)) 123 for event1, event2 in zip(events1, events2): 124 self.failUnlessEqual(event1.__class__, event2.__class__) 125 if isinstance(event1, AliasEvent): 126 self.failUnlessEqual(event1.name, event2.name) 127 elif isinstance(event1, ScalarEvent): 128 self.failUnlessEqual(event1.anchor, event2.anchor) 129 self.failUnlessEqual(event1.tag, event2.tag) 130 self.failUnlessEqual(event1.value, event2.value) 131 if isinstance(event1, CollectionEvent): 132 self.failUnlessEqual(event1.anchor, event2.anchor) 133 self.failUnlessEqual(event1.tag, event2.tag) 119 134 120 135 TestParserOnCanonical.add_tests('testParserOnCanonical', '.canonical')
Note: See TracChangeset
for help on using the changeset viewer.
