symbian-qemu-0.9.1-12/python-2.6.1/Lib/test/test_cmd.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 #!/usr/bin/env python
       
     2 """
       
     3 Test script for the 'cmd' module
       
     4 Original by Michael Schneider
       
     5 """
       
     6 
       
     7 
       
     8 import cmd
       
     9 import sys
       
    10 
       
    11 class samplecmdclass(cmd.Cmd):
       
    12     """
       
    13     Instance the sampleclass:
       
    14     >>> mycmd = samplecmdclass()
       
    15 
       
    16     Test for the function parseline():
       
    17     >>> mycmd.parseline("")
       
    18     (None, None, '')
       
    19     >>> mycmd.parseline("?")
       
    20     ('help', '', 'help ')
       
    21     >>> mycmd.parseline("?help")
       
    22     ('help', 'help', 'help help')
       
    23     >>> mycmd.parseline("!")
       
    24     ('shell', '', 'shell ')
       
    25     >>> mycmd.parseline("!command")
       
    26     ('shell', 'command', 'shell command')
       
    27     >>> mycmd.parseline("func")
       
    28     ('func', '', 'func')
       
    29     >>> mycmd.parseline("func arg1")
       
    30     ('func', 'arg1', 'func arg1')
       
    31 
       
    32 
       
    33     Test for the function onecmd():
       
    34     >>> mycmd.onecmd("")
       
    35     >>> mycmd.onecmd("add 4 5")
       
    36     9
       
    37     >>> mycmd.onecmd("")
       
    38     9
       
    39     >>> mycmd.onecmd("test")
       
    40     *** Unknown syntax: test
       
    41 
       
    42     Test for the function emptyline():
       
    43     >>> mycmd.emptyline()
       
    44     *** Unknown syntax: test
       
    45 
       
    46     Test for the function default():
       
    47     >>> mycmd.default("default")
       
    48     *** Unknown syntax: default
       
    49 
       
    50     Test for the function completedefault():
       
    51     >>> mycmd.completedefault()
       
    52     This is the completedefault methode
       
    53     >>> mycmd.completenames("a")
       
    54     ['add']
       
    55 
       
    56     Test for the function completenames():
       
    57     >>> mycmd.completenames("12")
       
    58     []
       
    59     >>> mycmd.completenames("help")
       
    60     ['help', 'help']
       
    61 
       
    62     Test for the function complete_help():
       
    63     >>> mycmd.complete_help("a")
       
    64     ['add']
       
    65     >>> mycmd.complete_help("he")
       
    66     ['help', 'help']
       
    67     >>> mycmd.complete_help("12")
       
    68     []
       
    69 
       
    70     Test for the function do_help():
       
    71     >>> mycmd.do_help("testet")
       
    72     *** No help on testet
       
    73     >>> mycmd.do_help("add")
       
    74     help text for add
       
    75     >>> mycmd.onecmd("help add")
       
    76     help text for add
       
    77     >>> mycmd.do_help("")
       
    78     <BLANKLINE>
       
    79     Documented commands (type help <topic>):
       
    80     ========================================
       
    81     add
       
    82     <BLANKLINE>
       
    83     Undocumented commands:
       
    84     ======================
       
    85     exit  help  shell
       
    86     <BLANKLINE>
       
    87 
       
    88     Test for the function print_topics():
       
    89     >>> mycmd.print_topics("header", ["command1", "command2"], 2 ,10)
       
    90     header
       
    91     ======
       
    92     command1
       
    93     command2
       
    94     <BLANKLINE>
       
    95 
       
    96     Test for the function columnize():
       
    97     >>> mycmd.columnize([str(i) for i in xrange(20)])
       
    98     0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19
       
    99     >>> mycmd.columnize([str(i) for i in xrange(20)], 10)
       
   100     0  7   14
       
   101     1  8   15
       
   102     2  9   16
       
   103     3  10  17
       
   104     4  11  18
       
   105     5  12  19
       
   106     6  13
       
   107 
       
   108     This is a interactive test, put some commands in the cmdqueue attribute
       
   109     and let it execute
       
   110     This test includes the preloop(), postloop(), default(), emptyline(),
       
   111     parseline(), do_help() functions
       
   112     >>> mycmd.use_rawinput=0
       
   113     >>> mycmd.cmdqueue=["", "add", "add 4 5", "help", "help add","exit"]
       
   114     >>> mycmd.cmdloop()
       
   115     Hello from preloop
       
   116     help text for add
       
   117     *** invalid number of arguments
       
   118     9
       
   119     <BLANKLINE>
       
   120     Documented commands (type help <topic>):
       
   121     ========================================
       
   122     add
       
   123     <BLANKLINE>
       
   124     Undocumented commands:
       
   125     ======================
       
   126     exit  help  shell
       
   127     <BLANKLINE>
       
   128     help text for add
       
   129     Hello from postloop
       
   130     """
       
   131 
       
   132     def preloop(self):
       
   133         print "Hello from preloop"
       
   134 
       
   135     def postloop(self):
       
   136         print "Hello from postloop"
       
   137 
       
   138     def completedefault(self, *ignored):
       
   139         print "This is the completedefault methode"
       
   140         return
       
   141 
       
   142     def complete_command(self):
       
   143         print "complete command"
       
   144         return
       
   145 
       
   146     def do_shell(self):
       
   147         pass
       
   148 
       
   149     def do_add(self, s):
       
   150         l = s.split()
       
   151         if len(l) != 2:
       
   152             print "*** invalid number of arguments"
       
   153             return
       
   154         try:
       
   155             l = [int(i) for i in l]
       
   156         except ValueError:
       
   157             print "*** arguments should be numbers"
       
   158             return
       
   159         print l[0]+l[1]
       
   160 
       
   161     def help_add(self):
       
   162         print "help text for add"
       
   163         return
       
   164 
       
   165     def do_exit(self, arg):
       
   166         return True
       
   167 
       
   168 def test_main(verbose=None):
       
   169     from test import test_support, test_cmd
       
   170     test_support.run_doctest(test_cmd, verbose)
       
   171 
       
   172 import trace, sys
       
   173 def test_coverage(coverdir):
       
   174     tracer=trace.Trace(ignoredirs=[sys.prefix, sys.exec_prefix,],
       
   175                         trace=0, count=1)
       
   176     tracer.run('reload(cmd);test_main()')
       
   177     r=tracer.results()
       
   178     print "Writing coverage results..."
       
   179     r.write_results(show_missing=True, summary=True, coverdir=coverdir)
       
   180 
       
   181 if __name__ == "__main__":
       
   182     if "-c" in sys.argv:
       
   183         test_coverage('/tmp/cmd.cover')
       
   184     else:
       
   185         test_main()