home *** CD-ROM | disk | FTP | other *** search
/ Komputer for Alle 2004 #2 / K-CD-2-2004.ISO / OpenOffice Sv / f_0397 / python-core-2.2.2 / lib / test / test_codeop.py < prev    next >
Encoding:
Python Source  |  2003-07-18  |  2.7 KB  |  97 lines

  1. """
  2.    Test cases for codeop.py
  3.    Nick Mathewson
  4. """
  5. import unittest
  6. from test_support import run_unittest
  7.  
  8. from codeop import compile_command
  9.  
  10. class CodeopTests(unittest.TestCase):
  11.  
  12.     def assertValid(self, str, symbol='single'):
  13.         '''succeed iff str is a valid piece of code'''
  14.         expected = compile(str, "<input>", symbol)
  15.         self.assertEquals( compile_command(str, "<input>", symbol), expected)
  16.  
  17.  
  18.     def assertIncomplete(self, str, symbol='single'):
  19.         '''succeed iff str is the start of a valid piece of code'''
  20.         self.assertEquals( compile_command(str, symbol=symbol), None)
  21.  
  22.     def assertInvalid(self, str, symbol='single', is_syntax=1):
  23.         '''succeed iff str is the start of an invalid piece of code'''
  24.         try:
  25.             compile_command(str,symbol=symbol)
  26.             self.fail("No exception thrown for invalid code")
  27.         except SyntaxError:
  28.             self.assert_(is_syntax)
  29.         except OverflowError:
  30.             self.assert_(not is_syntax)
  31.  
  32.     def test_valid(self):
  33.         av = self.assertValid
  34.         av("a = 1\n")
  35.         av("def x():\n  pass\n")
  36.         av("pass\n")
  37.         av("3**3\n")
  38.         av("if 9==3:\n   pass\nelse:\n   pass\n")
  39.         av("#a\n#b\na = 3\n")
  40.         av("#a\n\n   \na=3\n")
  41.         av("a=3\n\n")
  42.  
  43.         # special case
  44.         self.assertEquals(compile_command(""),
  45.                           compile("pass", "<input>", 'single'))
  46.  
  47.         av("3**3","eval")
  48.         av("(lambda z: \n z**3)","eval")
  49.         av("#a\n#b\na**3","eval")
  50.  
  51.     def test_incomplete(self):
  52.         ai = self.assertIncomplete
  53.         ai("(a **")
  54.         ai("def x():\n")
  55.         ai("(a,b,")
  56.         ai("(a,b,(")
  57.         ai("(a,b,(")
  58.         ai("if 9==3:\n   pass\nelse:\n")
  59.         ai("if 9==3:\n   pass\nelse:\n   pass")
  60.         ai("a = (")
  61.         ai("a = 9+ \\")
  62.  
  63.         ai("(","eval")
  64.         ai("(\n\n\n","eval")
  65.         ai("(9+","eval")
  66.         ai("9+ \\","eval")
  67.         ai("lambda z: \\","eval")
  68.  
  69.     def test_invalid(self):
  70.         ai = self.assertInvalid
  71.         ai("a b")
  72.         ai("a = ")
  73.         ai("a = 9 +")
  74.  
  75.         ai("a = 1","eval")
  76.         ai("a = (","eval")
  77.         ai("]","eval")
  78.         ai("())","eval")
  79.         ai("[}","eval")
  80.         ai("9+","eval")
  81.         ai("lambda z:","eval")
  82.         ai("a b","eval")
  83.  
  84.     def test_filename(self):
  85.         self.assertEquals(compile_command("a = 1\n", "abc").co_filename,
  86.                           compile("a = 1\n", "abc", 'single').co_filename)
  87.         self.assertNotEquals(compile_command("a = 1\n", "abc").co_filename,
  88.                              compile("a = 1\n", "def", 'single').co_filename)
  89.  
  90.  
  91. def test_main():
  92.     run_unittest(CodeopTests)
  93.  
  94.  
  95. if __name__ == "__main__":
  96.     test_main()
  97.