Changeset 6 for trunk/tests/test_syck.py


Ignore:
Timestamp:
07/17/05 12:08:23 (8 years ago)
Author:
xi
Message:

Remove methods Parser.parse_documents() and Parser.close(); add method Parser.eof() (closes #6).
Add resolver to Parser() (closes #4).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/test_syck.py

    r4 r6  
    163163        parser = _syck.Parser(EXAMPLE) 
    164164        self.assertEqual(type(parser), _syck.ParserType) 
    165         parser.close() 
    166165 
    167166    def testNodeType(self): 
     
    169168        document = parser.parse() 
    170169        self.assertEqual(type(document), _syck.NodeType) 
    171         parser.close() 
    172170 
    173171    def testNodeType2(self): 
     
    179177        parser = _syck.Parser(INVALID[0]) 
    180178        self.assertRaises(_syck.error, (lambda: parser.parse())) 
    181         parser.close() 
    182179 
    183180    def testErrorLocation(self): 
     
    191188            self.assertEqual(e.args[2], column) 
    192189 
    193 class TestValuesAndSources(unittest.TestCase): 
    194  
    195     def testValues1(self): 
    196         self._testValues(COMPARE1) 
    197  
    198     def testValues2(self): 
    199         self._testValues(COMPARE2) 
    200  
    201     def testValues3(self): 
    202         self._testValues(COMPARE3) 
    203  
    204     def testFileValues1(self): 
    205         self._testFileValues(COMPARE1) 
    206  
    207     def testFileValues2(self): 
    208         self._testFileValues(COMPARE2) 
    209  
    210     def testFileValues3(self): 
    211         self._testFileValues(COMPARE3) 
    212  
    213     def testNonsense(self): 
    214         parser = _syck.Parser(None) 
    215         self.assertRaises(AttributeError, (lambda: parser.parse())) 
    216         parser.close() 
    217  
    218     def _testValues(self, (source, structure)): 
    219         parser = _syck.Parser(source) 
    220         document = parser.parse() 
    221         self.assertEqualStructure(document, structure) 
    222         parser.close() 
    223  
    224     def _testFileValues(self, (source, structure)): 
    225         parser = _syck.Parser(StringIO.StringIO(source)) 
    226         document = parser.parse() 
    227         self.assertEqualStructure(document, structure) 
    228         parser.close() 
     190class EqualStructure: 
    229191 
    230192    def assertEqualStructure(self, node, structure): 
     
    244206                self.assertEqualStructure(node.value[key], structure[key.value]) 
    245207 
     208class TestValuesAndSources(unittest.TestCase, EqualStructure): 
     209 
     210    def testValues1(self): 
     211        self._testValues(COMPARE1) 
     212 
     213    def testValues2(self): 
     214        self._testValues(COMPARE2) 
     215 
     216    def testValues3(self): 
     217        self._testValues(COMPARE3) 
     218 
     219    def testFileValues1(self): 
     220        self._testFileValues(COMPARE1) 
     221 
     222    def testFileValues2(self): 
     223        self._testFileValues(COMPARE2) 
     224 
     225    def testFileValues3(self): 
     226        self._testFileValues(COMPARE3) 
     227 
     228    def testNonsense(self): 
     229        parser = _syck.Parser(None) 
     230        self.assertRaises(AttributeError, (lambda: parser.parse())) 
     231 
     232    def _testValues(self, (source, structure)): 
     233        parser = _syck.Parser(source) 
     234        document = parser.parse() 
     235        self.assertEqualStructure(document, structure) 
     236 
     237    def _testFileValues(self, (source, structure)): 
     238        parser = _syck.Parser(StringIO.StringIO(source)) 
     239        document = parser.parse() 
     240        self.assertEqualStructure(document, structure) 
     241 
     242class TestResolver(unittest.TestCase, EqualStructure): 
     243 
     244    object = 12345 
     245 
     246    def object_resolver(self, node): 
     247        return self.object 
     248 
     249    def simple_resolver(self, node): 
     250        return node.value 
     251 
     252    def default_resolver(self, node): 
     253        return node 
     254 
     255    def call_me_not_resolver(self, node): 
     256        self.call_me_not_parser.parse() 
     257        return node 
     258 
     259    def testResolver1(self): 
     260        self._testResolver(COMPARE1) 
     261 
     262    def testResolver2(self): 
     263        self._testResolver(COMPARE2) 
     264 
     265    def testResolver3(self): 
     266        self._testResolver(COMPARE3) 
     267 
     268    def testCallMeNot(self): 
     269        self.call_me_not_parser = _syck.Parser(EXAMPLE, self.call_me_not_resolver) 
     270        self.assertRaises(RuntimeError, (lambda: self.call_me_not_parser.parse())) 
     271        del self.call_me_not_parser 
     272 
     273    def _testResolver(self, compare): 
     274        self._testObject(compare) 
     275        self._testSimple(compare) 
     276        self._testDefault(compare) 
     277        self._testNone(compare) 
     278 
     279    def _testObject(self, (source, structure)): 
     280        parser = _syck.Parser(source, self.object_resolver) 
     281        document = parser.parse() 
     282        self.assert_(document is self.object) 
     283 
     284    def _testSimple(self, (source, structure)): 
     285        parser = _syck.Parser(source, self.simple_resolver) 
     286        document = parser.parse() 
     287        self.assert_(document, structure) 
     288 
     289    def _testDefault(self, (source, structure)): 
     290        parser = _syck.Parser(source, resolver=self.default_resolver) 
     291        document = parser.parse() 
     292        self.assertEqualStructure(document, structure) 
     293 
     294    def _testNone(self, (source, structure)): 
     295        parser = _syck.Parser(source, resolver=None) 
     296        document = parser.parse() 
     297        self.assertEqualStructure(document, structure) 
     298 
    246299class TestDocuments(unittest.TestCase): 
    247300 
     
    260313    def _testDocuments(self, source, length): 
    261314        parser = _syck.Parser(source) 
    262         documents = parser.parse_documents() 
    263         self.assertEqual(len(documents), length) 
    264         parser.close() 
    265         parser = _syck.Parser(source) 
    266         for k in range(length): 
     315        actual_length = 0 
     316        while True: 
    267317            document = parser.parse() 
    268             self.assert_(document) 
     318            if parser.eof(): 
     319                self.assertEqual(document, None) 
     320                break 
     321            actual_length += 1 
     322        self.assertEqual(actual_length, length) 
    269323        self.assertEqual(parser.parse(), None) 
    270         parser.close() 
     324        self.assert_(parser.eof()) 
     325        self.assertEqual(parser.parse(), None) 
     326        self.assert_(parser.eof()) 
    271327 
    272328class TestImplicitTyping(unittest.TestCase): 
     
    285341 
    286342    def _testTyping(self, implicit_typing, taguri_expansion): 
    287         parser = _syck.Parser(IMPLICIT_TYPING[0], implicit_typing, taguri_expansion) 
     343        parser = _syck.Parser(IMPLICIT_TYPING[0], None, implicit_typing, taguri_expansion) 
    288344        for node, (type_id, explicit) in zip(parser.parse().value, IMPLICIT_TYPING[1]): 
    289345            if type_id is not None and taguri_expansion: 
Note: See TracChangeset for help on using the changeset viewer.