aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/ipython/py2/IPython/testing/plugin/dtexample.py
blob: 081bf35571999d74741d646846f0439909fc795a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
"""Simple example using doctests. 
 
This file just contains doctests both using plain python and IPython prompts. 
All tests should be loaded by nose. 
""" 
from __future__ import print_function 
 
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 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'