source: branches/pyyaml3000/tests/test_tokens.py @ 39

Revision 39, 1.7 KB checked in by xi, 9 years ago (diff)

Working on the scanner.

RevLine 
[39]1
2import test_appliance
3
4from yaml.scanner import Scanner
5
6class TestTokens(test_appliance.TestAppliance):
7
8    # Tokens mnemonic:
9    # directive:            %
10    # document_start:       ---
11    # document_end:         ...
12    # alias:                *
13    # anchor:               &
14    # tag:                  !
15    # scalar                _
16    # block_sequence_start: [[
17    # block_mapping_start:  {{
18    # block_end:            ]}
19    # flow_sequence_start:  [
20    # flow_sequence_end:    ]
21    # flow_mapping_start:   {
22    # flow_mapping_end:     }
23    # entry:                ,
24    # key:                  ?
25    # value:                :
26
27    replaces = {
28        'DIRECTIVE': '%',
29        'DOCUMENT_START': '---',
30        'DOCUMENT_END': '...',
31        'ALIAS': '*',
32        'ANCHOR': '&',
33        'TAG': '!',
34        'SCALAR': '_',
35        'BLOCK_SEQ_START': '[[',
36        'BLOCK_MAP_START': '{{',
37        'BLOCK_END': ']}',
38        'FLOW_SEQ_START': '[',
39        'FLOW_SEQ_END': ']',
40        'FLOW_MAP_START': '{',
41        'FLOW_MAP_END': '}',
42        'ENTRY': ',',
43        'KEY': '?',
44        'VALUE': ':',
45    }
46
47    def _testTokens(self, test_name, data_filename, tokens_filename):
48        tokens1 = None
49        tokens2 = file(tokens_filename, 'rb').read().split()
50        try:
51            scanner = Scanner()
52            tokens1 = scanner.scan(data_filename, file(data_filename, 'rb').read())
53            tokens1 = [self.replaces[t] for t in tokens1]
54            self.failUnlessEqual(tokens1, tokens2)
55        except:
56            print
57            print "TOKENS1:", tokens1
58            print "TOKENS2:", tokens2
59            raise
60
61TestTokens.add_tests('testTokens', '.data', '.tokens')
62
Note: See TracBrowser for help on using the repository browser.