1414from randomstate .prng .xorshift128 import xorshift128
1515from randomstate .prng .xoroshiro128plus import xoroshiro128plus
1616from 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
1819
1920if (sys .version_info > (3 , 0 )):
2021 long = int
@@ -126,10 +127,11 @@ class Base(object):
126127 data2 = data1 = {}
127128
128129 @classmethod
129- def setUpClass (cls ):
130+ def setup_class (cls ):
130131 cls .RandomState = xorshift128 .RandomState
131132 cls .bits = 64
132133 cls .dtype = np .uint64
134+ cls .seed_error_type = TypeError
133135
134136 @classmethod
135137 def _read_csv (cls , filename ):
@@ -189,86 +191,163 @@ def test_uniform_float(self):
189191 assert_allclose (uniforms , vals )
190192 assert_equal (uniforms .dtype , np .float32 )
191193
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 ])
192221
193222class TestXorshift128 (Base , TestCase ):
194223 @classmethod
195- def setUpClass (cls ):
224+ def setup_class (cls ):
196225 cls .RandomState = xorshift128 .RandomState
197226 cls .bits = 64
198227 cls .dtype = np .uint64
199228 cls .data1 = cls ._read_csv (join (pwd , './data/xorshift128-testset-1.csv' ))
200229 cls .data2 = cls ._read_csv (join (pwd , './data/xorshift128-testset-2.csv' ))
201230 cls .uniform32_func = uniform32_from_uint64
231+ cls .seed_error_type = TypeError
202232
203233
204234class TestXoroshiro128plus (Base , TestCase ):
205235 @classmethod
206- def setUpClass (cls ):
236+ def setup_class (cls ):
207237 cls .RandomState = xoroshiro128plus .RandomState
208238 cls .bits = 64
209239 cls .dtype = np .uint64
210240 cls .data1 = cls ._read_csv (join (pwd , './data/xoroshiro128plus-testset-1.csv' ))
211241 cls .data2 = cls ._read_csv (join (pwd , './data/xoroshiro128plus-testset-2.csv' ))
212-
242+ cls . seed_error_type = TypeError
213243
214244class TestXorshift1024 (Base , TestCase ):
215245 @classmethod
216- def setUpClass (cls ):
246+ def setup_class (cls ):
217247 cls .RandomState = xorshift1024 .RandomState
218248 cls .bits = 64
219249 cls .dtype = np .uint64
220250 cls .data1 = cls ._read_csv (join (pwd , './data/xorshift1024-testset-1.csv' ))
221251 cls .data2 = cls ._read_csv (join (pwd , './data/xorshift1024-testset-2.csv' ))
222-
252+ cls . seed_error_type = TypeError
223253
224254class TestMT19937 (Base , TestCase ):
225255 @classmethod
226- def setUpClass (cls ):
256+ def setup_class (cls ):
227257 cls .RandomState = mt19937 .RandomState
228258 cls .bits = 32
229259 cls .dtype = np .uint32
230260 cls .data1 = cls ._read_csv (join (pwd , './data/randomkit-testset-1.csv' ))
231261 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 ])
232293
233294
234295class TestPCG32 (Base , TestCase ):
235296 @classmethod
236- def setUpClass (cls ):
297+ def setup_class (cls ):
237298 cls .RandomState = pcg32 .RandomState
238299 cls .bits = 32
239300 cls .dtype = np .uint32
240301 cls .data1 = cls ._read_csv (join (pwd , './data/pcg32-testset-1.csv' ))
241302 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 )])
242311
243312
244313class TestPCG64 (Base , TestCase ):
245314 @classmethod
246- def setUpClass (cls ):
315+ def setup_class (cls ):
247316 cls .RandomState = pcg64 .RandomState
248317 cls .bits = 64
249318 cls .dtype = np .uint64
250319 cls .data1 = cls ._read_csv (join (pwd , './data/pcg64-testset-1.csv' ))
251320 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 )])
252329
253330
254331class TestMRG32K3A (Base , TestCase ):
255332 @classmethod
256- def setUpClass (cls ):
333+ def setup_class (cls ):
257334 cls .RandomState = mrg32k3a .RandomState
258335 cls .bits = 32
259336 cls .dtype = np .uint32
260337 cls .data1 = cls ._read_csv (join (pwd , './data/mrg32k3a-testset-1.csv' ))
261338 cls .data2 = cls ._read_csv (join (pwd , './data/mrg32k3a-testset-2.csv' ))
339+ cls .seed_error_type = TypeError
262340
263341
264342class TestMLFG (Base , TestCase ):
265343 @classmethod
266- def setUpClass (cls ):
344+ def setup_class (cls ):
267345 cls .RandomState = mlfg_1279_861 .RandomState
268346 cls .bits = 63
269347 cls .dtype = np .uint64
270348 cls .data1 = cls ._read_csv (join (pwd , './data/mlfg-testset-1.csv' ))
271349 cls .data2 = cls ._read_csv (join (pwd , './data/mlfg-testset-2.csv' ))
350+ cls .seed_error_type = TypeError
272351
273352 def test_raw (self ):
274353 rs = self .RandomState (* self .data1 ['seed' ])
@@ -284,12 +363,13 @@ def test_raw(self):
284363
285364class TestDSFMT (Base , TestCase ):
286365 @classmethod
287- def setUpClass (cls ):
366+ def setup_class (cls ):
288367 cls .RandomState = dsfmt .RandomState
289368 cls .bits = 53
290369 cls .dtype = np .uint64
291370 cls .data1 = cls ._read_csv (join (pwd , './data/dSFMT-testset-1.csv' ))
292371 cls .data2 = cls ._read_csv (join (pwd , './data/dSFMT-testset-2.csv' ))
372+ cls .seed_error_type = TypeError
293373
294374 def test_uniform_double (self ):
295375 rs = self .RandomState (* self .data1 ['seed' ])
0 commit comments