Changeset 136 for pyyaml/trunk/tests

Show
Ignore:
Timestamp:
04/15/06 19:54:52 (6 years ago)
Author:
xi
Message:

Major refactoring.

Location:
pyyaml/trunk/tests
Files:
13 modified

Legend:

Unmodified
Added
Removed
  • pyyaml/trunk/tests/data/construct-custom.code

    r58 r136  
    77    MyTestClass3(x=1, y=2, z=3), 
    88    MyTestClass3(x=1, y=2, z=3), 
     9    YAMLObject1(my_parameter='foo', my_another_parameter=[1,2,3]) 
    910] 
  • pyyaml/trunk/tests/data/construct-custom.data

    r58 r136  
    2222  'y': 2 
    2323  z: 3 
     24- !foo 
     25  my-parameter: foo 
     26  my-another-parameter: [1,2,3] 
  • pyyaml/trunk/tests/data/spec-08-07.canonical

    r38 r136  
    44  !<tag:yaml.org,2002:str> "12", 
    55  !<tag:yaml.org,2002:int> "12", 
    6   !<tag:yaml.org,2002:str> "12", 
     6#  !<tag:yaml.org,2002:str> "12", 
     7  !<tag:yaml.org,2002:int> "12", 
    78] 
  • pyyaml/trunk/tests/data/tags.events

    r132 r136  
    33- !SequenceStart 
    44- !Scalar { value: 'data' } 
    5 - !Scalar { tag: '!', value: 'data' } 
     5#- !Scalar { tag: '!', value: 'data' } 
    66- !Scalar { tag: 'tag:yaml.org,2002:str', value: 'data' } 
    77- !Scalar { tag: '!myfunnytag', value: 'data' } 
  • pyyaml/trunk/tests/test_appliance.py

    r132 r136  
    22import unittest, os 
    33 
    4 from yaml.tokens import * 
    5 from yaml.events import * 
     4from yaml import * 
    65 
    76class TestAppliance(unittest.TestCase): 
     
    4443        self.data = unicode(data, 'utf-8')+u'\0' 
    4544        self.index = 0 
     45        self.scan() 
     46 
     47    def check_token(self, *choices): 
     48        if self.tokens: 
     49            if not choices: 
     50                return True 
     51            for choice in choices: 
     52                if isinstance(self.tokens[0], choice): 
     53                    return True 
     54        return False 
     55 
     56    def peek_token(self): 
     57        if self.tokens: 
     58            return self.tokens[0] 
     59 
     60    def get_token(self, choice=None): 
     61        token = self.tokens.pop(0) 
     62        if choice and not isinstance(token, choice): 
     63            raise Error("unexpected token "+repr(token)) 
     64        return token 
     65 
     66    def get_token_value(self): 
     67        token = self.get_token() 
     68        return token.value 
    4669 
    4770    def scan(self): 
    48         #print self.data[self.index:] 
    49         tokens = [] 
    50         tokens.append(StreamStartToken(None, None)) 
     71        self.tokens = [] 
     72        self.tokens.append(StreamStartToken(None, None)) 
    5173        while True: 
    5274            self.find_token() 
    5375            ch = self.data[self.index] 
    5476            if ch == u'\0': 
    55                 tokens.append(StreamEndToken(None, None)) 
     77                self.tokens.append(StreamEndToken(None, None)) 
    5678                break 
    5779            elif ch == u'%': 
    58                 tokens.append(self.scan_directive()) 
     80                self.tokens.append(self.scan_directive()) 
    5981            elif ch == u'-' and self.data[self.index:self.index+3] == u'---': 
    6082                self.index += 3 
    61                 tokens.append(DocumentStartToken(None, None)) 
     83                self.tokens.append(DocumentStartToken(None, None)) 
    6284            elif ch == u'[': 
    6385                self.index += 1 
    64                 tokens.append(FlowSequenceStartToken(None, None)) 
     86                self.tokens.append(FlowSequenceStartToken(None, None)) 
    6587            elif ch == u'{': 
    6688                self.index += 1 
    67                 tokens.append(FlowMappingStartToken(None, None)) 
     89                self.tokens.append(FlowMappingStartToken(None, None)) 
    6890            elif ch == u']': 
    6991                self.index += 1 
    70                 tokens.append(FlowSequenceEndToken(None, None)) 
     92                self.tokens.append(FlowSequenceEndToken(None, None)) 
    7193            elif ch == u'}': 
    7294                self.index += 1 
    73                 tokens.append(FlowMappingEndToken(None, None)) 
     95                self.tokens.append(FlowMappingEndToken(None, None)) 
    7496            elif ch == u'?': 
    7597                self.index += 1 
    76                 tokens.append(KeyToken(None, None)) 
     98                self.tokens.append(KeyToken(None, None)) 
    7799            elif ch == u':': 
    78100                self.index += 1 
    79                 tokens.append(ValueToken(None, None)) 
     101                self.tokens.append(ValueToken(None, None)) 
    80102            elif ch == u',': 
    81103                self.index += 1 
    82                 tokens.append(FlowEntryToken(None, None)) 
     104                self.tokens.append(FlowEntryToken(None, None)) 
    83105            elif ch == u'*' or ch == u'&': 
    84                 tokens.append(self.scan_alias()) 
     106                self.tokens.append(self.scan_alias()) 
    85107            elif ch == u'!': 
    86                 tokens.append(self.scan_tag()) 
     108                self.tokens.append(self.scan_tag()) 
    87109            elif ch == u'"': 
    88                 tokens.append(self.scan_scalar()) 
     110                self.tokens.append(self.scan_scalar()) 
    89111            else: 
    90112                raise Error("invalid token") 
    91         return tokens 
    92113 
    93114    DIRECTIVE = u'%YAML 1.1' 
     
    204225class CanonicalParser: 
    205226 
    206     def __init__(self, data): 
    207         self.scanner = CanonicalScanner(data) 
     227    def __init__(self): 
    208228        self.events = [] 
     229        self.parse() 
    209230 
    210231    # stream: STREAM-START document* STREAM-END 
    211232    def parse_stream(self): 
    212         self.consume_token(StreamStartToken) 
     233        self.get_token(StreamStartToken) 
    213234        self.events.append(StreamStartEvent(None, None)) 
    214         while not self.test_token(StreamEndToken): 
    215             if self.test_token(DirectiveToken, DocumentStartToken): 
     235        while not self.check_token(StreamEndToken): 
     236            if self.check_token(DirectiveToken, DocumentStartToken): 
    216237                self.parse_document() 
    217238            else: 
    218239                raise Error("document is expected, got "+repr(self.tokens[self.index])) 
    219         self.consume_token(StreamEndToken) 
     240        self.get_token(StreamEndToken) 
    220241        self.events.append(StreamEndEvent(None, None)) 
    221242 
     
    223244    def parse_document(self): 
    224245        node = None 
    225         if self.test_token(DirectiveToken): 
    226             self.consume_token(DirectiveToken) 
    227         self.consume_token(DocumentStartToken) 
     246        if self.check_token(DirectiveToken): 
     247            self.get_token(DirectiveToken) 
     248        self.get_token(DocumentStartToken) 
    228249        self.events.append(DocumentStartEvent(None, None)) 
    229250        self.parse_node() 
     
    232253    # node: ALIAS | ANCHOR? TAG? (SCALAR|sequence|mapping) 
    233254    def parse_node(self): 
    234         if self.test_token(AliasToken): 
    235             self.events.append(AliasEvent(self.get_value(), None, None)) 
     255        if self.check_token(AliasToken): 
     256            self.events.append(AliasEvent(self.get_token_value(), None, None)) 
    236257        else: 
    237258            anchor = None 
    238             if self.test_token(AnchorToken): 
    239                 anchor = self.get_value() 
     259            if self.check_token(AnchorToken): 
     260                anchor = self.get_token_value() 
    240261            tag = None 
    241             if self.test_token(TagToken): 
    242                 tag = self.get_value() 
    243             if self.test_token(ScalarToken): 
    244                 self.events.append(ScalarEvent(anchor, tag, self.get_value(), None, None)) 
    245             elif self.test_token(FlowSequenceStartToken): 
     262            if self.check_token(TagToken): 
     263                tag = self.get_token_value() 
     264            if self.check_token(ScalarToken): 
     265                self.events.append(ScalarEvent(anchor, tag, False, self.get_token_value(), None, None)) 
     266            elif self.check_token(FlowSequenceStartToken): 
    246267                self.events.append(SequenceStartEvent(anchor, tag, None, None)) 
    247268                self.parse_sequence() 
    248             elif self.test_token(FlowMappingStartToken): 
     269            elif self.check_token(FlowMappingStartToken): 
    249270                self.events.append(MappingStartEvent(anchor, tag, None, None)) 
    250271                self.parse_mapping() 
     
    254275    # sequence: SEQUENCE-START (node (ENTRY node)*)? ENTRY? SEQUENCE-END 
    255276    def parse_sequence(self): 
    256         self.consume_token(FlowSequenceStartToken) 
    257         if not self.test_token(FlowSequenceEndToken): 
     277        self.get_token(FlowSequenceStartToken) 
     278        if not self.check_token(FlowSequenceEndToken): 
    258279            self.parse_node() 
    259             while not self.test_token(FlowSequenceEndToken): 
    260                 self.consume_token(FlowEntryToken) 
    261                 if not self.test_token(FlowSequenceEndToken): 
     280            while not self.check_token(FlowSequenceEndToken): 
     281                self.get_token(FlowEntryToken) 
     282                if not self.check_token(FlowSequenceEndToken): 
    262283                    self.parse_node() 
    263         self.consume_token(FlowSequenceEndToken) 
     284        self.get_token(FlowSequenceEndToken) 
    264285        self.events.append(SequenceEndEvent(None, None)) 
    265286 
    266287    # mapping: MAPPING-START (map_entry (ENTRY map_entry)*)? ENTRY? MAPPING-END 
    267288    def parse_mapping(self): 
    268         self.consume_token(FlowMappingStartToken) 
    269         if not self.test_token(FlowMappingEndToken): 
     289        self.get_token(FlowMappingStartToken) 
     290        if not self.check_token(FlowMappingEndToken): 
    270291            self.parse_map_entry() 
    271             while not self.test_token(FlowMappingEndToken): 
    272                 self.consume_token(FlowEntryToken) 
    273                 if not self.test_token(FlowMappingEndToken): 
     292            while not self.check_token(FlowMappingEndToken): 
     293                self.get_token(FlowEntryToken) 
     294                if not self.check_token(FlowMappingEndToken): 
    274295                    self.parse_map_entry() 
    275         self.consume_token(FlowMappingEndToken) 
     296        self.get_token(FlowMappingEndToken) 
    276297        self.events.append(MappingEndEvent(None, None)) 
    277298 
    278299    # map_entry: KEY node VALUE node 
    279300    def parse_map_entry(self): 
    280         self.consume_token(KeyToken) 
     301        self.get_token(KeyToken) 
    281302        self.parse_node() 
    282         self.consume_token(ValueToken) 
     303        self.get_token(ValueToken) 
    283304        self.parse_node() 
    284305 
    285     def test_token(self, *choices): 
    286         for choice in choices: 
    287             if isinstance(self.tokens[self.index], choice): 
     306    def parse(self): 
     307        self.parse_stream() 
     308 
     309    def get_event(self): 
     310        return self.events.pop(0) 
     311 
     312    def check_event(self, *choices): 
     313        if self.events: 
     314            if not choices: 
    288315                return True 
     316            for choice in choices: 
     317                if isinstance(self.events[0], choice): 
     318                    return True 
    289319        return False 
    290320 
    291     def consume_token(self, cls): 
    292         if not isinstance(self.tokens[self.index], cls): 
    293             raise Error("unexpected token "+repr(self.tokens[self.index])) 
    294         self.index += 1 
    295  
    296     def get_value(self): 
    297         value = self.tokens[self.index].value 
    298         self.index += 1 
    299         return value 
    300  
    301     def parse(self): 
    302         self.tokens = self.scanner.scan() 
    303         self.index = 0 
    304         self.parse_stream() 
    305         return self.events 
    306  
    307     def get(self): 
    308         return self.events.pop(0) 
    309  
    310     def check(self, *choices): 
    311         for choice in choices: 
    312             if isinstance(self.events[0], choice): 
    313                 return True 
    314         return False 
    315  
    316     def peek(self): 
     321    def peek_event(self): 
    317322        return self.events[0] 
    318323 
     324class CanonicalLoader(CanonicalScanner, CanonicalParser, Composer, Constructor, Detector): 
     325 
     326    def __init__(self, stream): 
     327        if hasattr(stream, 'read'): 
     328            stream = stream.read() 
     329        CanonicalScanner.__init__(self, stream) 
     330        CanonicalParser.__init__(self) 
     331        Composer.__init__(self) 
     332        Constructor.__init__(self) 
     333        Detector.__init__(self) 
     334 
     335def canonical_scan(stream): 
     336    return scan(stream, Loader=CanonicalLoader) 
     337 
     338def canonical_parse(stream): 
     339    return parse(stream, Loader=CanonicalLoader) 
     340 
     341def canonical_compose(stream): 
     342    return compose(stream, Loader=CanonicalLoader) 
     343 
     344def canonical_compose_all(stream): 
     345    return compose_all(stream, Loader=CanonicalLoader) 
     346 
     347def canonical_load(stream): 
     348    return load(stream, Loader=CanonicalLoader) 
     349 
     350def canonical_load_all(stream): 
     351    return load_all(stream, Loader=CanonicalLoader) 
     352 
  • pyyaml/trunk/tests/test_canonical.py

    r51 r136  
    66    def _testCanonicalScanner(self, test_name, canonical_filename): 
    77        data = file(canonical_filename, 'rb').read() 
    8         scanner = test_appliance.CanonicalScanner(data) 
    9         tokens = scanner.scan() 
     8        tokens = list(test_appliance.canonical_scan(data)) 
    109        #for token in tokens: 
    1110        #    print token 
     
    1312    def _testCanonicalParser(self, test_name, canonical_filename): 
    1413        data = file(canonical_filename, 'rb').read() 
    15         parser = test_appliance.CanonicalParser(data) 
    16         events = parser.parse() 
     14        event = list(test_appliance.canonical_parse(data)) 
    1715        #for event in events: 
    1816        #    print event 
  • pyyaml/trunk/tests/test_constructor.py

    r59 r136  
    1212from yaml import * 
    1313 
    14 class MyConstructor(Constructor): 
     14class MyLoader(Loader): 
    1515    pass 
    1616 
     
    2929    return MyTestClass1(**mapping) 
    3030 
    31 MyConstructor.add_constructor("!tag1", construct1) 
     31MyLoader.add_constructor("!tag1", construct1) 
    3232 
    3333class MyTestClass2(MyTestClass1, YAMLObject): 
    3434 
    35     yaml_constructor = MyConstructor 
     35    yaml_loader = MyLoader 
    3636    yaml_tag = "!tag2" 
    3737 
     
    5454    from_yaml = classmethod(from_yaml) 
    5555 
     56class YAMLObject1(YAMLObject): 
     57    yaml_loader = MyLoader 
     58    yaml_tag = '!foo' 
     59 
     60    def __init__(self, my_parameter=None, my_another_parameter=None): 
     61        self.my_parameter = my_parameter 
     62        self.my_another_parameter = my_another_parameter 
     63 
     64    def __eq__(self, other): 
     65        if isinstance(other, YAMLObject1): 
     66            return self.__class__, self.__dict__ == other.__class__, other.__dict__ 
     67        else: 
     68            return False 
     69 
    5670class TestTypes(test_appliance.TestAppliance): 
    5771 
    5872    def _testTypes(self, test_name, data_filename, code_filename): 
    59         natives1 = None 
    60         natives2 = None 
     73        data1 = None 
     74        data2 = None 
    6175        try: 
    62             constructor1 = MyConstructor(Resolver(Composer(Parser(Scanner(Reader(file(data_filename, 'rb'))))))) 
    63             natives1 = list(iter(constructor1)) 
    64             if len(natives1) == 1: 
    65                 natives1 = natives1[0] 
    66             natives2 = eval(file(code_filename, 'rb').read()) 
     76            data1 = list(load_all(file(data_filename, 'rb'), Loader=MyLoader)) 
     77            if len(data1) == 1: 
     78                data1 = data1[0] 
     79            data2 = eval(file(code_filename, 'rb').read()) 
    6780            try: 
    68                 self.failUnlessEqual(natives1, natives2) 
     81                self.failUnlessEqual(data1, data2) 
    6982            except AssertionError: 
    70                 if isinstance(natives1, dict): 
    71                     natives1 = natives1.items() 
    72                     natives1.sort() 
    73                     natives1 = repr(natives1) 
    74                     natives2 = natives2.items() 
    75                     natives2.sort() 
    76                     natives2 = repr(natives2) 
    77                 if natives1 != natives2: 
     83                if isinstance(data1, dict): 
     84                    data1 = data1.items() 
     85                    data1.sort() 
     86                    data1 = repr(data1) 
     87                    data2 = data2.items() 
     88                    data2.sort() 
     89                    data2 = repr(data2) 
     90                if data1 != data2: 
    7891                    raise 
    7992        except: 
     
    8396            print "CODE:" 
    8497            print file(code_filename, 'rb').read() 
    85             print "NATIVES1:", natives1 
    86             print "NATIVES2:", natives2 
     98            print "NATIVES1:", data1 
     99            print "NATIVES2:", data2 
    87100            raise 
    88101 
  • pyyaml/trunk/tests/test_detector.py

    r55 r136  
    22import test_appliance 
    33 
    4 from yaml.reader import Reader 
    5 from yaml.scanner import Scanner 
    6 from yaml.parser import * 
    7 from yaml.composer import * 
    8 from yaml.resolver import * 
    9 from yaml.nodes import * 
     4from yaml import * 
    105 
    116class TestDetector(test_appliance.TestAppliance): 
     
    1611        try: 
    1712            correct_tag = file(detect_filename, 'rb').read().strip() 
    18             resolver = Resolver(Composer(Parser(Scanner(Reader(file(data_filename, 'rb')))))) 
    19             node = list(iter(resolver))[0] 
     13            node = compose(file(data_filename, 'rb')) 
    2014            self.failUnless(isinstance(node, SequenceNode)) 
    2115            for scalar in node.value: 
     
    3428TestDetector.add_tests('testDetector', '.data', '.detect') 
    3529 
    36  
  • pyyaml/trunk/tests/test_emitter.py

    r133 r136  
    1717 
    1818    def _testEmitter(self, test_name, filename, canonical=None): 
    19         events = list(iter(Parser(Scanner(Reader(file(filename, 'rb')))))) 
    20         if canonical is not None: 
    21             events[0].canonical = canonical 
    22         #self._dump(filename, events) 
    23         writer = StringIO.StringIO() 
    24         emitter = Emitter(writer) 
    25         for event in events: 
    26             emitter.emit(event) 
    27         data = writer.getvalue() 
     19        events = list(parse(file(filename, 'rb'))) 
     20        #self._dump(filename, events, canonical) 
     21        stream = StringIO.StringIO() 
     22        emit(events, stream, canonical=canonical) 
     23        data = stream.getvalue() 
    2824        new_events = list(parse(data)) 
    2925        for event, new_event in zip(events, new_events): 
     
    3935                self.failUnlessEqual(event.value, new_event.value) 
    4036 
    41     def _dump(self, filename, events): 
    42         writer = sys.stdout 
    43         emitter = Emitter(writer) 
     37    def _dump(self, filename, events, canonical): 
    4438        print "="*30 
    4539        print "ORIGINAL DOCUMENT:" 
     
    4741        print '-'*30 
    4842        print "EMITTED DOCUMENT:" 
    49         for event in events: 
    50             emitter.emit(event) 
     43        emit(events, sys.stdout, canonical=canonical) 
    5144         
    5245TestEmitter.add_tests('testEmitterOnData', '.canonical', '.data') 
    53 #TestEmitter.add_tests('testEmitterOnCanonicalNormally', '.canonical') 
    54 #TestEmitter.add_tests('testEmitterOnCanonicalCanonically', '.canonical') 
     46TestEmitter.add_tests('testEmitterOnCanonicalNormally', '.canonical') 
     47TestEmitter.add_tests('testEmitterOnCanonicalCanonically', '.canonical') 
    5548 
    56 class EventsConstructor(Constructor): 
     49class EventsLoader(Loader): 
    5750 
    5851    def construct_event(self, node): 
     
    6760            mapping.setdefault('tag', None) 
    6861        if class_name == 'ScalarEvent': 
     62            mapping.setdefault('implicit', False) 
    6963            mapping.setdefault('value', '') 
    7064        value = getattr(yaml, class_name)(**mapping) 
    7165        return value 
    7266 
    73 EventsConstructor.add_constructor(None, EventsConstructor.construct_event) 
     67EventsLoader.add_constructor(None, EventsLoader.construct_event) 
    7468 
    7569class TestEmitterEvents(test_appliance.TestAppliance): 
    7670 
    7771    def _testEmitterEvents(self, test_name, events_filename): 
    78         events = list(load(file(events_filename, 'rb'), Constructor=EventsConstructor)) 
     72        events = list(load(file(events_filename, 'rb'), Loader=EventsLoader)) 
    7973        #self._dump(events_filename, events) 
    80         writer = StringIO.StringIO() 
    81         emitter = Emitter(writer) 
    82         for event in events: 
    83             emitter.emit(event) 
    84         data = writer.getvalue() 
     74        stream = StringIO.StringIO() 
     75        emit(events, stream) 
     76        data = stream.getvalue() 
    8577        new_events = list(parse(data)) 
    8678        self.failUnlessEqual(len(events), len(new_events)) 
     
    9789 
    9890    def _dump(self, events_filename, events): 
    99         writer = sys.stdout 
    100         emitter = Emitter(writer) 
    10191        print "="*30 
    10292        print "EVENTS:" 
     
    10494        print '-'*30 
    10595        print "OUTPUT:" 
    106         for event in events: 
    107             emitter.emit(event) 
     96        emit(events, sys.stdout) 
    10897         
    10998TestEmitterEvents.add_tests('testEmitterEvents', '.events') 
  • pyyaml/trunk/tests/test_errors.py

    r59 r136  
    1616    def _load(self, filename): 
    1717        try: 
    18             reader = Reader(file(filename, 'rb')) 
    19             scanner = Scanner(reader) 
    20             parser = Parser(scanner) 
    21             composer = Composer(parser) 
    22             resolver = Resolver(composer) 
    23             constructor = Constructor(resolver) 
    24             return list(constructor) 
     18            return list(load_all(file(filename, 'rb'))) 
    2519        except YAMLError, exc: 
    2620        #except ScannerError, exc: 
     
    3428    def _load_string(self, filename): 
    3529        try: 
    36             reader = Reader(file(filename, 'rb').read()) 
    37             scanner = Scanner(reader) 
    38             parser = Parser(scanner) 
    39             composer = Composer(parser) 
    40             resolver = Resolver(composer) 
    41             constructor = Constructor(resolver) 
    42             return list(constructor) 
     30            return list(load_all(file(filename, 'rb').read())) 
    4331        except YAMLError, exc: 
    4432        #except ScannerError, exc: 
  • pyyaml/trunk/tests/test_representer.py

    r133 r136  
    1313from yaml import * 
    1414 
    15 class MyConstructor(Constructor): 
     15class MyLoader(Loader): 
    1616    pass 
    17 class MyRepresenter(Representer): 
     17class MyDumper(Dumper): 
    1818    pass 
    1919 
     
    3939class MyTestClass2(MyTestClass1, YAMLObject): 
    4040 
    41     yaml_constructor = MyConstructor 
     41    yaml_loader = MyLoader 
     42    yaml_dumper = MyDumper 
    4243    yaml_tag = "!tag2" 
    4344 
     
    6869    to_yaml = classmethod(to_yaml) 
    6970 
    70 MyConstructor.add_constructor("!tag1", construct1) 
    71 MyRepresenter.add_representer(MyTestClass1, represent1) 
     71MyLoader.add_constructor("!tag1", construct1) 
     72MyDumper.add_representer(MyTestClass1, represent1) 
     73 
     74class YAMLObject1(YAMLObject): 
     75    yaml_loader = MyLoader 
     76    yaml_dumper = MyDumper 
     77    yaml_tag = '!foo' 
     78    yaml_flow_style = True 
     79 
     80    def __init__(self, my_parameter=None, my_another_parameter=None): 
     81        self.my_parameter = my_parameter 
     82        self.my_another_parameter = my_another_parameter 
     83 
     84    def __eq__(self, other): 
     85        if isinstance(other, YAMLObject1): 
     86            return self.__class__, self.__dict__ == other.__class__, other.__dict__ 
     87        else: 
     88            return False 
    7289 
    7390class TestTypeRepresenter(test_appliance.TestAppliance): 
    7491 
    7592    def _testTypes(self, test_name, data_filename, code_filename): 
    76         natives1 = eval(file(code_filename, 'rb').read()) 
    77         natives2 = None 
     93        data1 = eval(file(code_filename, 'rb').read()) 
     94        data2 = None 
    7895        output = None 
    7996        try: 
    80             output = dump(natives1, Representer=MyRepresenter) 
    81             natives2 = load(output, Constructor=MyConstructor) 
     97            output = dump(data1, Dumper=MyDumper) 
     98            data2 = load(output, Loader=MyLoader) 
    8299            try: 
    83                 self.failUnlessEqual(natives1, natives2) 
     100                self.failUnlessEqual(data1, data2) 
    84101            except AssertionError: 
    85                 if isinstance(natives1, dict): 
    86                     natives1 = natives1.items() 
    87                     natives1.sort() 
    88                     natives1 = repr(natives1) 
    89                     natives2 = natives2.items() 
    90                     natives2.sort() 
    91                     natives2 = repr(natives2) 
    92                 if natives1 != natives2: 
     102                if isinstance(data1, dict): 
     103                    data1 = data1.items() 
     104                    data1.sort() 
     105                    data1 = repr(data1) 
     106                    data2 = data2.items() 
     107                    data2.sort() 
     108                    data2 = repr(data2) 
     109                if data1 != data2: 
    93110                    raise 
    94111        except: 
     
    96113            print "OUTPUT:" 
    97114            print output 
    98             print "NATIVES1:", natives1 
    99             print "NATIVES2:", natives2 
     115            print "NATIVES1:", data1 
     116            print "NATIVES2:", data2 
    100117            raise 
    101118 
  • pyyaml/trunk/tests/test_structure.py

    r130 r136  
    1010        node2 = eval(file(structure_filename, 'rb').read()) 
    1111        try: 
    12             parser = Parser(Scanner(Reader(file(data_filename, 'rb')))) 
     12            loader = Loader(file(data_filename, 'rb')) 
    1313            node1 = [] 
    14             while not parser.check(StreamEndEvent): 
    15                 if not parser.check(StreamStartEvent, DocumentStartEvent, DocumentEndEvent): 
    16                     node1.append(self._convert(parser)) 
     14            while not loader.check_event(StreamEndEvent): 
     15                if not loader.check_event(StreamStartEvent, DocumentStartEvent, DocumentEndEvent): 
     16                    node1.append(self._convert(loader)) 
    1717                else: 
    18                     parser.get() 
    19             parser.get() 
     18                    loader.get_event() 
     19            loader.get_event() 
    2020            if len(node1) == 1: 
    2121                node1 = node1[0] 
     
    2929            raise 
    3030 
    31     def _convert(self, parser): 
    32         if parser.check(ScalarEvent): 
    33             event = parser.get() 
     31    def _convert(self, loader): 
     32        if loader.check_event(ScalarEvent): 
     33            event = loader.get_event() 
    3434            if event.tag or event.anchor or event.value: 
    3535                return True 
    3636            else: 
    3737                return None 
    38         elif parser.check(SequenceStartEvent): 
    39             parser.get() 
     38        elif loader.check_event(SequenceStartEvent): 
     39            loader.get_event() 
    4040            sequence = [] 
    41             while not parser.check(SequenceEndEvent): 
    42                 sequence.append(self._convert(parser)) 
    43             parser.get() 
     41            while not loader.check_event(SequenceEndEvent): 
     42                sequence.append(self._convert(loader)) 
     43            loader.get_event() 
    4444            return sequence 
    45         elif parser.check(MappingStartEvent): 
    46             parser.get() 
     45        elif loader.check_event(MappingStartEvent): 
     46            loader.get_event() 
    4747            mapping = [] 
    48             while not parser.check(MappingEndEvent): 
    49                 key = self._convert(parser) 
    50                 value = self._convert(parser) 
     48            while not loader.check_event(MappingEndEvent): 
     49                key = self._convert(loader) 
     50                value = self._convert(loader) 
    5151                mapping.append((key, value)) 
    52             parser.get() 
     52            loader.get_event() 
    5353            return mapping 
    54         elif parser.check(AliasEvent): 
    55             parser.get() 
     54        elif loader.check_event(AliasEvent): 
     55            loader.get_event() 
    5656            return '*' 
    5757        else: 
    58             parser.get() 
     58            loader.get_event() 
    5959            return '?' 
    6060 
     
    6767        events2 = None 
    6868        try: 
    69             parser = Parser(Scanner(Reader(file(data_filename, 'rb')))) 
    70             events1 = list(iter(parser)) 
    71             canonical = test_appliance.CanonicalParser(file(canonical_filename, 'rb').read()) 
    72             events2 = canonical.parse() 
     69            events1 = list(parse(file(data_filename, 'rb'))) 
     70            events2 = list(test_appliance.canonical_parse(file(canonical_filename, 'rb'))) 
    7371            self._compare(events1, events2) 
    7472        except: 
     
    106104        nodes2 = None 
    107105        try: 
    108             resolver1 = Resolver(Composer(Parser(Scanner(Reader(file(data_filename, 'rb')))))) 
    109             nodes1 = list(iter(resolver1)) 
    110             canonical = test_appliance.CanonicalParser(file(canonical_filename, 'rb').read()) 
    111             canonical.parse() 
    112             resolver2 = Resolver(Composer(canonical)) 
    113             nodes2 = list(iter(resolver2)) 
     106            nodes1 = list(compose_all(file(data_filename, 'rb'))) 
     107            nodes2 = list(test_appliance.canonical_compose_all(file(canonical_filename, 'rb'))) 
    114108            self.failUnlessEqual(len(nodes1), len(nodes2)) 
    115109            for node1, node2 in zip(nodes1, nodes2): 
     
    148142TestResolver.add_tests('testResolver', '.data', '.canonical') 
    149143 
    150 class MyConstructor(Constructor): 
     144class MyConstructor: 
    151145 
    152146    def construct_sequence(self, node): 
     
    158152        return pairs 
    159153 
    160 MyConstructor.add_constructor(None, MyConstructor.construct_scalar) 
     154    def construct_undefined(self, node): 
     155        return self.construct_scalar(node) 
     156 
     157class MyLoader(MyConstructor, Loader): 
     158    pass 
     159MyLoader.add_constructor(None, MyLoader.construct_undefined) 
     160 
     161class MyCanonicalLoader(MyConstructor, test_appliance.CanonicalLoader): 
     162    pass 
     163MyCanonicalLoader.add_constructor(None, MyCanonicalLoader.construct_undefined) 
    161164 
    162165class TestConstructor(test_appliance.TestAppliance): 
    163166 
    164167    def _testConstructor(self, test_name, data_filename, canonical_filename): 
    165         natives1 = None 
    166         natives2 = None 
    167         try: 
    168             constructor1 = MyConstructor(Resolver(Composer(Parser(Scanner(Reader(file(data_filename, 'rb'))))))) 
    169             natives1 = list(iter(constructor1)) 
    170             canonical = test_appliance.CanonicalParser(file(canonical_filename, 'rb').read()) 
    171             canonical.parse() 
    172             constructor2 = MyConstructor(Resolver(Composer(canonical))) 
    173             natives2 = list(iter(constructor2)) 
    174             self.failUnlessEqual(natives1, natives2) 
     168        data1 = None 
     169        data2 = None 
     170        try: 
     171            data1 = list(load_all(file(data_filename, 'rb'), Loader=MyLoader)) 
     172            data2 = list(load_all(file(canonical_filename, 'rb'), Loader=MyCanonicalLoader)) 
     173            self.failUnlessEqual(data1, data2) 
    175174        except: 
    176175            print 
     
    179178            print "DATA2:" 
    180179            print file(canonical_filename, 'rb').read() 
    181             print "NATIVES1:", natives1 
    182             print "NATIVES2:", natives2 
     180            print "NATIVES1:", data1 
     181            print "NATIVES2:", data2 
    183182            raise 
    184183 
     
    191190        events2 = None 
    192191        try: 
    193             parser = Parser(Scanner(Reader(file(canonical_filename, 'rb')))) 
    194             events1 = list(iter(parser)) 
    195             canonical = test_appliance.CanonicalParser(file(canonical_filename, 'rb').read()) 
    196             events2 = canonical.parse() 
     192            events1 = list(parse(file(canonical_filename, 'rb'))) 
     193            events2 = list(test_appliance.canonical_parse(file(canonical_filename, 'rb'))) 
    197194            self._compare(events1, events2) 
    198195        except: 
  • pyyaml/trunk/tests/test_tokens.py

    r118 r136  
    22import test_appliance 
    33 
    4 from yaml.reader import * 
    5 from yaml.tokens import * 
    6 from yaml.scanner import * 
     4from yaml import * 
    75 
    86class TestTokens(test_appliance.TestAppliance): 
     
    5250        tokens2 = file(tokens_filename, 'rb').read().split() 
    5351        try: 
    54             scanner = Scanner(Reader(file(data_filename, 'rb'))) 
    5552            tokens1 = [] 
    56             for token in scanner: 
     53            for token in scan(file(data_filename, 'rb')): 
    5754                if not isinstance(token, (StreamStartToken, StreamEndToken)): 
    5855                    tokens1.append(token) 
     
    7572            tokens = None 
    7673            try: 
    77                 scanner = Scanner(Reader(file(filename, 'rb'))) 
    7874                tokens = [] 
    79                 for token in scanner: 
     75                for token in scan(file(filename, 'rb')): 
    8076                    if not isinstance(token, (StreamStartToken, StreamEndToken)): 
    8177                        tokens.append(token.__class__.__name__)