Skip to content

Commit c1fcea4

Browse files
authored
Merge pull request #6414 from n8sh/remove-unpredictableseed-from-unittests
Issue 18715 - Non-documented unittests should not use unpredictableSeed or default Random alias merged-on-behalf-of: Nathan Sashihara <n8sh@users.noreply.github.com>
2 parents 1e1cb98 + c1d1c0e commit c1fcea4

File tree

5 files changed

+40
-37
lines changed

5 files changed

+40
-37
lines changed

std/algorithm/internal.d

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ version(unittest)
2121

2222
package string[] rndstuff(T : string)()
2323
{
24-
import std.random : Random, unpredictableSeed, uniform;
24+
import std.random : Random = Xorshift, uniform;
2525

2626
static Random rnd;
2727
static bool first = true;
2828
if (first)
2929
{
30-
rnd = Random(unpredictableSeed);
30+
rnd.seed(234_567_891);
3131
first = false;
3232
}
3333
string[] result =
@@ -46,13 +46,13 @@ version(unittest)
4646

4747
package int[] rndstuff(T : int)()
4848
{
49-
import std.random : Random, unpredictableSeed, uniform;
49+
import std.random : Random = Xorshift, uniform;
5050

5151
static Random rnd;
5252
static bool first = true;
5353
if (first)
5454
{
55-
rnd = Random(unpredictableSeed);
55+
rnd = Random(345_678_912);
5656
first = false;
5757
}
5858
int[] result = new int[uniform(minArraySize, maxArraySize, rnd)];

std/algorithm/iteration.d

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -691,7 +691,7 @@ private struct MapResult(alias fun, Range)
691691
import std.internal.test.dummyrange;
692692
import std.range;
693693
import std.typecons : tuple;
694-
import std.random : unpredictableSeed, uniform, Random;
694+
import std.random : uniform, Random = Xorshift;
695695

696696
int[] arr1 = [ 1, 2, 3, 4 ];
697697
const int[] arr1Const = arr1;
@@ -749,7 +749,7 @@ private struct MapResult(alias fun, Range)
749749
assert(fibsSquares.front == 9);
750750

751751
auto repeatMap = map!"a"(repeat(1));
752-
auto gen = Random(unpredictableSeed);
752+
auto gen = Random(123_456_789);
753753
auto index = uniform(0, 1024, gen);
754754
static assert(isInfinite!(typeof(repeatMap)));
755755
assert(repeatMap[index] == 1);

std/algorithm/mutation.d

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,11 +278,11 @@ if (isInputRange!InputRange && isForwardRange!ForwardRange)
278278
{
279279
import std.algorithm.comparison : equal;
280280
import std.conv : text;
281-
import std.random : Random, unpredictableSeed, uniform;
281+
import std.random : Random = Xorshift, uniform;
282282

283283
// a more elaborate test
284284
{
285-
auto rnd = Random(unpredictableSeed);
285+
auto rnd = Random(123_456_789);
286286
int[] a = new int[uniform(100, 200, rnd)];
287287
int[] b = new int[uniform(100, 200, rnd)];
288288
foreach (ref e; a) e = uniform(-100, 100, rnd);

std/algorithm/sorting.d

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -746,8 +746,8 @@ if (isRandomAccessRange!Range && hasLength!Range && hasSlicing!Range && hasAssig
746746
import std.algorithm.iteration : map;
747747
import std.random;
748748
import std.stdio;
749-
auto s = unpredictableSeed;
750-
auto g = Random(s);
749+
auto s = 123_456_789;
750+
auto g = Xorshift(s);
751751
a = iota(0, uniform(1, 1000, g))
752752
.map!(_ => uniform(-1000, 1000, g))
753753
.array;
@@ -883,9 +883,9 @@ if (ss == SwapStrategy.unstable && isRandomAccessRange!Range
883883

884884
@safe unittest
885885
{
886-
import std.random : Random, uniform, unpredictableSeed;
886+
import std.random : Random = Xorshift, uniform;
887887

888-
immutable uint[] seeds = [3923355730, 1927035882, unpredictableSeed];
888+
immutable uint[] seeds = [3923355730, 1927035882];
889889
foreach (s; seeds)
890890
{
891891
auto r = Random(s);
@@ -1710,7 +1710,7 @@ private void shortSort(alias less, Range)(Range r)
17101710

17111711
@safe unittest
17121712
{
1713-
import std.random : Random, uniform;
1713+
import std.random : Random = Xorshift, uniform;
17141714

17151715
auto rnd = Random(1);
17161716
auto a = new int[uniform(100, 200, rnd)];
@@ -1949,12 +1949,12 @@ if (((ss == SwapStrategy.unstable && (hasSwappableElements!Range ||
19491949
{
19501950
import std.algorithm.internal : rndstuff;
19511951
import std.algorithm.mutation : swapRanges;
1952-
import std.random : Random, unpredictableSeed, uniform;
1952+
import std.random : Random = Xorshift, uniform;
19531953
import std.uni : toUpper;
19541954

19551955
// sort using delegate
19561956
auto a = new int[100];
1957-
auto rnd = Random(unpredictableSeed);
1957+
auto rnd = Random(123_456_789);
19581958
foreach (ref e; a)
19591959
{
19601960
e = uniform(-100, 100, rnd);
@@ -3457,7 +3457,7 @@ private T[] randomArray(Flag!"exactSize" flag = No.exactSize, T = int)(
34573457
T minValue = 0, T maxValue = 255)
34583458
{
34593459
import std.algorithm.iteration : map;
3460-
import std.random : unpredictableSeed, Random, uniform;
3460+
import std.random : uniform;
34613461
auto size = flag == Yes.exactSize ? maxSize : uniform(1, maxSize);
34623462
return iota(0, size).map!(_ => uniform(minValue, maxValue)).array;
34633463
}
@@ -3513,9 +3513,9 @@ private T[] randomArray(Flag!"exactSize" flag = No.exactSize, T = int)(
35133513
{
35143514
import std.algorithm.comparison : max, min;
35153515
import std.algorithm.iteration : reduce;
3516-
import std.random : Random, uniform, unpredictableSeed;
3516+
import std.random : Random = Xorshift, uniform;
35173517

3518-
immutable uint[] seeds = [90027751, 2709791795, 1374631933, 995751648, 3541495258, 984840953, unpredictableSeed];
3518+
immutable uint[] seeds = [90027751, 2709791795, 1374631933, 995751648, 3541495258, 984840953];
35193519
foreach (s; seeds)
35203520
{
35213521
auto r = Random(s);
@@ -3718,10 +3718,10 @@ if (isInputRange!(SRange) && isRandomAccessRange!(TRange)
37183718

37193719
@system unittest
37203720
{
3721-
import std.random : Random, unpredictableSeed, uniform, randomShuffle;
3721+
import std.random : Random = Xorshift, uniform, randomShuffle;
37223722
import std.typecons : Yes;
37233723

3724-
auto r = Random(unpredictableSeed);
3724+
auto r = Random(123_456_789);
37253725
ptrdiff_t[] a = new ptrdiff_t[uniform(1, 1000, r)];
37263726
foreach (i, ref e; a) e = i;
37273727
randomShuffle(a, r);

std/random.d

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -693,7 +693,8 @@ alias MinstdRand = LinearCongruentialEngine!(uint, 48_271, 0, 2_147_483_647);
693693
// Check .save works
694694
static foreach (Type; std.meta.AliasSeq!(MinstdRand0, MinstdRand))
695695
{{
696-
auto rnd1 = Type(unpredictableSeed);
696+
auto rnd1 = Type(123_456_789);
697+
rnd1.popFront();
697698
auto rnd2 = rnd1.save;
698699
assert(rnd1 == rnd2);
699700
// Enable next test when RNGs are reference types
@@ -1118,11 +1119,11 @@ alias Mt19937_64 = MersenneTwisterEngine!(ulong, 64, 312, 156, 31,
11181119

11191120
Mt19937 gen;
11201121

1121-
assertThrown(gen.seed(map!((a) => unpredictableSeed)(repeat(0, 623))));
1122+
assertThrown(gen.seed(map!((a) => 123_456_789U)(repeat(0, 623))));
11221123

1123-
gen.seed(map!((a) => unpredictableSeed)(repeat(0, 624)));
1124+
gen.seed(123_456_789U.repeat(624));
11241125
//infinite Range
1125-
gen.seed(map!((a) => unpredictableSeed)(repeat(0)));
1126+
gen.seed(123_456_789U.repeat);
11261127
}
11271128

11281129
@safe pure nothrow unittest
@@ -1147,7 +1148,8 @@ alias Mt19937_64 = MersenneTwisterEngine!(ulong, 64, 312, 156, 31,
11471148
// Check .save works
11481149
static foreach (Type; std.meta.AliasSeq!(Mt19937, Mt19937_64))
11491150
{{
1150-
auto gen1 = Type(unpredictableSeed);
1151+
auto gen1 = Type(123_456_789);
1152+
gen1.popFront();
11511153
auto gen2 = gen1.save;
11521154
assert(gen1 == gen2); // Danger, Will Robinson -- no opEquals for MT
11531155
// Enable next test when RNGs are reference types
@@ -1460,7 +1462,8 @@ alias Xorshift = Xorshift128; /// ditto
14601462
// Check .save works
14611463
foreach (Type; XorshiftTypes)
14621464
{
1463-
auto rnd1 = Type(unpredictableSeed);
1465+
auto rnd1 = Type(123_456_789);
1466+
rnd1.popFront();
14641467
auto rnd2 = rnd1.save;
14651468
assert(rnd1 == rnd2);
14661469
// Enable next test when RNGs are reference types
@@ -1480,7 +1483,7 @@ alias Xorshift = Xorshift128; /// ditto
14801483
foreach (Rng; PseudoRngTypes)
14811484
{
14821485
static assert(isUniformRNG!Rng);
1483-
auto rng = Rng(unpredictableSeed);
1486+
auto rng = Rng(123_456_789);
14841487
}
14851488
}
14861489

@@ -1878,7 +1881,7 @@ if ((isIntegral!(CommonType!(T1, T2)) || isSomeChar!(CommonType!(T1, T2))) &&
18781881
@safe unittest
18791882
{
18801883
import std.conv : to;
1881-
auto gen = Mt19937(unpredictableSeed);
1884+
auto gen = Mt19937(123_456_789);
18821885
static assert(isForwardRange!(typeof(gen)));
18831886

18841887
auto a = uniform(0, 1024, gen);
@@ -2223,7 +2226,7 @@ do
22232226

22242227
static foreach (T; std.meta.AliasSeq!(float, double, real))
22252228
{{
2226-
UniformRNG rng = UniformRNG(unpredictableSeed);
2229+
UniformRNG rng = UniformRNG(123_456_789);
22272230

22282231
auto a = uniform01();
22292232
assert(is(typeof(a) == double));
@@ -2407,7 +2410,7 @@ if (isRandomAccessRange!Range)
24072410
// Also tests partialShuffle indirectly.
24082411
auto a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
24092412
auto b = a.dup;
2410-
auto gen = RandomGen(unpredictableSeed);
2413+
auto gen = RandomGen(123_456_789);
24112414
randomShuffle(a, gen);
24122415
sort(a);
24132416
assert(a == b);
@@ -2619,7 +2622,7 @@ do
26192622
///
26202623
@safe unittest
26212624
{
2622-
auto rnd = Random(unpredictableSeed);
2625+
auto rnd = Xorshift(123_456_789);
26232626
auto i = dice(rnd, 0.0, 100.0);
26242627
assert(i == 1);
26252628
i = dice(rnd, 100.0, 0.0);
@@ -2804,11 +2807,11 @@ if (isRandomAccessRange!Range)
28042807
}
28052808
else
28062809
{
2807-
auto rng = UniformRNG(unpredictableSeed);
2810+
auto rng = UniformRNG(123_456_789);
28082811
auto rc = randomCover(a, rng);
28092812
static assert(isForwardRange!(typeof(rc)));
28102813
// check for constructor passed a value-type RNG
2811-
auto rc2 = RandomCover!(int[], UniformRNG)(a, UniformRNG(unpredictableSeed));
2814+
auto rc2 = RandomCover!(int[], UniformRNG)(a, UniformRNG(987_654_321));
28122815
static assert(isForwardRange!(typeof(rc2)));
28132816
auto rcEmpty = randomCover(c, rng);
28142817
assert(rcEmpty.length == 0);
@@ -3350,7 +3353,7 @@ if (isInputRange!Range && hasLength!Range && isUniformRNG!UniformRNG)
33503353
{
33513354
auto sample =
33523355
RandomSample!(TestInputRange, UniformRNG)
3353-
(TestInputRange(), 5, 10, UniformRNG(unpredictableSeed));
3356+
(TestInputRange(), 5, 10, UniformRNG(987_654_321));
33543357
static assert(isInputRange!(typeof(sample)));
33553358
static assert(!isForwardRange!(typeof(sample)));
33563359
}
@@ -3366,7 +3369,7 @@ if (isInputRange!Range && hasLength!Range && isUniformRNG!UniformRNG)
33663369
{
33673370
auto sample =
33683371
RandomSample!(typeof(TestInputRange().takeExactly(10)), UniformRNG)
3369-
(TestInputRange().takeExactly(10), 5, 10, UniformRNG(unpredictableSeed));
3372+
(TestInputRange().takeExactly(10), 5, 10, UniformRNG(654_321_987));
33703373
static assert(isInputRange!(typeof(sample)));
33713374
static assert(!isForwardRange!(typeof(sample)));
33723375
}
@@ -3380,7 +3383,7 @@ if (isInputRange!Range && hasLength!Range && isUniformRNG!UniformRNG)
33803383
{
33813384
auto sample =
33823385
RandomSample!(int[], UniformRNG)
3383-
(a, 5, UniformRNG(unpredictableSeed));
3386+
(a, 5, UniformRNG(321_987_654));
33843387
static assert(isForwardRange!(typeof(sample)));
33853388
}
33863389
}
@@ -3392,7 +3395,7 @@ if (isInputRange!Range && hasLength!Range && isUniformRNG!UniformRNG)
33923395
{
33933396
auto sample =
33943397
RandomSample!(int[], UniformRNG)
3395-
(a, 5, UniformRNG(unpredictableSeed));
3398+
(a, 5, UniformRNG(789_123_456));
33963399
static assert(isInputRange!(typeof(sample)));
33973400
static assert(!isForwardRange!(typeof(sample)));
33983401
}

0 commit comments

Comments
 (0)