Working on the scanner.
[pyyaml/python3.git] / tests / test_tokens.py
blobf2335896a3bf98d1ab91cc4176cd120daeb49d1a
2 import test_appliance
4 from yaml.scanner import Scanner
6 class TestTokens(test_appliance.TestAppliance):
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: :
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': ':',
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
61 TestTokens.add_tests('testTokens', '.data', '.tokens')