minitest-proptest 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 902a119e57c8158fe97d384c65cd988a396b1204689f68c0cdd88d88629ee8dc
|
|
4
|
+
data.tar.gz: 1e371e1ce98f872cda67ede73aa5f967685e1d29a3801bf115ee97f2e04829e4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 92c48c115151d03833c649a76441ef6a1be44a101ad0a8c58da77350eafdb3940fe5f78d54c104a6d200b1ebf23a0716c9b13f43dda3b285c1bc7c82c7e6546b
|
|
7
|
+
data.tar.gz: c59e61044807c0c3769c6d9769d9764415a408f4191c8b04b22af59919df73a059bd9ea93536b2ab1cc44cb032bad6ded596f624b10679f4fb047275813ffa2e
|
|
@@ -8,13 +8,13 @@ module Minitest
|
|
|
8
8
|
attr_accessor :entropy
|
|
9
9
|
attr_writer :type_parameters
|
|
10
10
|
|
|
11
|
-
def self.with_shrink_function(&
|
|
12
|
-
define_method(:shrink_function, &
|
|
11
|
+
def self.with_shrink_function(&)
|
|
12
|
+
define_method(:shrink_function, &)
|
|
13
13
|
self
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
def self.with_score_function(&
|
|
17
|
-
define_method(:score_function, &
|
|
16
|
+
def self.with_score_function(&)
|
|
17
|
+
define_method(:score_function, &)
|
|
18
18
|
self
|
|
19
19
|
end
|
|
20
20
|
|
|
@@ -39,7 +39,7 @@ module Minitest
|
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
def self.generator_for(klass, &
|
|
42
|
+
def self.generator_for(klass, &)
|
|
43
43
|
new_class = Class.new(ValueGenerator)
|
|
44
44
|
new_class.define_method(:initialize) do |g|
|
|
45
45
|
@entropy = ->(b = MAX_SIZE) { (@generated << g.rand(b)).last }
|
|
@@ -50,7 +50,7 @@ module Minitest
|
|
|
50
50
|
@type_parameters = []
|
|
51
51
|
end
|
|
52
52
|
|
|
53
|
-
new_class.define_method(:generator, &
|
|
53
|
+
new_class.define_method(:generator, &)
|
|
54
54
|
|
|
55
55
|
instance_variable_get(:@_generators)[klass] = new_class
|
|
56
56
|
self.const_set("#{klass.name}Gen".split('::').last, new_class)
|
|
@@ -184,7 +184,7 @@ module Minitest
|
|
|
184
184
|
elsif xs2.empty?
|
|
185
185
|
[[]]
|
|
186
186
|
else
|
|
187
|
-
[xs2] + list_remove.call(k,
|
|
187
|
+
[xs2] + list_remove.call(k, n - k, xs2).map { |ys| xs1 + ys }
|
|
188
188
|
end
|
|
189
189
|
end
|
|
190
190
|
|
|
@@ -224,7 +224,7 @@ module Minitest
|
|
|
224
224
|
else
|
|
225
225
|
h1 = xs1.reduce({}) { |c, e| c.merge({ e => h[e] }) }
|
|
226
226
|
h2 = xs2.reduce({}) { |c, e| c.merge({ e => h[e] }) }
|
|
227
|
-
[h1, h2] + list_remove.call(k,
|
|
227
|
+
[h1, h2] + list_remove.call(k, n - k, h2).map { |ys| h1.merge(ys.to_h) }
|
|
228
228
|
end
|
|
229
229
|
end
|
|
230
230
|
|
|
@@ -271,13 +271,13 @@ module Minitest
|
|
|
271
271
|
# random values to shrink towards 0.
|
|
272
272
|
generator_for(Integer) do
|
|
273
273
|
r = sized(MAX_SIZE)
|
|
274
|
-
if (
|
|
274
|
+
if r.nobits?(SIGN_BIT)
|
|
275
275
|
r
|
|
276
276
|
else
|
|
277
277
|
-(((r & (MAX_SIZE ^ SIGN_BIT)) - 1) ^ (MAX_SIZE ^ SIGN_BIT))
|
|
278
278
|
end
|
|
279
279
|
end.with_shrink_function do |i|
|
|
280
|
-
j = if (
|
|
280
|
+
j = if i.nobits?(SIGN_BIT)
|
|
281
281
|
i
|
|
282
282
|
else
|
|
283
283
|
-(((i & (MAX_SIZE ^ SIGN_BIT)) - 1) ^ (MAX_SIZE ^ SIGN_BIT))
|
|
@@ -287,22 +287,22 @@ module Minitest
|
|
|
287
287
|
|
|
288
288
|
generator_for(Int8) do
|
|
289
289
|
r = sized(0xff)
|
|
290
|
-
(
|
|
290
|
+
r.nobits?(0x80) ? r : -((r ^ 0x7f) - 0x7f)
|
|
291
291
|
end.with_shrink_function(&integral_shrink)
|
|
292
292
|
|
|
293
293
|
generator_for(Int16) do
|
|
294
294
|
r = sized(0xffff)
|
|
295
|
-
(
|
|
295
|
+
r.nobits?(0x8000) ? r : -((r ^ 0x7fff) - 0x7fff)
|
|
296
296
|
end.with_shrink_function(&integral_shrink)
|
|
297
297
|
|
|
298
298
|
generator_for(Int32) do
|
|
299
299
|
r = sized(0xffffffff)
|
|
300
|
-
(
|
|
300
|
+
r.nobits?(0x80000000) ? r : -((r ^ 0x7fffffff) - 0x7fffffff)
|
|
301
301
|
end.with_shrink_function(&integral_shrink)
|
|
302
302
|
|
|
303
303
|
generator_for(Int64) do
|
|
304
304
|
r = sized(0xffffffffffffffff)
|
|
305
|
-
if (
|
|
305
|
+
if r.nobits?(0x8000000000000000)
|
|
306
306
|
r
|
|
307
307
|
else
|
|
308
308
|
-((r ^ 0x7fffffffffffffff) - 0x7fffffffffffffff)
|
|
@@ -438,7 +438,7 @@ module Minitest
|
|
|
438
438
|
generator_for(Rational) do
|
|
439
439
|
n = sized(MAX_SIZE)
|
|
440
440
|
d = sized(MAX_SIZE - 1) + 1
|
|
441
|
-
if (
|
|
441
|
+
if n.nobits?(SIGN_BIT)
|
|
442
442
|
Rational(n, d)
|
|
443
443
|
else
|
|
444
444
|
Rational(-(((n & (MAX_SIZE ^ SIGN_BIT)) - 1) ^ (MAX_SIZE ^ SIGN_BIT)), d)
|
|
@@ -454,7 +454,7 @@ module Minitest
|
|
|
454
454
|
|
|
455
455
|
generator_for(Time) do
|
|
456
456
|
r = sized(0xffffffff)
|
|
457
|
-
Time.at((
|
|
457
|
+
Time.at(r.nobits?(0x80000000) ? r : -((r ^ 0x7fffffff) - 0x7fffffff))
|
|
458
458
|
end.with_shrink_function do |t|
|
|
459
459
|
integral_shrink.call(t.to_i).map(&Time.method(:at))
|
|
460
460
|
end.with_score_function do |t|
|
|
@@ -83,7 +83,7 @@ module Minitest
|
|
|
83
83
|
elsif @status.interesting?
|
|
84
84
|
info = 'A counterexample to a property has been found after ' \
|
|
85
85
|
"#{@valid_test_cases} valid " \
|
|
86
|
-
"example#{@valid_test_cases
|
|
86
|
+
"example#{'s' if @valid_test_cases != 1}.\n"
|
|
87
87
|
var_info = if @local_variables.empty?
|
|
88
88
|
'Variables local to the property were unable ' \
|
|
89
89
|
'to be determined. This is usually a bug.'
|
data/lib/minitest/proptest.rb
CHANGED
|
@@ -149,8 +149,8 @@ module Minitest
|
|
|
149
149
|
end
|
|
150
150
|
|
|
151
151
|
module Kernel
|
|
152
|
-
def generator_for(klass, &
|
|
153
|
-
::Minitest::Proptest::Gen.generator_for(klass, &
|
|
152
|
+
def generator_for(klass, &)
|
|
153
|
+
::Minitest::Proptest::Gen.generator_for(klass, &)
|
|
154
154
|
end
|
|
155
155
|
private :generator_for
|
|
156
156
|
end
|
metadata
CHANGED
|
@@ -1,29 +1,35 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: minitest-proptest
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tina Wuest
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2025-12-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: minitest
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: '5'
|
|
20
|
+
- - "<"
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: '7'
|
|
20
23
|
type: :runtime
|
|
21
24
|
prerelease: false
|
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
26
|
requirements:
|
|
24
|
-
- - "
|
|
27
|
+
- - ">="
|
|
25
28
|
- !ruby/object:Gem::Version
|
|
26
29
|
version: '5'
|
|
30
|
+
- - "<"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '7'
|
|
27
33
|
description: Property testing in Minitest, a la Haskell's QuickCheck and Python's
|
|
28
34
|
Hypothesis
|
|
29
35
|
email: tina@wuest.me
|
|
@@ -54,14 +60,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
54
60
|
requirements:
|
|
55
61
|
- - ">="
|
|
56
62
|
- !ruby/object:Gem::Version
|
|
57
|
-
version: 2.
|
|
63
|
+
version: 3.2.0
|
|
58
64
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
59
65
|
requirements:
|
|
60
66
|
- - ">="
|
|
61
67
|
- !ruby/object:Gem::Version
|
|
62
68
|
version: '0'
|
|
63
69
|
requirements: []
|
|
64
|
-
rubygems_version: 3.
|
|
70
|
+
rubygems_version: 3.4.19
|
|
65
71
|
signing_key:
|
|
66
72
|
specification_version: 4
|
|
67
73
|
summary: Property testing in Minitest
|