| """Simple example using doctests. |
| |
| This file just contains doctests both using plain python and IPython prompts. |
| All tests should be loaded by nose. |
| """ |
|
|
| import os |
|
|
|
|
| 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 |
| |
| |
| It's OK to use '_' for the last result, but do NOT try to use 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 ipos(): |
| """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 |
| """ |
| pass |
|
|
|
|
| ipos.__skip_doctest__ = os.name == "nt" |
|
|
|
|
| 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' |
|
|