pool_of_entropy 0.0.3 → 0.0.5
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 +5 -5
- data/.github/workflows/rspec.yml +23 -0
- data/.rubocop.yml +18 -0
- data/Gemfile +11 -1
- data/README.md +0 -4
- data/Rakefile +7 -5
- data/lib/pool_of_entropy/core_prng.rb +149 -143
- data/lib/pool_of_entropy/version.rb +3 -1
- data/lib/pool_of_entropy.rb +57 -57
- data/pool_of_entropy.gemspec +15 -16
- data/spec/pool_of_entropy/core_prng_spec.rb +386 -0
- data/spec/pool_of_entropy_spec.rb +264 -303
- data/spec/spec_helper.rb +49 -3
- metadata +12 -88
- data/.travis.yml +0 -7
- data/spec/core_prng_spec.rb +0 -543
data/spec/spec_helper.rb
CHANGED
|
@@ -1,7 +1,53 @@
|
|
|
1
|
-
|
|
2
|
-
require 'set'
|
|
1
|
+
# frozen_string_literal: true
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
require 'simplecov'
|
|
4
|
+
|
|
5
|
+
SimpleCov.start do
|
|
6
|
+
enable_coverage :branch
|
|
7
|
+
end
|
|
5
8
|
|
|
6
9
|
require 'pool_of_entropy'
|
|
7
10
|
|
|
11
|
+
RSpec::Matchers.define :be_a_float_in do |range|
|
|
12
|
+
match { |actual| actual.is_a?(Float) && range.cover?(actual) }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
RSpec::Matchers.define :be_an_integer_in do |range|
|
|
16
|
+
match { |actual| actual.is_a?(Integer) && range.cover?(actual) }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
RSpec::Matchers.define :change_only_block do |block_index|
|
|
20
|
+
match do |states|
|
|
21
|
+
before, after = states
|
|
22
|
+
blocks = before.bytes.each_slice(64).to_a.zip(after.bytes.each_slice(64).to_a)
|
|
23
|
+
blocks.each_with_index.all? { |pair, index| (pair.first != pair.last) == (index == block_index) }
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def outputs_match?(first, second, count: 10)
|
|
28
|
+
count.times.all? { first.rand == second.rand }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def outputs_differ?(first, second, count: 10)
|
|
32
|
+
count.times.all? { first.rand != second.rand }
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def repeat_results(count = 10)
|
|
36
|
+
Array.new(count) { Array(yield) }.flatten
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def reader_orders(prng)
|
|
40
|
+
readers = (0..4).map { prng.clone }
|
|
41
|
+
results = (1..20).map do
|
|
42
|
+
{ bytes: readers[0].read_bytes, hex: readers[1].read_hex, float: readers[2].read_float,
|
|
43
|
+
num: readers[3].read_bignum, int: readers[4].generate_integer(1_000_000_000) }
|
|
44
|
+
end
|
|
45
|
+
%i[int hex float num bytes].to_h { |key| [key, results.sort_by { |result| result[key] }] }
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def state_lengths_after(prng, updates)
|
|
49
|
+
updates.map do |data|
|
|
50
|
+
prng.update(data)
|
|
51
|
+
prng.state.length
|
|
52
|
+
end
|
|
53
|
+
end
|
metadata
CHANGED
|
@@ -1,86 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pool_of_entropy
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Neil Slater
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
12
|
-
dependencies:
|
|
13
|
-
|
|
14
|
-
name: yard
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - ">="
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: 0.8.7.2
|
|
20
|
-
type: :development
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - ">="
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: 0.8.7.2
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: bundler
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - ">="
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '1.3'
|
|
34
|
-
type: :development
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - ">="
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '1.3'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: rspec
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - ">="
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: 2.13.0
|
|
48
|
-
type: :development
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - ">="
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: 2.13.0
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: rake
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - ">="
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: 1.9.1
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - ">="
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: 1.9.1
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: coveralls
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - ">="
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: 0.6.7
|
|
76
|
-
type: :development
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - ">="
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: 0.6.7
|
|
83
|
-
description: PoolOfEntropy is a PRNG based on cryptographic secure PRNGs, intended
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies: []
|
|
12
|
+
description: PoolOfEntropy is a PRNG based on cryptographically secure PRNGs, intended
|
|
84
13
|
to bring back the feeling of 'personal luck' that some gamers feel when rolling
|
|
85
14
|
their own dice.
|
|
86
15
|
email:
|
|
@@ -89,8 +18,9 @@ executables: []
|
|
|
89
18
|
extensions: []
|
|
90
19
|
extra_rdoc_files: []
|
|
91
20
|
files:
|
|
21
|
+
- ".github/workflows/rspec.yml"
|
|
92
22
|
- ".gitignore"
|
|
93
|
-
- ".
|
|
23
|
+
- ".rubocop.yml"
|
|
94
24
|
- ".yardopts"
|
|
95
25
|
- DIEHARDER_TEST.md
|
|
96
26
|
- Gemfile
|
|
@@ -103,14 +33,14 @@ files:
|
|
|
103
33
|
- lib/pool_of_entropy/core_prng.rb
|
|
104
34
|
- lib/pool_of_entropy/version.rb
|
|
105
35
|
- pool_of_entropy.gemspec
|
|
106
|
-
- spec/core_prng_spec.rb
|
|
36
|
+
- spec/pool_of_entropy/core_prng_spec.rb
|
|
107
37
|
- spec/pool_of_entropy_spec.rb
|
|
108
38
|
- spec/spec_helper.rb
|
|
109
39
|
homepage: https://github.com/neilslater/pool_of_entropy
|
|
110
40
|
licenses:
|
|
111
41
|
- MIT
|
|
112
|
-
metadata:
|
|
113
|
-
|
|
42
|
+
metadata:
|
|
43
|
+
rubygems_mfa_required: 'true'
|
|
114
44
|
rdoc_options: []
|
|
115
45
|
require_paths:
|
|
116
46
|
- lib
|
|
@@ -118,20 +48,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
118
48
|
requirements:
|
|
119
49
|
- - ">="
|
|
120
50
|
- !ruby/object:Gem::Version
|
|
121
|
-
version: '
|
|
51
|
+
version: '3.3'
|
|
122
52
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
123
53
|
requirements:
|
|
124
54
|
- - ">="
|
|
125
55
|
- !ruby/object:Gem::Version
|
|
126
56
|
version: '0'
|
|
127
57
|
requirements: []
|
|
128
|
-
|
|
129
|
-
rubygems_version: 2.2.2
|
|
130
|
-
signing_key:
|
|
58
|
+
rubygems_version: 4.0.1
|
|
131
59
|
specification_version: 4
|
|
132
60
|
summary: Random number generator with extra features for gamers.
|
|
133
|
-
test_files:
|
|
134
|
-
- spec/core_prng_spec.rb
|
|
135
|
-
- spec/pool_of_entropy_spec.rb
|
|
136
|
-
- spec/spec_helper.rb
|
|
137
|
-
has_rdoc:
|
|
61
|
+
test_files: []
|