This repository was archived by the owner on Nov 20, 2020. It is now read-only.
forked from lunarmodules/busted
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathrandomize_spec.lua
103 lines (82 loc) · 2.04 KB
/
randomize_spec.lua
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
local unexpected = {}
local order = {}
local orderfixed1 = {}
local orderfixed2 = {}
describe('Randomizing test order', function()
randomize()
for i = 1, 100 do
table.insert(unexpected, i)
it('does 100 its', function()
table.insert(order, i)
end)
end
end)
describe('Randomizing test order with fixed seed as first arg', function()
randomize(3210)
for i = 1, 10 do
it('does 10 its', function()
table.insert(orderfixed1, i)
end)
end
end)
describe('Randomizing test order with fixed seed as second arg', function()
randomize(true, 56789)
for i = 1, 10 do
it('does 10 its', function()
table.insert(orderfixed2, i)
end)
end
end)
describe('Order of tests ran', function()
local function shuffle(t, seed)
math.randomseed(seed)
local n = #t
while n >= 1 do
local k = math.random(n)
t[n], t[k] = t[k], t[n]
n = n - 1
end
return t
end
it('randomized', function()
assert.are_not.same(unexpected, order)
end)
it('randomized with known random seed: 3210', function()
local t = {1,2,3,4,5,6,7,8,9,10}
assert.are.same(shuffle(t, 3210), orderfixed1)
end)
it('randomized with known random seed: 56789', function()
local t = {1,2,3,4,5,6,7,8,9,10}
assert.are.same(shuffle(t, 56789), orderfixed2)
end)
end)
describe('Disabling randomized test order with randomize(false)', function()
randomize()
randomize(false)
local expected = {}
local order = {}
for i = 1, 100 do
table.insert(expected, i)
it('does 100 its', function()
table.insert(order, i)
end)
end
it('does not randomize tests', function()
assert.are.same(expected, order)
end)
end)
describe('Disabling randomized test order with randomize(nil)', function()
randomize()
randomize(nil)
local expected = {}
local order = {}
for i = 1, 100 do
table.insert(expected, i)
it('does 100 its', function()
table.insert(order, i)
end)
end
it('does not randomize tests', function()
assert.are.same(expected, order)
end)
end)