test_bench-random 2.0.0.1 → 2.2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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