test_values 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/README.md +110 -19
  4. data/lib/test_values/numeric_values.rb +46 -0
  5. data/lib/test_values/string_values.rb +5 -5
  6. data/lib/test_values/values_base.rb +22 -3
  7. data/lib/test_values/version.rb +1 -1
  8. data/lib/test_values.rb +3 -0
  9. data/markdown/readme/Rakefile +2 -1
  10. data/markdown/readme/classes/numeric_values/numerics_in_range/float_range/example.md +14 -0
  11. data/markdown/readme/classes/numeric_values/numerics_in_range/float_range/example.rb +4 -0
  12. data/markdown/readme/classes/numeric_values/numerics_in_range/float_range/output.txt +1 -0
  13. data/markdown/readme/classes/numeric_values/numerics_in_range/float_range/template.md +5 -0
  14. data/markdown/readme/classes/numeric_values/numerics_in_range/integer_range/example.md +14 -0
  15. data/markdown/readme/classes/numeric_values/numerics_in_range/integer_range/example.rb +4 -0
  16. data/markdown/readme/classes/numeric_values/numerics_in_range/integer_range/output.txt +1 -0
  17. data/markdown/readme/classes/numeric_values/numerics_in_range/integer_range/template.md +5 -0
  18. data/markdown/readme/classes/numeric_values/numerics_in_range/mixed_range/example.md +14 -0
  19. data/markdown/readme/classes/numeric_values/numerics_in_range/mixed_range/example.rb +4 -0
  20. data/markdown/readme/classes/numeric_values/numerics_in_range/mixed_range/output.txt +1 -0
  21. data/markdown/readme/classes/numeric_values/numerics_in_range/mixed_range/template.md +5 -0
  22. data/markdown/readme/classes/numeric_values/numerics_in_range/template.md +7 -0
  23. data/markdown/readme/classes/numeric_values/numerics_not_in_range/float_range/example.md +14 -0
  24. data/markdown/readme/classes/numeric_values/numerics_not_in_range/float_range/example.rb +4 -0
  25. data/markdown/readme/classes/numeric_values/numerics_not_in_range/float_range/output.txt +1 -0
  26. data/markdown/readme/classes/numeric_values/numerics_not_in_range/float_range/template.md +5 -0
  27. data/markdown/readme/classes/numeric_values/numerics_not_in_range/integer_range/example.md +14 -0
  28. data/markdown/readme/classes/numeric_values/numerics_not_in_range/integer_range/example.rb +4 -0
  29. data/markdown/readme/classes/numeric_values/numerics_not_in_range/integer_range/output.txt +1 -0
  30. data/markdown/readme/classes/numeric_values/numerics_not_in_range/integer_range/template.md +5 -0
  31. data/markdown/readme/classes/numeric_values/numerics_not_in_range/mixed_range/example.md +14 -0
  32. data/markdown/readme/classes/numeric_values/numerics_not_in_range/mixed_range/example.rb +4 -0
  33. data/markdown/readme/classes/numeric_values/numerics_not_in_range/mixed_range/output.txt +1 -0
  34. data/markdown/readme/classes/numeric_values/numerics_not_in_range/mixed_range/template.md +5 -0
  35. data/markdown/readme/classes/numeric_values/numerics_not_in_range/template.md +7 -0
  36. data/markdown/readme/classes/numeric_values/template.md +9 -0
  37. data/markdown/readme/named_values/example.md +7 -18
  38. data/markdown/readme/named_values/example.rb +2 -15
  39. data/markdown/readme/named_values/my_items.rb +12 -0
  40. data/markdown/readme/named_values/output.txt +2 -2
  41. data/markdown/readme/named_values/template.md +3 -1
  42. data/markdown/readme/template.md +5 -1
  43. metadata +31 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ed1394d81783ca2931dcba4ef9a7d09caa81109c
4
- data.tar.gz: 165636172a73b2bfbe41b89d702fbe88526ff42e
3
+ metadata.gz: 70fc5eddad623f22ee48a51bc4e8f14db744dab8
4
+ data.tar.gz: f596ab9857ed3b06ccfd7457a89e43006cf61e28
5
5
  SHA512:
6
- metadata.gz: 42edc0139467d42f4bc141f4d26451d1fa6f6d2887823163f8e13e591814e7f32226d3f68c4e3cd9c19b1ae04490cce8a05a58d1ad30cf3627d1661bc8ec6049
7
- data.tar.gz: 0f397f8aeed2f73a8fd2b8ea8be1738ba3f68eac634ab50ca52431bf6f0a2719cd67f3a57b006f98e2b7e1e5c6cd90c71bd683350261b92de230d23bbe44afd2
6
+ metadata.gz: ee8ab1a7165c333ffdb37ce8a2e608aa39a247c4737a5babe7a16e976dd0fd8e42704312ac6f2876e9b9cfb4e8488e054b0aaf27675d03cc7b8ac5d4770f8e75
7
+ data.tar.gz: 7f80bf289d41c1cc5443aea4554ca751fb306959037179cf30bce2e1afa3136931d0602169814ecd6484e67970da72a12d95e9dbb7ad1ad4f939b352c5e46b3e
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- test_values (0.3.0)
4
+ test_values (0.4.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  [![Gem](https://img.shields.io/gem/v/test_values.svg?style=flat)](http://rubygems.org/gems/test_values "View this project in Rubygems")
4
4
 
5
- This project makes it easy to generate _and utilize_ certain kinds of values for testing software.
5
+ This library makes it easy to generate _and utilize_ certain kinds of values for testing software.
6
6
 
7
7
  ## Named Values
8
8
 
9
- Generally speaking, a values method whose name is plural returns a hash of named values.
9
+ Generally speaking, a method in this library whose name is plural returns a hash of named values.
10
10
 
11
11
  The calling test can iterate over the hash, using the names as labels and the values as test data:
12
12
 
@@ -16,6 +16,8 @@ require 'minitest/autorun'
16
16
 
17
17
  require 'test_values'
18
18
 
19
+ require_relative 'my_items'
20
+
19
21
  class MyTest < Minitest::Test
20
22
 
21
23
  def test_bad_item_length
@@ -33,27 +35,12 @@ class MyTest < Minitest::Test
33
35
 
34
36
  end
35
37
 
36
- end
37
-
38
- class MyItems
39
-
40
- attr_accessor :items
41
-
42
- def initialize
43
- self.items = []
44
- end
45
-
46
- def add_item(item)
47
- raise ArgumentError.new(item) unless (4..8).include?(item.length)
48
- items.push(item)
49
- end
50
-
51
38
  end
52
39
  ```
53
40
 
54
41
  ```output.txt```:
55
42
  ```
56
- Run options: --seed 24259
43
+ Run options: --seed 8459
57
44
 
58
45
  # Running:
59
46
 
@@ -66,14 +53,17 @@ Value "xxxxxxxxx" should raise an exception because it is too_long.
66
53
  Got exception #<ArgumentError: xxxxxxxxx>
67
54
  .
68
55
 
69
- Finished in 0.001529s, 653.9277 runs/s, 1307.8554 assertions/s.
56
+ Finished in 0.001472s, 679.3557 runs/s, 1358.7113 assertions/s.
70
57
 
71
58
  1 runs, 2 assertions, 0 failures, 0 errors, 0 skips
72
59
  ```
73
60
 
61
+ (If you're nosy, you can peek at class [MyItems](https://raw.githubusercontent.com/BurdetteLamar/test_values/master/markdown/readme/named_values/my_items.rb).)
62
+
74
63
  ## Classes
75
64
 
76
65
  - [StringValues](#class-stringvalues)
66
+ - [NumericValues](#class-numericvalues)
77
67
 
78
68
  ### Class ```StringValues```
79
69
 
@@ -178,3 +168,104 @@ p s
178
168
  ```
179
169
  "abcab"
180
170
  ```
171
+
172
+
173
+ ### Class ```NumericValues```
174
+
175
+ #### Methods
176
+
177
+ - [numerics_in_range](#method-numerics_in_range)
178
+ - [numerics_not_in_range](#method-numerics_not_in_range)
179
+
180
+ #### Method ```numerics_in_range```
181
+
182
+ ##### Integer Range
183
+
184
+ ```example.rb```:
185
+ ```ruby
186
+ require 'test_values'
187
+
188
+ values = NumericValues.numerics_in_range((4..10))
189
+ p values
190
+ ```
191
+
192
+ ```output.txt```:
193
+ ```
194
+ {:min_value=>4, :max_value=>10}
195
+ ```
196
+
197
+ ##### Float Range
198
+
199
+ ```example.rb```:
200
+ ```ruby
201
+ require 'test_values'
202
+
203
+ values = NumericValues.numerics_in_range((4.5..10.5))
204
+ p values
205
+ ```
206
+
207
+ ```output.txt```:
208
+ ```
209
+ {:min_value=>4.5, :max_value=>10.5}
210
+ ```
211
+
212
+ ##### Mixed Range
213
+
214
+ ```example.rb```:
215
+ ```ruby
216
+ require 'test_values'
217
+
218
+ values = NumericValues.numerics_in_range((4..10.5))
219
+ p values
220
+ ```
221
+
222
+ ```output.txt```:
223
+ ```
224
+ {:min_value=>4, :max_value=>10.5}
225
+ ```
226
+ #### Method ```numerics_not_in_range```
227
+
228
+ ##### Integer Range
229
+
230
+ ```example.rb```:
231
+ ```ruby
232
+ require 'test_values'
233
+
234
+ values = NumericValues.numerics_not_in_range((4..10))
235
+ p values
236
+ ```
237
+
238
+ ```output.txt```:
239
+ ```
240
+ {:too_small=>3, :too_large=>11}
241
+ ```
242
+
243
+ ##### Float Range
244
+
245
+ ```example.rb```:
246
+ ```ruby
247
+ require 'test_values'
248
+
249
+ values = NumericValues.numerics_not_in_range((4.5..10.5))
250
+ p values
251
+ ```
252
+
253
+ ```output.txt```:
254
+ ```
255
+ {:too_small=>4.499999999999999, :too_large=>10.500000000000002}
256
+ ```
257
+
258
+ ##### Mixed Range
259
+
260
+ ```example.rb```:
261
+ ```ruby
262
+ require 'test_values'
263
+
264
+ values = NumericValues.numerics_not_in_range((4..10.5))
265
+ p values
266
+ ```
267
+
268
+ ```output.txt```:
269
+ ```
270
+ {:too_small=>3, :too_large=>10.500000000000002}
271
+ ```
@@ -0,0 +1,46 @@
1
+ class NumericValues < ValuesBase
2
+
3
+ def self.numerics_in_range(range)
4
+ self.verify_range_not_empty('range', range)
5
+ self.verify_kind_of('range.first', Numeric, range.first)
6
+ self.verify_kind_of('range.last', Numeric, range.last)
7
+ {
8
+ :min_value => range.first,
9
+ :max_value => range.last
10
+ }
11
+ end
12
+
13
+ def self.numerics_not_in_range(range)
14
+ self.verify_range_not_empty('range', range)
15
+ if range.first > range.last
16
+ inverted = true
17
+ first, last = range.last, range.first
18
+ else
19
+ inverted = false
20
+ first, last = range.first, range.last
21
+ end
22
+ case
23
+ when first.respond_to?(:pred)
24
+ too_small = first.pred
25
+ when first.respond_to?(:prev_float)
26
+ self.verify_finite_numeric(inverted ? 'range.last' : 'range.first', first)
27
+ too_small = first.prev_float
28
+ else
29
+ raise TypeError.new(first)
30
+ end
31
+ case
32
+ when last.respond_to?(:succ)
33
+ too_large = last.succ
34
+ when last.respond_to?(:next_float)
35
+ self.verify_finite_numeric(inverted ? 'range.first' : 'range.last', last)
36
+ too_large = last.next_float
37
+ else
38
+ raise ArgumentError.new(last)
39
+ end
40
+ {
41
+ :too_small => too_small,
42
+ :too_large => too_large,
43
+ }
44
+ end
45
+
46
+ end
@@ -10,9 +10,9 @@ class StringValues < ValuesBase
10
10
  # @raise [TypeError] if +base_string+ is not a +String+.
11
11
  # @raise [RangeError] if +length+ is negative.
12
12
  def self.string_of_length(length, base_string=BASE_STRING)
13
- self.verify_class('length', Integer, length)
14
- self.verify_class('base_string', String, base_string)
15
- self.verify_integer_size('length', (0..Float::INFINITY), length)
13
+ self.verify_kind_of('length', Integer, length)
14
+ self.verify_kind_of('base_string', String, base_string)
15
+ self.verify_integer_in_range('length', (0..Float::INFINITY), length)
16
16
  return '' if length == 0
17
17
  s = base_string
18
18
  while s.length < length
@@ -29,7 +29,7 @@ class StringValues < ValuesBase
29
29
  # @return [Hash] +Symbol+/+String+ pairs
30
30
  # with keys +:min_length+ and +:max_length+.
31
31
  def self.strings_in_length_range(range, base_string=BASE_STRING)
32
- self.verify_class('range', Range, range)
32
+ self.verify_kind_of('range', Range, range)
33
33
  {
34
34
  :min_length => self.string_of_length(range.first, base_string),
35
35
  :max_length => self.string_of_length(range.last, base_string),
@@ -44,7 +44,7 @@ class StringValues < ValuesBase
44
44
  # @return [Hash] +Symbol+/+String+ pairs
45
45
  # with keys +:too_short+ and +:too_long+.
46
46
  def self.strings_not_in_length_range(range, base_string=BASE_STRING)
47
- self.verify_class('range', Range, range)
47
+ self.verify_kind_of('range', Range, range)
48
48
  {
49
49
  :too_short => self.string_of_length(range.first - 1, base_string),
50
50
  :too_long => self.string_of_length(range.last + 1, base_string),
@@ -2,17 +2,36 @@ class ValuesBase
2
2
 
3
3
  private
4
4
 
5
- def self.verify_class(parameter_name, klass, obj)
5
+ def self.verify_kind_of(parameter_name, klass, obj)
6
6
  return true if obj.kind_of?(klass)
7
7
  message = "Parameter #{parameter_name} must be instance of #{klass.name}, not #{obj.inspect}"
8
8
  raise TypeError.new(message)
9
9
  end
10
10
 
11
- def self.verify_integer_size(parameter_name, range, obj)
12
- self.verify_class(parameter_name, Integer, obj)
11
+ def self.verify_integer_in_range(parameter_name, range, obj)
12
+ self.verify_kind_of(parameter_name, Integer, obj)
13
13
  return true if range.include?(obj)
14
14
  message = "Parameter #{parameter_name} must be in range #{range}, not #{obj}"
15
15
  raise RangeError.new(message)
16
16
  end
17
17
 
18
+ def self.verify_range_not_empty(parameter_name, range)
19
+ self.verify_kind_of(parameter_name, Range, range)
20
+ return if range.first == range.last
21
+ if range.each.size == 0
22
+ message = "Parameter #{parameter_name} must be a non-empty Range, not #{range}"
23
+ raise ArgumentError.new(message)
24
+ end
25
+ end
26
+
27
+ def self.verify_finite_numeric(parameter_name, obj)
28
+ self.verify_kind_of(parameter_name, Numeric, obj)
29
+ if obj.kind_of?(Float)
30
+ unless obj.finite?
31
+ message = "Parameter #{parameter_name} must be finite, not #{obj}"
32
+ raise ArgumentError.new(message)
33
+ end
34
+ end
35
+ end
36
+
18
37
  end
@@ -1,3 +1,3 @@
1
1
  class TestValues
2
- VERSION = '0.3.0'
2
+ VERSION = '0.4.0'
3
3
  end
data/lib/test_values.rb CHANGED
@@ -1,5 +1,8 @@
1
1
  require 'test_values/version'
2
+
2
3
  require 'test_values/values_base'
4
+
5
+ require 'test_values/numeric_values'
3
6
  require 'test_values/string_values'
4
7
 
5
8
  class TestValues
@@ -5,6 +5,7 @@ namespace :build do
5
5
  task :readme do
6
6
  dir_path = File.dirname(__FILE__)
7
7
  Dir.chdir(dir_path) do
8
+ # Run each example.rb and make its template.
8
9
  ruby_file_name = 'example.rb'
9
10
  template_file_name = 'template.md'
10
11
  readme_file_path = File.join(
@@ -14,7 +15,6 @@ namespace :build do
14
15
  'README.md',
15
16
  )
16
17
  readme_file_path = File.absolute_path(readme_file_path)
17
- puts readme_file_path
18
18
  Find.find('.') do |path|
19
19
  next unless File.directory?(path)
20
20
  Dir.chdir(path) do
@@ -24,6 +24,7 @@ namespace :build do
24
24
  end
25
25
  end
26
26
  end
27
+ # Make the main README page.
27
28
  system("markdown_helper include --pristine #{template_file_name} #{readme_file_path}")
28
29
  end
29
30
  end
@@ -0,0 +1,14 @@
1
+ ##### Float Range
2
+
3
+ ```example.rb```:
4
+ ```ruby
5
+ require 'test_values'
6
+
7
+ values = NumericValues.numerics_in_range((4.5..10.5))
8
+ p values
9
+ ```
10
+
11
+ ```output.txt```:
12
+ ```
13
+ {:min_value=>4.5, :max_value=>10.5}
14
+ ```
@@ -0,0 +1,4 @@
1
+ require 'test_values'
2
+
3
+ values = NumericValues.numerics_in_range((4.5..10.5))
4
+ p values
@@ -0,0 +1 @@
1
+ {:min_value=>4.5, :max_value=>10.5}
@@ -0,0 +1,5 @@
1
+ ##### Float Range
2
+
3
+ @[ruby](example.rb)
4
+
5
+ @[:code_block](output.txt)
@@ -0,0 +1,14 @@
1
+ ##### Integer Range
2
+
3
+ ```example.rb```:
4
+ ```ruby
5
+ require 'test_values'
6
+
7
+ values = NumericValues.numerics_in_range((4..10))
8
+ p values
9
+ ```
10
+
11
+ ```output.txt```:
12
+ ```
13
+ {:min_value=>4, :max_value=>10}
14
+ ```
@@ -0,0 +1,4 @@
1
+ require 'test_values'
2
+
3
+ values = NumericValues.numerics_in_range((4..10))
4
+ p values
@@ -0,0 +1 @@
1
+ {:min_value=>4, :max_value=>10}
@@ -0,0 +1,5 @@
1
+ ##### Integer Range
2
+
3
+ @[ruby](example.rb)
4
+
5
+ @[:code_block](output.txt)
@@ -0,0 +1,14 @@
1
+ ##### Mixed Range
2
+
3
+ ```example.rb```:
4
+ ```ruby
5
+ require 'test_values'
6
+
7
+ values = NumericValues.numerics_in_range((4..10.5))
8
+ p values
9
+ ```
10
+
11
+ ```output.txt```:
12
+ ```
13
+ {:min_value=>4, :max_value=>10.5}
14
+ ```
@@ -0,0 +1,4 @@
1
+ require 'test_values'
2
+
3
+ values = NumericValues.numerics_in_range((4..10.5))
4
+ p values
@@ -0,0 +1 @@
1
+ {:min_value=>4, :max_value=>10.5}
@@ -0,0 +1,5 @@
1
+ ##### Mixed Range
2
+
3
+ @[ruby](example.rb)
4
+
5
+ @[:code_block](output.txt)
@@ -0,0 +1,7 @@
1
+ #### Method ```numerics_in_range```
2
+
3
+ @[:markdown](integer_range/template.md)
4
+
5
+ @[:markdown](float_range/template.md)
6
+
7
+ @[:markdown](mixed_range/template.md)
@@ -0,0 +1,14 @@
1
+ ##### Float Range
2
+
3
+ ```example.rb```:
4
+ ```ruby
5
+ require 'test_values'
6
+
7
+ values = NumericValues.numerics_not_in_range((4.5..10.5))
8
+ p values
9
+ ```
10
+
11
+ ```output.txt```:
12
+ ```
13
+ {:too_small=>4.499999999999999, :too_large=>10.500000000000002}
14
+ ```
@@ -0,0 +1,4 @@
1
+ require 'test_values'
2
+
3
+ values = NumericValues.numerics_not_in_range((4.5..10.5))
4
+ p values
@@ -0,0 +1 @@
1
+ {:too_small=>4.499999999999999, :too_large=>10.500000000000002}
@@ -0,0 +1,5 @@
1
+ ##### Float Range
2
+
3
+ @[ruby](example.rb)
4
+
5
+ @[:code_block](output.txt)
@@ -0,0 +1,14 @@
1
+ ##### Integer Range
2
+
3
+ ```example.rb```:
4
+ ```ruby
5
+ require 'test_values'
6
+
7
+ values = NumericValues.numerics_not_in_range((4..10))
8
+ p values
9
+ ```
10
+
11
+ ```output.txt```:
12
+ ```
13
+ {:too_small=>3, :too_large=>11}
14
+ ```
@@ -0,0 +1,4 @@
1
+ require 'test_values'
2
+
3
+ values = NumericValues.numerics_not_in_range((4..10))
4
+ p values
@@ -0,0 +1 @@
1
+ {:too_small=>3, :too_large=>11}
@@ -0,0 +1,5 @@
1
+ ##### Integer Range
2
+
3
+ @[ruby](example.rb)
4
+
5
+ @[:code_block](output.txt)
@@ -0,0 +1,14 @@
1
+ ##### Mixed Range
2
+
3
+ ```example.rb```:
4
+ ```ruby
5
+ require 'test_values'
6
+
7
+ values = NumericValues.numerics_not_in_range((4..10.5))
8
+ p values
9
+ ```
10
+
11
+ ```output.txt```:
12
+ ```
13
+ {:too_small=>3, :too_large=>10.500000000000002}
14
+ ```
@@ -0,0 +1,4 @@
1
+ require 'test_values'
2
+
3
+ values = NumericValues.numerics_not_in_range((4..10.5))
4
+ p values
@@ -0,0 +1 @@
1
+ {:too_small=>3, :too_large=>10.500000000000002}
@@ -0,0 +1,5 @@
1
+ ##### Mixed Range
2
+
3
+ @[ruby](example.rb)
4
+
5
+ @[:code_block](output.txt)
@@ -0,0 +1,7 @@
1
+ #### Method ```numerics_not_in_range```
2
+
3
+ @[:markdown](integer_range/template.md)
4
+
5
+ @[:markdown](float_range/template.md)
6
+
7
+ @[:markdown](mixed_range/template.md)
@@ -0,0 +1,9 @@
1
+ ### Class ```NumericValues```
2
+
3
+ #### Methods
4
+
5
+ - [numerics_in_range](#method-numerics_in_range)
6
+ - [numerics_not_in_range](#method-numerics_not_in_range)
7
+
8
+ @[:markdown](numerics_in_range/template.md)
9
+ @[:markdown](numerics_not_in_range/template.md)
@@ -1,6 +1,6 @@
1
1
  ## Named Values
2
2
 
3
- Generally speaking, a values method whose name is plural returns a hash of named values.
3
+ Generally speaking, a method in this library whose name is plural returns a hash of named values.
4
4
 
5
5
  The calling test can iterate over the hash, using the names as labels and the values as test data:
6
6
 
@@ -10,6 +10,8 @@ require 'minitest/autorun'
10
10
 
11
11
  require 'test_values'
12
12
 
13
+ require_relative 'my_items'
14
+
13
15
  class MyTest < Minitest::Test
14
16
 
15
17
  def test_bad_item_length
@@ -27,27 +29,12 @@ class MyTest < Minitest::Test
27
29
 
28
30
  end
29
31
 
30
- end
31
-
32
- class MyItems
33
-
34
- attr_accessor :items
35
-
36
- def initialize
37
- self.items = []
38
- end
39
-
40
- def add_item(item)
41
- raise ArgumentError.new(item) unless (4..8).include?(item.length)
42
- items.push(item)
43
- end
44
-
45
32
  end
46
33
  ```
47
34
 
48
35
  ```output.txt```:
49
36
  ```
50
- Run options: --seed 24259
37
+ Run options: --seed 8459
51
38
 
52
39
  # Running:
53
40
 
@@ -60,7 +47,9 @@ Value "xxxxxxxxx" should raise an exception because it is too_long.
60
47
  Got exception #<ArgumentError: xxxxxxxxx>
61
48
  .
62
49
 
63
- Finished in 0.001529s, 653.9277 runs/s, 1307.8554 assertions/s.
50
+ Finished in 0.001472s, 679.3557 runs/s, 1358.7113 assertions/s.
64
51
 
65
52
  1 runs, 2 assertions, 0 failures, 0 errors, 0 skips
66
53
  ```
54
+
55
+ (If you're nosy, you can peek at class [MyItems](https://raw.githubusercontent.com/BurdetteLamar/test_values/master/markdown/readme/named_values/my_items.rb).)
@@ -2,6 +2,8 @@ require 'minitest/autorun'
2
2
 
3
3
  require 'test_values'
4
4
 
5
+ require_relative 'my_items'
6
+
5
7
  class MyTest < Minitest::Test
6
8
 
7
9
  def test_bad_item_length
@@ -20,18 +22,3 @@ class MyTest < Minitest::Test
20
22
  end
21
23
 
22
24
  end
23
-
24
- class MyItems
25
-
26
- attr_accessor :items
27
-
28
- def initialize
29
- self.items = []
30
- end
31
-
32
- def add_item(item)
33
- raise ArgumentError.new(item) unless (4..8).include?(item.length)
34
- items.push(item)
35
- end
36
-
37
- end
@@ -0,0 +1,12 @@
1
+ class MyItems
2
+
3
+ def initialize
4
+ @items = []
5
+ end
6
+
7
+ def add_item(item)
8
+ raise ArgumentError.new(item) unless (4..8).include?(item.length)
9
+ @items.push(item)
10
+ end
11
+
12
+ end
@@ -1,4 +1,4 @@
1
- Run options: --seed 24259
1
+ Run options: --seed 8459
2
2
 
3
3
  # Running:
4
4
 
@@ -11,6 +11,6 @@ Value "xxxxxxxxx" should raise an exception because it is too_long.
11
11
  Got exception #<ArgumentError: xxxxxxxxx>
12
12
  .
13
13
 
14
- Finished in 0.001529s, 653.9277 runs/s, 1307.8554 assertions/s.
14
+ Finished in 0.001472s, 679.3557 runs/s, 1358.7113 assertions/s.
15
15
 
16
16
  1 runs, 2 assertions, 0 failures, 0 errors, 0 skips
@@ -1,9 +1,11 @@
1
1
  ## Named Values
2
2
 
3
- Generally speaking, a values method whose name is plural returns a hash of named values.
3
+ Generally speaking, a method in this library whose name is plural returns a hash of named values.
4
4
 
5
5
  The calling test can iterate over the hash, using the names as labels and the values as test data:
6
6
 
7
7
  @[ruby](example.rb)
8
8
 
9
9
  @[:code_block](output.txt)
10
+
11
+ (If you're nosy, you can peek at class [MyItems](https://raw.githubusercontent.com/BurdetteLamar/test_values/master/markdown/readme/named_values/my_items.rb).)
@@ -2,12 +2,16 @@
2
2
 
3
3
  [![Gem](https://img.shields.io/gem/v/test_values.svg?style=flat)](http://rubygems.org/gems/test_values "View this project in Rubygems")
4
4
 
5
- This project makes it easy to generate _and utilize_ certain kinds of values for testing software.
5
+ This library makes it easy to generate _and utilize_ certain kinds of values for testing software.
6
6
 
7
7
  @[:markdown](named_values/template.md)
8
8
 
9
9
  ## Classes
10
10
 
11
11
  - [StringValues](#class-stringvalues)
12
+ - [NumericValues](#class-numericvalues)
12
13
 
13
14
  @[:markdown](classes/string_values/template.md)
15
+
16
+
17
+ @[:markdown](classes/numeric_values/template.md)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test_values
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - burdettelamar
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-08-15 00:00:00.000000000 Z
11
+ date: 2018-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -70,10 +70,38 @@ files:
70
70
  - bin/console
71
71
  - bin/setup
72
72
  - lib/test_values.rb
73
+ - lib/test_values/numeric_values.rb
73
74
  - lib/test_values/string_values.rb
74
75
  - lib/test_values/values_base.rb
75
76
  - lib/test_values/version.rb
76
77
  - markdown/readme/Rakefile
78
+ - markdown/readme/classes/numeric_values/numerics_in_range/float_range/example.md
79
+ - markdown/readme/classes/numeric_values/numerics_in_range/float_range/example.rb
80
+ - markdown/readme/classes/numeric_values/numerics_in_range/float_range/output.txt
81
+ - markdown/readme/classes/numeric_values/numerics_in_range/float_range/template.md
82
+ - markdown/readme/classes/numeric_values/numerics_in_range/integer_range/example.md
83
+ - markdown/readme/classes/numeric_values/numerics_in_range/integer_range/example.rb
84
+ - markdown/readme/classes/numeric_values/numerics_in_range/integer_range/output.txt
85
+ - markdown/readme/classes/numeric_values/numerics_in_range/integer_range/template.md
86
+ - markdown/readme/classes/numeric_values/numerics_in_range/mixed_range/example.md
87
+ - markdown/readme/classes/numeric_values/numerics_in_range/mixed_range/example.rb
88
+ - markdown/readme/classes/numeric_values/numerics_in_range/mixed_range/output.txt
89
+ - markdown/readme/classes/numeric_values/numerics_in_range/mixed_range/template.md
90
+ - markdown/readme/classes/numeric_values/numerics_in_range/template.md
91
+ - markdown/readme/classes/numeric_values/numerics_not_in_range/float_range/example.md
92
+ - markdown/readme/classes/numeric_values/numerics_not_in_range/float_range/example.rb
93
+ - markdown/readme/classes/numeric_values/numerics_not_in_range/float_range/output.txt
94
+ - markdown/readme/classes/numeric_values/numerics_not_in_range/float_range/template.md
95
+ - markdown/readme/classes/numeric_values/numerics_not_in_range/integer_range/example.md
96
+ - markdown/readme/classes/numeric_values/numerics_not_in_range/integer_range/example.rb
97
+ - markdown/readme/classes/numeric_values/numerics_not_in_range/integer_range/output.txt
98
+ - markdown/readme/classes/numeric_values/numerics_not_in_range/integer_range/template.md
99
+ - markdown/readme/classes/numeric_values/numerics_not_in_range/mixed_range/example.md
100
+ - markdown/readme/classes/numeric_values/numerics_not_in_range/mixed_range/example.rb
101
+ - markdown/readme/classes/numeric_values/numerics_not_in_range/mixed_range/output.txt
102
+ - markdown/readme/classes/numeric_values/numerics_not_in_range/mixed_range/template.md
103
+ - markdown/readme/classes/numeric_values/numerics_not_in_range/template.md
104
+ - markdown/readme/classes/numeric_values/template.md
77
105
  - markdown/readme/classes/string_values/string_of_length/base_string/example.md
78
106
  - markdown/readme/classes/string_values/string_of_length/base_string/example.rb
79
107
  - markdown/readme/classes/string_values/string_of_length/base_string/output.txt
@@ -104,6 +132,7 @@ files:
104
132
  - markdown/readme/classes/string_values/template.md
105
133
  - markdown/readme/named_values/example.md
106
134
  - markdown/readme/named_values/example.rb
135
+ - markdown/readme/named_values/my_items.rb
107
136
  - markdown/readme/named_values/output.txt
108
137
  - markdown/readme/named_values/template.md
109
138
  - markdown/readme/template.md