14
14
from randomstate .prng .xorshift128 import xorshift128
15
15
from randomstate .prng .xoroshiro128plus import xoroshiro128plus
16
16
from randomstate .prng .dsfmt import dsfmt
17
- from numpy .testing import assert_equal , assert_allclose , assert_array_equal
17
+ from numpy .testing import assert_equal , assert_allclose , assert_array_equal , \
18
+ assert_raises
18
19
19
20
if (sys .version_info > (3 , 0 )):
20
21
long = int
@@ -126,10 +127,11 @@ class Base(object):
126
127
data2 = data1 = {}
127
128
128
129
@classmethod
129
- def setUpClass (cls ):
130
+ def setup_class (cls ):
130
131
cls .RandomState = xorshift128 .RandomState
131
132
cls .bits = 64
132
133
cls .dtype = np .uint64
134
+ cls .seed_error_type = TypeError
133
135
134
136
@classmethod
135
137
def _read_csv (cls , filename ):
@@ -189,86 +191,163 @@ def test_uniform_float(self):
189
191
assert_allclose (uniforms , vals )
190
192
assert_equal (uniforms .dtype , np .float32 )
191
193
194
+ def test_seed_float (self ):
195
+ # GH #82
196
+ rs = self .RandomState (* self .data1 ['seed' ])
197
+ assert_raises (self .seed_error_type , rs .seed , np .pi )
198
+ assert_raises (self .seed_error_type , rs .seed , - np .pi )
199
+
200
+ def test_seed_float_array (self ):
201
+ # GH #82
202
+ rs = self .RandomState (* self .data1 ['seed' ])
203
+ assert_raises (self .seed_error_type , rs .seed , np .array ([np .pi ]))
204
+ assert_raises (self .seed_error_type , rs .seed , np .array ([- np .pi ]))
205
+ assert_raises (self .seed_error_type , rs .seed , np .array ([np .pi , - np .pi ]))
206
+ assert_raises (self .seed_error_type , rs .seed , np .array ([0 , np .pi ]))
207
+ assert_raises (self .seed_error_type , rs .seed , [np .pi ])
208
+ assert_raises (self .seed_error_type , rs .seed , [0 , np .pi ])
209
+
210
+ def test_seed_out_of_range (self ):
211
+ # GH #82
212
+ rs = self .RandomState (* self .data1 ['seed' ])
213
+ assert_raises (ValueError , rs .seed , 2 ** (2 * self .bits + 1 ))
214
+ assert_raises (ValueError , rs .seed , - 1 )
215
+
216
+ def test_seed_out_of_range_array (self ):
217
+ # GH #82
218
+ rs = self .RandomState (* self .data1 ['seed' ])
219
+ assert_raises (ValueError , rs .seed , [2 ** (2 * self .bits + 1 )])
220
+ assert_raises (ValueError , rs .seed , [- 1 ])
192
221
193
222
class TestXorshift128 (Base , TestCase ):
194
223
@classmethod
195
- def setUpClass (cls ):
224
+ def setup_class (cls ):
196
225
cls .RandomState = xorshift128 .RandomState
197
226
cls .bits = 64
198
227
cls .dtype = np .uint64
199
228
cls .data1 = cls ._read_csv (join (pwd , './data/xorshift128-testset-1.csv' ))
200
229
cls .data2 = cls ._read_csv (join (pwd , './data/xorshift128-testset-2.csv' ))
201
230
cls .uniform32_func = uniform32_from_uint64
231
+ cls .seed_error_type = TypeError
202
232
203
233
204
234
class TestXoroshiro128plus (Base , TestCase ):
205
235
@classmethod
206
- def setUpClass (cls ):
236
+ def setup_class (cls ):
207
237
cls .RandomState = xoroshiro128plus .RandomState
208
238
cls .bits = 64
209
239
cls .dtype = np .uint64
210
240
cls .data1 = cls ._read_csv (join (pwd , './data/xoroshiro128plus-testset-1.csv' ))
211
241
cls .data2 = cls ._read_csv (join (pwd , './data/xoroshiro128plus-testset-2.csv' ))
212
-
242
+ cls . seed_error_type = TypeError
213
243
214
244
class TestXorshift1024 (Base , TestCase ):
215
245
@classmethod
216
- def setUpClass (cls ):
246
+ def setup_class (cls ):
217
247
cls .RandomState = xorshift1024 .RandomState
218
248
cls .bits = 64
219
249
cls .dtype = np .uint64
220
250
cls .data1 = cls ._read_csv (join (pwd , './data/xorshift1024-testset-1.csv' ))
221
251
cls .data2 = cls ._read_csv (join (pwd , './data/xorshift1024-testset-2.csv' ))
222
-
252
+ cls . seed_error_type = TypeError
223
253
224
254
class TestMT19937 (Base , TestCase ):
225
255
@classmethod
226
- def setUpClass (cls ):
256
+ def setup_class (cls ):
227
257
cls .RandomState = mt19937 .RandomState
228
258
cls .bits = 32
229
259
cls .dtype = np .uint32
230
260
cls .data1 = cls ._read_csv (join (pwd , './data/randomkit-testset-1.csv' ))
231
261
cls .data2 = cls ._read_csv (join (pwd , './data/randomkit-testset-2.csv' ))
262
+ cls .seed_error_type = ValueError
263
+
264
+ def test_seed_out_of_range (self ):
265
+ # GH #82
266
+ rs = self .RandomState (* self .data1 ['seed' ])
267
+ assert_raises (ValueError , rs .seed , 2 ** (self .bits + 1 ))
268
+ assert_raises (ValueError , rs .seed , - 1 )
269
+ assert_raises (ValueError , rs .seed , 2 ** (2 * self .bits + 1 ))
270
+
271
+ def test_seed_out_of_range_array (self ):
272
+ # GH #82
273
+ rs = self .RandomState (* self .data1 ['seed' ])
274
+ assert_raises (ValueError , rs .seed , [2 ** (self .bits + 1 )])
275
+ assert_raises (ValueError , rs .seed , [- 1 ])
276
+ assert_raises (TypeError , rs .seed , [2 ** (2 * self .bits + 1 )])
277
+
278
+ def test_seed_float (self ):
279
+ # GH #82
280
+ rs = self .RandomState (* self .data1 ['seed' ])
281
+ assert_raises (TypeError , rs .seed , np .pi )
282
+ assert_raises (TypeError , rs .seed , - np .pi )
283
+
284
+ def test_seed_float_array (self ):
285
+ # GH #82
286
+ rs = self .RandomState (* self .data1 ['seed' ])
287
+ assert_raises (TypeError , rs .seed , np .array ([np .pi ]))
288
+ assert_raises (TypeError , rs .seed , np .array ([- np .pi ]))
289
+ assert_raises (TypeError , rs .seed , np .array ([np .pi , - np .pi ]))
290
+ assert_raises (TypeError , rs .seed , np .array ([0 , np .pi ]))
291
+ assert_raises (TypeError , rs .seed , [np .pi ])
292
+ assert_raises (TypeError , rs .seed , [0 , np .pi ])
232
293
233
294
234
295
class TestPCG32 (Base , TestCase ):
235
296
@classmethod
236
- def setUpClass (cls ):
297
+ def setup_class (cls ):
237
298
cls .RandomState = pcg32 .RandomState
238
299
cls .bits = 32
239
300
cls .dtype = np .uint32
240
301
cls .data1 = cls ._read_csv (join (pwd , './data/pcg32-testset-1.csv' ))
241
302
cls .data2 = cls ._read_csv (join (pwd , './data/pcg32-testset-2.csv' ))
303
+ cls .seed_error_type = TypeError
304
+
305
+ def test_seed_out_of_range_array (self ):
306
+ # GH #82
307
+ rs = self .RandomState (* self .data1 ['seed' ])
308
+ assert_raises (TypeError , rs .seed , [2 ** (self .bits + 1 )])
309
+ assert_raises (TypeError , rs .seed , [- 1 ])
310
+ assert_raises (TypeError , rs .seed , [2 ** (2 * self .bits + 1 )])
242
311
243
312
244
313
class TestPCG64 (Base , TestCase ):
245
314
@classmethod
246
- def setUpClass (cls ):
315
+ def setup_class (cls ):
247
316
cls .RandomState = pcg64 .RandomState
248
317
cls .bits = 64
249
318
cls .dtype = np .uint64
250
319
cls .data1 = cls ._read_csv (join (pwd , './data/pcg64-testset-1.csv' ))
251
320
cls .data2 = cls ._read_csv (join (pwd , './data/pcg64-testset-2.csv' ))
321
+ cls .seed_error_type = TypeError
322
+
323
+ def test_seed_out_of_range_array (self ):
324
+ # GH #82
325
+ rs = self .RandomState (* self .data1 ['seed' ])
326
+ assert_raises (TypeError , rs .seed , [2 ** (self .bits + 1 )])
327
+ assert_raises (TypeError , rs .seed , [- 1 ])
328
+ assert_raises (TypeError , rs .seed , [2 ** (2 * self .bits + 1 )])
252
329
253
330
254
331
class TestMRG32K3A (Base , TestCase ):
255
332
@classmethod
256
- def setUpClass (cls ):
333
+ def setup_class (cls ):
257
334
cls .RandomState = mrg32k3a .RandomState
258
335
cls .bits = 32
259
336
cls .dtype = np .uint32
260
337
cls .data1 = cls ._read_csv (join (pwd , './data/mrg32k3a-testset-1.csv' ))
261
338
cls .data2 = cls ._read_csv (join (pwd , './data/mrg32k3a-testset-2.csv' ))
339
+ cls .seed_error_type = TypeError
262
340
263
341
264
342
class TestMLFG (Base , TestCase ):
265
343
@classmethod
266
- def setUpClass (cls ):
344
+ def setup_class (cls ):
267
345
cls .RandomState = mlfg_1279_861 .RandomState
268
346
cls .bits = 63
269
347
cls .dtype = np .uint64
270
348
cls .data1 = cls ._read_csv (join (pwd , './data/mlfg-testset-1.csv' ))
271
349
cls .data2 = cls ._read_csv (join (pwd , './data/mlfg-testset-2.csv' ))
350
+ cls .seed_error_type = TypeError
272
351
273
352
def test_raw (self ):
274
353
rs = self .RandomState (* self .data1 ['seed' ])
@@ -284,12 +363,13 @@ def test_raw(self):
284
363
285
364
class TestDSFMT (Base , TestCase ):
286
365
@classmethod
287
- def setUpClass (cls ):
366
+ def setup_class (cls ):
288
367
cls .RandomState = dsfmt .RandomState
289
368
cls .bits = 53
290
369
cls .dtype = np .uint64
291
370
cls .data1 = cls ._read_csv (join (pwd , './data/dSFMT-testset-1.csv' ))
292
371
cls .data2 = cls ._read_csv (join (pwd , './data/dSFMT-testset-2.csv' ))
372
+ cls .seed_error_type = TypeError
293
373
294
374
def test_uniform_double (self ):
295
375
rs = self .RandomState (* self .data1 ['seed' ])
0 commit comments