Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(696)

Unified Diff: client/dom/scripts/pegparser_test.py

Issue 9845043: Rename client/{dom,html} to lib/{dom,html} . (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « client/dom/scripts/pegparser.py ('k') | client/dom/scripts/systembase.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: client/dom/scripts/pegparser_test.py
===================================================================
--- client/dom/scripts/pegparser_test.py (revision 5796)
+++ client/dom/scripts/pegparser_test.py (working copy)
@@ -1,200 +0,0 @@
-#!/usr/bin/python
-# Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
-# for details. All rights reserved. Use of this source code is governed by a
-# BSD-style license that can be found in the LICENSE file.
-
-import logging.config
-import pprint
-import re
-import sys
-import unittest
-from pegparser import *
-
-
-class PegParserTestCase(unittest.TestCase):
-
- def _run_test(self, grammar, text, expected,
- strings_are_tokens=False, whitespace_rule=None):
- """Utility for running a parser test and comparing results.
-
- Program exits (sys.exit) if expected does not match actual.
-
- Args:
- grammar -- the root rule to be used by the parser.
- text -- the text to parse.
- expected -- the expected abstract syntax tree. None means
- failure is expected.
- strings_are_tokens -- whether strings are treated as tokens.
- whitespace_rule -- the rule used for matching whitespace.
- Default is None, which means that no whitespace is tolerated.
- """
- parser = PegParser(grammar, whitespace_rule,
- strings_are_tokens=strings_are_tokens)
- actual = None
- error = None
- try:
- actual = parser.parse(text)
- except SyntaxError, e:
- error = e
- pass
-
- if actual != expected:
- msg = '''
-CONTENT:
-%s
-EXPECTED:
-%s
-ACTUAL:
-%s
-ERROR: %s''' % (text, pprint.pformat(expected), pprint.pformat(actual), error)
- self.fail(msg)
-
- def test_sequence(self):
- sequence = SEQUENCE('A', 'BB', 'C')
- self._run_test(grammar=sequence, text='ABBC', expected=['A', 'BB', 'C'])
- self._run_test(grammar=sequence, text='BBAC', expected=None)
- # Syntax Sugar
- sequence = ['A', 'BB', 'C']
- self._run_test(grammar=sequence, text='ABBC', expected=['A', 'BB', 'C'])
- self._run_test(grammar=sequence, text='BBAC', expected=None)
-
- def test_regex(self):
- regex = re.compile(r'[A-Za-z]*')
- self._run_test(grammar=regex, text='AaBb', expected='AaBb')
- self._run_test(grammar=regex, text='0AaBb', expected=None)
- self._run_test(grammar=regex, text='Aa0Bb', expected=None)
-
- def test_function(self):
- def Func():
- return 'ABC'
- self._run_test(grammar=Func, text='ABC', expected=('Func', 'ABC'))
- self._run_test(grammar=Func, text='XYZ', expected=None)
-
- def test_function_label(self):
- def func():
- return 'ABC'
-
- def _func():
- return 'ABC'
-
- self._run_test(grammar=func, text='ABC', expected=('func', 'ABC'))
- self._run_test(grammar=_func, text='ABC', expected='ABC')
-
- def test_label(self):
- sequence = [TOKEN('def'), LABEL('funcName', re.compile(r'[a-z0-9]*')),
- TOKEN('():')]
- self._run_test(grammar=sequence, text='def f1():',
- whitespace_rule=' ', expected=[('funcName', 'f1')])
- self._run_test(grammar=sequence, text='def f2():',
- whitespace_rule=' ', expected=[('funcName', 'f2')])
-
- def test_or(self):
- grammer = OR('A', 'B')
- self._run_test(grammar=grammer, text='A', expected='A')
- self._run_test(grammar=grammer, text='B', expected='B')
- self._run_test(grammar=grammer, text='C', expected=None)
-
- def test_maybe(self):
- seq = ['A', MAYBE('B'), 'C']
- self._run_test(grammar=seq, text='ABC', expected=['A', 'B', 'C'])
- self._run_test(grammar=seq, text='ADC', expected=None)
- self._run_test(grammar=seq, text='AC', expected=['A', 'C'])
- self._run_test(grammar=seq, text='AB', expected=None)
-
- def test_many(self):
- seq = ['A', MANY('B'), 'C']
- self._run_test(grammar=seq, text='ABC', expected=['A', 'B', 'C'])
- self._run_test(grammar=seq, text='ABBBBC',
- expected=['A', 'B', 'B', 'B', 'B', 'C'])
- self._run_test(grammar=seq, text='AC', expected=None)
-
- def test_many_with_separator(self):
- letter = OR('A', 'B', 'C')
-
- def _gram():
- return [letter, MAYBE([TOKEN(','), _gram])]
-
- self._run_test(grammar=_gram, text='A,B,C,B',
- expected=['A', 'B', 'C', 'B'])
- self._run_test(grammar=_gram, text='A B C', expected=None)
- shortergrammar = MANY(letter, TOKEN(','))
- self._run_test(grammar=shortergrammar, text='A,B,C,B',
- expected=['A', 'B', 'C', 'B'])
- self._run_test(grammar=shortergrammar, text='A B C', expected=None)
-
- def test_raise(self):
- self._run_test(grammar=['A', 'B'], text='AB',
- expected=['A', 'B'])
- try:
- self._run_test(grammar=['A', 'B', RAISE('test')], text='AB',
- expected=None)
- print 'Expected RuntimeError'
- sys.exit(-1)
- except RuntimeError, e:
- return
-
- def test_whitespace(self):
- gram = MANY('A')
- self._run_test(grammar=gram, text='A A A', expected=None)
- self._run_test(grammar=gram, whitespace_rule=' ', text='A A A',
- expected=['A', 'A', 'A'])
-
- def test_math_expression_syntax(self):
- operator = LABEL('op', OR('+', '-', '/', '*'))
- literal = LABEL('num', re.compile(r'[0-9]+'))
-
- def _exp():
- return MANY(OR(literal, [TOKEN('('), _exp, TOKEN(')')]),
- separator=operator)
-
- self._run_test(grammar=_exp,
- text='(1-2)+3*((4*5)*6)+(7+8/9)-10',
- expected=[[('num', '1'), ('op', '-'), ('num', '2')],
- ('op', '+'),
- ('num', '3'),
- ('op', '*'),
- [[('num', '4'), ('op', '*'), ('num', '5')],
- ('op', '*'), ('num', '6')],
- ('op', '+'),
- [('num', '7'), ('op', '+'), ('num', '8'),
- ('op', '/'), ('num', '9')],
- ('op', '-'),
- ('num', '10')])
-
- def test_mini_language(self):
- def name():
- return re.compile(r'[a-z]+')
-
- def var_decl():
- return ['var', name, ';']
-
- def func_invoke():
- return [name, '(', ')', ';']
-
- def func_body():
- return MANY(OR(var_decl, func_invoke))
-
- def func_decl():
- return ['function', name, '(', ')', '{', func_body, '}']
-
- def args():
- return MANY(name, ',')
-
- def program():
- return MANY(OR(var_decl, func_decl))
-
- self._run_test(grammar=program,
- whitespace_rule=OR('\n', ' '),
- strings_are_tokens=True,
- text='var x;\nfunction f(){\n var y;\n g();\n}\n',
- expected=('program',[
- ('var_decl', [('name', 'x')]),
- ('func_decl', [('name', 'f'), ('func_body', [
- ('var_decl', [('name', 'y')]),
- ('func_invoke', [('name', 'g')])])])]))
-
-
-if __name__ == "__main__":
- logging.config.fileConfig("logging.conf")
- if __name__ == '__main__':
- unittest.main()
« no previous file with comments | « client/dom/scripts/pegparser.py ('k') | client/dom/scripts/systembase.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698