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 import sys, types, operator
39
40
41
42
43
44
45 try:
46 types.StringTypes
47 except:
48 try:
49 types.StringTypes = (types.StringType, types.UnicodeType)
50 except:
51 types.StringTypes = (types.StringType,)
52
53 try:
54 types.UnicodeType
55 except:
56 types.UnicodeType = None
57
58
60 if type(s) is types.UnicodeType:
61 try:
62 x = str(s)
63 except:
64 x = ""
65 for c in x:
66 if ord(c) >= 256:
67 c = ""
68 x = x + c
69 return s
70 else:
71 x = str(s)
72 return x
73
74
75
76
77
78
80 return tuple(range(len(object)))
81
82 -def trange(start, stop=None, step=None):
83 if stop is None:
84 return tuple(range(start))
85 elif step is None:
86 return tuple(range(start, stop))
87 else:
88 return tuple(range(start, stop, step))
89
91 return range(len(object))
92
94 if type(sequence) is types.TupleType:
95 l = list(sequence)
96 l.reverse()
97 l = tuple(l)
98 elif type(sequence) is types.ListType:
99 l = sequence[:]
100 l.reverse()
101 else:
102 l = list(sequence)
103 l.reverse()
104 return l
105
106 -def irange(object, indices=None):
107 if indices is None:
108 return tuple(map(None, range(len(object)), object))
109 else:
110
111 l = []
112 for i in indices:
113 l.append((i, object[i]))
114 return tuple(l)
115
116 -def count(condition, sequence):
117 if condition is None:
118 return len(filter(None, sequence))
119 else:
120
121
122 return len(filter(None, map(condition, sequence)))
123
124 -def exists(condition, sequence):
125 if condition is None:
126 condition = operator.truth
127 for obj in sequence:
128 if condition(obj):
129 return 1
130 return 0
131
132 -def forall(condition, sequence):
133 if condition is None:
134 condition = operator.truth
135 for obj in sequence:
136 if not condition(obj):
137 return 0
138 return 1
139
140
141
142
143
144
145
146 bool = operator.truth
147
149 if expr < 0: return -1
150 if expr > 0: return 1
151 return 0
152
153
154
155
156
157
158
160 print types.StringTypes
161
162 m = None
163 try:
164 import NewBuiltins.mxTools
165 m = NewBuiltins.mxTools
166 except:
167 print "mxTools not found !"
168 return 0
169
170 b = sys.modules[__name__]
171 t1 = (0, 1, 2, 3, 4)
172 t2 = ()
173 l1 = [0, 1, 2, 3, 4]
174 l2 = []
175 cond1 = lambda x: x == 1
176 cond2 = lambda x: x < 3
177
178 for x in (t1, t2, l1, l2):
179 assert b.indices(x) == m.indices(x)
180 assert b.range_len(x) == m.range_len(x)
181 assert b.reverse(x) == m.reverse(x)
182 assert b.irange(x) == m.irange(x)
183 for cond in (cond1, cond2):
184 assert b.count(cond, x) == m.count(cond, x)
185 assert b.exists(cond, x) == m.exists(cond, x)
186 assert b.forall(cond, x) == m.forall(cond, x)
187
188 assert b.irange(t1, t1) == m.irange(t1, t1)
189 assert b.irange(t1, reverse(t1)) == m.irange(t1, reverse(t1))
190 assert b.irange(t1, t2) == m.irange(t1, t2)
191
192 assert b.trange(10) == m.trange(10)
193 assert b.trange(0, 10) == m.trange(0, 10)
194 assert b.trange(0, 10, 2) == m.trange(0, 10, 2)
195
196 print "All tests passed."
197 return 0
198
199 if __name__ == "__main__":
200 sys.exit(mfxtools_main(sys.argv))
201