test_bench-random 2.0.0.1 → 2.2.0.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: bb261f09f6d867ae789af6b3794c16113140eb6a3aa6eb1c8faf756ff312282e
4
- data.tar.gz: 950609327e4a3d110c87100562dc34b4d8b0f6751d193e2c9b16556a8e9bdadd
3
+ metadata.gz: e30c460ce61a331fac2f13a9d056acbb1615b14a7da5b9e330dffbb7396c5231
4
+ data.tar.gz: e7b2774892bd081037e2533ed7649c25e02e36a1abf5790a81587a3379b1e96c
5
5
  SHA512:
6
- metadata.gz: 97dc403dc65061666f086249fe5646b8b652925ef256aa6b072ced27ff1a6ec4959f74aa9afb9dcb3bb1bd508e411db7d3c2bac5885a0c3d718c067d89ec3141
7
- data.tar.gz: b4f5e7f4d852af6cff1ee3b43a0223ae3054dec4738c42cfca2f136fd1fcf8ee9fb69b38d98b1b6d7103f2b69572057c4735b298a09549b51608ec5022122965
6
+ metadata.gz: eddf52771ece3597e41ba86013f3fac6e73dbc92e9d35ef22321752d8f714df5dd383c14f4836953440464841c838e11817be4e9abd704b7b6a897981b8a7b62
7
+ data.tar.gz: 80cbe6725d279b45a5ee2ab6a5d5c76bad6872d18fb6af7fafc9933ab098f88acd3363ab817edec7d02ed80483481e4f3a4f6105f87cc5c4c64455d1de119a7f
@@ -3,7 +3,11 @@ module TestBench
3
3
  module Controls
4
4
  module Seed
5
5
  def self.example
6
- 1
6
+ 0x1111_1111_1111_1111
7
+ end
8
+
9
+ def self.text
10
+ example.to_s(36)
7
11
  end
8
12
 
9
13
  module Namespace
@@ -1,41 +1,48 @@
1
1
  module TestBench
2
2
  class Random
3
3
  def generator
4
- @generator ||= self.class.generator(seed, default_namespace)
4
+ @generator ||= self.class.generator(seed, namespace)
5
5
  end
6
6
  attr_writer :generator
7
7
 
8
- attr_reader :seed
9
- attr_reader :default_namespace
8
+ def seed
9
+ @seed ||= Defaults.seed
10
+ end
11
+ attr_writer :seed
10
12
 
11
- def initialize(seed, default_namespace)
12
- @seed = seed
13
- @default_namespace = default_namespace
13
+ def namespace
14
+ @namespace ||= Defaults.namespace
14
15
  end
16
+ attr_writer :namespace
15
17
 
16
- def self.build(seed=nil, namespace: nil)
17
- seed ||= Defaults.seed
18
- namespace ||= Defaults.namespace
18
+ def sequence
19
+ @sequence ||= 0
20
+ end
21
+ attr_writer :sequence
19
22
 
20
- new(seed, namespace)
23
+ def self.build(seed=nil, namespace: nil)
24
+ instance = new
25
+ instance.seed = seed
26
+ instance.namespace = namespace
27
+ instance
21
28
  end
22
29
 
23
30
  def self.instance
24
31
  @instance ||= build
25
32
  end
26
33
 
27
- def self.string = instance.string
28
- def self.integer = instance.integer
29
- def self.fraction = instance.fraction
30
- def self.boolean = instance.boolean
31
- def self.reset(...) = instance.reset(...)
34
+ def self.configure(receiver, attr_name: nil)
35
+ attr_name ||= :random
36
+
37
+ receiver.public_send(:"#{attr_name}=", instance)
38
+ end
32
39
 
33
40
  def string
34
41
  integer.to_s(36)
35
42
  end
36
43
 
37
44
  def integer
38
- bytes = generator.bytes(8).bytes
45
+ bytes = next_qword.bytes
39
46
 
40
47
  number = 0
41
48
 
@@ -47,11 +54,13 @@ module TestBench
47
54
  end
48
55
 
49
56
  def fraction
57
+ self.sequence += 1
58
+
50
59
  generator.rand
51
60
  end
52
61
 
53
62
  def boolean
54
- byte = generator.bytes(1).bytes.first
63
+ byte = next_qword.bytes.first
55
64
 
56
65
  if byte % 2 == 1
57
66
  true
@@ -60,12 +69,33 @@ module TestBench
60
69
  end
61
70
  end
62
71
 
72
+ def reset?(namespace=nil)
73
+ namespace ||= self.namespace
74
+
75
+ if namespace != self.namespace
76
+ return false
77
+ end
78
+
79
+ sequence.zero?
80
+ end
81
+
82
+ def next_qword
83
+ self.sequence += 1
84
+
85
+ generator.bytes(8)
86
+ end
87
+
63
88
  def reset(namespace=nil)
64
- namespace ||= self.default_namespace
89
+ namespace ||= self.namespace
65
90
 
66
91
  generator = self.class.generator(seed, namespace)
67
92
 
68
93
  self.generator = generator
94
+ self.namespace = namespace
95
+
96
+ self.sequence = 0
97
+
98
+ generator.seed
69
99
  end
70
100
 
71
101
  def self.generator(seed, namespace)
@@ -76,6 +106,11 @@ module TestBench
76
106
  ::Random.new(seed)
77
107
  end
78
108
 
109
+ def self.generator_seed(seed, namespace)
110
+ generator = generator(seed, namespace)
111
+ generator.seed
112
+ end
113
+
79
114
  def self.namespace_digest(namespace)
80
115
  byte_width = 8
81
116
 
@@ -99,11 +134,27 @@ module TestBench
99
134
  end
100
135
  end
101
136
 
137
+ module Substitute
138
+ def self.build
139
+ Random.build
140
+ end
141
+
142
+ class Random < Random
143
+ alias :set_seed :seed=
144
+
145
+ def self.build
146
+ instance = new
147
+ instance.set_seed(0)
148
+ instance
149
+ end
150
+ end
151
+ end
152
+
102
153
  module Defaults
103
154
  def self.seed
104
155
  seed = ENV['TEST_BENCH_SEED']
105
156
  if not seed.nil?
106
- seed.to_i
157
+ seed.to_i(36)
107
158
  else
108
159
  ::Random.new_seed
109
160
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test_bench-random
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.1
4
+ version: 2.2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Ladd
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-28 00:00:00.000000000 Z
11
+ date: 2023-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: test_bench-bootstrap
14
+ name: test_bench-isolated
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -53,7 +53,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  requirements: []
56
- rubygems_version: 3.3.23
56
+ rubygems_version: 3.4.10
57
57
  signing_key:
58
58
  specification_version: 4
59
59
  summary: Random value controls for TestBench