158 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			158 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | """Simple example using doctests.
 | ||
|  | 
 | ||
|  | This file just contains doctests both using plain python and yap_ipython prompts. | ||
|  | All tests should be loaded by nose. | ||
|  | """
 | ||
|  | 
 | ||
|  | def pyfunc(): | ||
|  |     """Some pure python tests...
 | ||
|  | 
 | ||
|  |     >>> pyfunc() | ||
|  |     'pyfunc' | ||
|  | 
 | ||
|  |     >>> import os | ||
|  | 
 | ||
|  |     >>> 2+3 | ||
|  |     5 | ||
|  | 
 | ||
|  |     >>> for i in range(3): | ||
|  |     ...     print(i, end=' ') | ||
|  |     ...     print(i+1, end=' ') | ||
|  |     ... | ||
|  |     0 1 1 2 2 3  | ||
|  |     """
 | ||
|  |     return 'pyfunc' | ||
|  | 
 | ||
|  | def ipfunc(): | ||
|  |     """Some ipython tests...
 | ||
|  | 
 | ||
|  |     In [1]: import os | ||
|  | 
 | ||
|  |     In [3]: 2+3 | ||
|  |     Out[3]: 5 | ||
|  | 
 | ||
|  |     In [26]: for i in range(3): | ||
|  |        ....:     print(i, end=' ') | ||
|  |        ....:     print(i+1, end=' ') | ||
|  |        ....: | ||
|  |     0 1 1 2 2 3  | ||
|  | 
 | ||
|  | 
 | ||
|  |     Examples that access the operating system work: | ||
|  | 
 | ||
|  |     In [1]: !echo hello | ||
|  |     hello | ||
|  | 
 | ||
|  |     In [2]: !echo hello > /tmp/foo_iptest | ||
|  | 
 | ||
|  |     In [3]: !cat /tmp/foo_iptest | ||
|  |     hello | ||
|  | 
 | ||
|  |     In [4]: rm -f /tmp/foo_iptest | ||
|  | 
 | ||
|  |     It's OK to use '_' for the last result, but do NOT try to use yap_ipython's | ||
|  |     numbered history of _NN outputs, since those won't exist under the | ||
|  |     doctest environment: | ||
|  | 
 | ||
|  |     In [7]: 'hi' | ||
|  |     Out[7]: 'hi' | ||
|  | 
 | ||
|  |     In [8]: print(repr(_)) | ||
|  |     'hi' | ||
|  |      | ||
|  |     In [7]: 3+4 | ||
|  |     Out[7]: 7 | ||
|  | 
 | ||
|  |     In [8]: _+3 | ||
|  |     Out[8]: 10 | ||
|  | 
 | ||
|  |     In [9]: ipfunc() | ||
|  |     Out[9]: 'ipfunc' | ||
|  |     """
 | ||
|  |     return 'ipfunc' | ||
|  | 
 | ||
|  | 
 | ||
|  | def ranfunc(): | ||
|  |     """A function with some random output.
 | ||
|  | 
 | ||
|  |        Normal examples are verified as usual: | ||
|  |        >>> 1+3 | ||
|  |        4 | ||
|  | 
 | ||
|  |        But if you put '# random' in the output, it is ignored: | ||
|  |        >>> 1+3 | ||
|  |        junk goes here...  # random | ||
|  | 
 | ||
|  |        >>> 1+2 | ||
|  |        again,  anything goes #random | ||
|  |        if multiline, the random mark is only needed once. | ||
|  | 
 | ||
|  |        >>> 1+2 | ||
|  |        You can also put the random marker at the end: | ||
|  |        # random | ||
|  | 
 | ||
|  |        >>> 1+2 | ||
|  |        # random | ||
|  |        .. or at the beginning. | ||
|  | 
 | ||
|  |        More correct input is properly verified: | ||
|  |        >>> ranfunc() | ||
|  |        'ranfunc' | ||
|  |     """
 | ||
|  |     return 'ranfunc' | ||
|  | 
 | ||
|  | 
 | ||
|  | def random_all(): | ||
|  |     """A function where we ignore the output of ALL examples.
 | ||
|  | 
 | ||
|  |     Examples: | ||
|  | 
 | ||
|  |       # all-random | ||
|  | 
 | ||
|  |       This mark tells the testing machinery that all subsequent examples should | ||
|  |       be treated as random (ignoring their output).  They are still executed, | ||
|  |       so if a they raise an error, it will be detected as such, but their | ||
|  |       output is completely ignored. | ||
|  | 
 | ||
|  |       >>> 1+3 | ||
|  |       junk goes here... | ||
|  | 
 | ||
|  |       >>> 1+3 | ||
|  |       klasdfj; | ||
|  | 
 | ||
|  |       >>> 1+2 | ||
|  |       again,  anything goes | ||
|  |       blah... | ||
|  |     """
 | ||
|  |     pass | ||
|  | 
 | ||
|  | def iprand(): | ||
|  |     """Some ipython tests with random output.
 | ||
|  | 
 | ||
|  |     In [7]: 3+4 | ||
|  |     Out[7]: 7 | ||
|  | 
 | ||
|  |     In [8]: print('hello') | ||
|  |     world  # random | ||
|  | 
 | ||
|  |     In [9]: iprand() | ||
|  |     Out[9]: 'iprand' | ||
|  |     """
 | ||
|  |     return 'iprand' | ||
|  | 
 | ||
|  | def iprand_all(): | ||
|  |     """Some ipython tests with fully random output.
 | ||
|  | 
 | ||
|  |     # all-random | ||
|  |      | ||
|  |     In [7]: 1 | ||
|  |     Out[7]: 99 | ||
|  | 
 | ||
|  |     In [8]: print('hello') | ||
|  |     world | ||
|  | 
 | ||
|  |     In [9]: iprand_all() | ||
|  |     Out[9]: 'junk' | ||
|  |     """
 | ||
|  |     return 'iprand_all' |