#!/usr/bin/python # # ballBounce_test: Tests the ball bouncing ascii art animation # # Tests the ball bouncing ascii art animation to see if the art will print and appear to animate. # import sys, imp, atexit sys.path.append("/home/courses/cs3214/software/pexpect-dpty/"); import pexpect, shellio, signal, time, os, re, proc_check #Ensure the shell process is terminated def force_shell_termination(shell_process): c.close(force=True) #pulling in the regular expression and other definitions definitions_scriptname = sys.argv[1] def_module = imp.load_source('', definitions_scriptname) logfile = None if hasattr(def_module, 'logfile'): logfile = def_module.logfile # spawn an instance of the shell c = pexpect.spawn(def_module.shell, drainpty=True, logfile=logfile, args=['-p', 'plugins/']) atexit.register(force_shell_termination, shell_process=c) # set timeout for all following 'expect*' calls to 5 seconds c.timeout = 5 # Tests a valid input argument c.sendline("ballBounce 1") expected = ''' 000000000 0000000000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000000000000 000000000 0000000000000000000000000 000000000 0000000000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000000000000 000000000 0000000000000000000000000 000000000 0000000000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000000000000 000000000 0000000000000000000000000 000000000 0000000000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000000000000 000000000 0000000000000000000000000 000000000 0000000000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000000000000 000000000 0000000000000000000000000 000000000 0000000000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000000000000 0000000000000000000000000 000000000 0000000000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000000000000 000000000 0000000000000000000000000 000000000 0000000000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000000000000 000000000 0000000000000000000000000 000000000 0000000000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000000000000 000000000 0000000000000000000000000 000000000 0000000000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000000000000 000000000 0000000000000000000000000 000000000 0000000000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0000000000000 000000000 0000000000000000000000000 ''' for l in expected.split('\n'): c.expect_exact(l); # Tests invalid input arguments c.sendline("ballBounce") assert c.expect_exact("Error: Specify number of bounces") == 0, "error case not handled" c.sendline("ballBounce abc") assert c.expect_exact("Error: Invalid bounce argument, please enter a positive integer") == 0, "error case not handled." c.sendline("ballBounce -1") assert c.expect_exact("Error: Invalid bounce argument, please enter a positive integer") == 0, "error case not handled" # end the shell program by sending it an end-of-file character c.sendline("exit"); # ensure that no extra characters are output after exiting assert c.expect_exact("exit\r\n") == 0, "Shell output extraneous characters" # the test was successful shellio.success()