[Python-checkins] CVS: python/dist/src/Lib/test test_codeop.py,NONE,1.1

Martin v. L?wis loewis@users.sourceforge.net
2001年7月30日 05:30:10 -0700


Update of /cvsroot/python/python/dist/src/Lib/test
In directory usw-pr-cvs1:/tmp/cvs-serv574
Added Files:
	test_codeop.py 
Log Message:
Patch #442866: Tests for codeop.py.
--- NEW FILE: test_codeop.py ---
"""
 Test cases for codeop.py
 Nick Mathewson
"""
import unittest
from test_support import run_unittest
from codeop import compile_command
class CodeopTests(unittest.TestCase):
 def assertValid(self, str, symbol='single'):
 '''succeed iff str is a valid piece of code'''
 expected = compile(str, "<input>", symbol)
 self.assertEquals( compile_command(str, "<input>", symbol), expected)
 
 def assertIncomplete(self, str, symbol='single'):
 '''succeed iff str is the start of a valid piece of code'''
 self.assertEquals( compile_command(str, symbol=symbol), None)
 def assertInvalid(self, str, symbol='single', is_syntax=1):
 '''succeed iff str is the start of an invalid piece of code'''
 try:
 compile_command(str,symbol=symbol)
 self.fail("No exception thrown for invalid code")
 except SyntaxError:
 self.assert_(is_syntax)
 except OverflowError:
 self.assert_(not is_syntax)
 def test_valid(self):
 av = self.assertValid
 av("a = 1\n")
 av("def x():\n pass\n")
 av("pass\n")
 av("3**3\n")
 av("if 9==3:\n pass\nelse:\n pass\n")
 av("#a\n#b\na = 3\n")
 av("#a\n\n \na=3\n")
 av("a=3\n\n")
 # special case
 self.assertEquals(compile_command(""), 
 compile("pass", "<input>", 'single'))
 av("3**3","eval")
 av("(lambda z: \n z**3)","eval")
 av("#a\n#b\na**3","eval")
 
 def test_incomplete(self):
 ai = self.assertIncomplete
 ai("(a **")
 ai("def x():\n")
 ai("(a,b,")
 ai("(a,b,(")
 ai("(a,b,(")
 ai("if 9==3:\n pass\nelse:\n")
 ai("if 9==3:\n pass\nelse:\n pass")
 ai("a = (")
 ai("a = 9+ \\")
 
 ai("(","eval")
 ai("(\n\n\n","eval")
 ai("(9+","eval")
 ai("9+ \\","eval")
 ai("lambda z: \\","eval")
 def test_invalid(self):
 ai = self.assertInvalid
 ai("a b")
 ai("a = ")
 ai("a = 9 +")
 ai("a = 1","eval")
 ai("a = (","eval")
 ai("]","eval")
 ai("())","eval")
 ai("[}","eval")
 ai("9+","eval")
 ai("lambda z:","eval")
 ai("a b","eval")
 def test_filename(self):
 self.assertEquals(compile_command("a = 1\n", "abc").co_filename,
 compile("a = 1\n", "abc", 'single').co_filename)
 self.assertNotEquals(compile_command("a = 1\n", "abc").co_filename,
 compile("a = 1\n", "def", 'single').co_filename)
run_unittest(CodeopTests)

AltStyle によって変換されたページ (->オリジナル) /