degenerate 0.0.1 → 0.0.2
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 +7 -7
- data/lib/degenerate.rb +2 -0
- data/lib/degenerate/generators.rb +35 -6
- data/lib/degenerate/version.rb +1 -1
- data/spec/lib/degenerate_spec.rb +23 -0
- data/spec/lib/generators_spec.rb +41 -1
- metadata +60 -78
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
5
|
-
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 088ff8eb3cf7313df055e89feba0849f4a068f67
|
4
|
+
data.tar.gz: fa3bed4a61194f9a62dec3b1a0d6ba0743b81dda
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d927a80d809e03f85b2bb8ecd9e9877e73a449933e9f2646741a8c06af3d05c535919f8b4ecf1cd93a9f4b6913f4f5e92c39d18d823f449a7e9d45d34703013d
|
7
|
+
data.tar.gz: 3b24e2ea03f4641bcb1444915e521e4b90e0cdc892f0aa972604b9d94ed89c71fdeabb389f6e5891beabc2ebea4338ac8215010b7b1042f59eaf5dc2b0738949
|
data/lib/degenerate.rb
CHANGED
@@ -6,4 +6,6 @@ module Degenerate
|
|
6
6
|
Generative.register_generator(:string, Generators.string)
|
7
7
|
Generative.register_generator(:integer, Generators.integer)
|
8
8
|
Generative.register_generator(:array, Generators.array)
|
9
|
+
Generative.register_generator(:any, Generators.any)
|
10
|
+
Generative.register_generator(:http_status, Generators.http_status)
|
9
11
|
end
|
@@ -3,26 +3,55 @@ module Degenerate
|
|
3
3
|
INTEGER_MAX = (2**(0.size * 8 -2) -1) / 2
|
4
4
|
INTEGER_MIN = -(INTEGER_MAX)
|
5
5
|
|
6
|
+
GENERATORS = [:integer, :string, :array]
|
7
|
+
|
8
|
+
HTTP_STATUSES = [100, 101, 102, 200, 201, 202, 203, 204, 205, 206, 207, 208, 226, 300, 301, 302, 303, 304, 305, 307, 308, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 422, 423, 424, 426, 428, 429, 431, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511]
|
9
|
+
|
6
10
|
def self.integer
|
7
11
|
->(opts={}) { rand((opts[:min] || INTEGER_MIN)..(opts[:max] || INTEGER_MAX)) }
|
8
12
|
end
|
9
13
|
|
10
14
|
def self.string
|
11
|
-
->(opts={}) {
|
15
|
+
->(opts={}) {
|
16
|
+
chars = opts[:of] || default_chars
|
17
|
+
limit = opts[:limit] || random_int
|
18
|
+
random_string_of(chars, limit)
|
19
|
+
}
|
12
20
|
end
|
13
21
|
|
14
22
|
def self.array
|
15
|
-
->(opts={}) {
|
23
|
+
->(opts={}) {
|
24
|
+
limit = opts[:limit] || random_int
|
25
|
+
of = Array(opts [:of] ||
|
26
|
+
send([:integer, :string].sample).call(limit: 1000))
|
27
|
+
array_of(limit, *of)
|
28
|
+
}
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.any
|
32
|
+
send(GENERATORS.sample)
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.http_status
|
36
|
+
->() { HTTP_STATUSES.sample }
|
16
37
|
end
|
17
38
|
|
18
39
|
private
|
19
40
|
|
20
|
-
def self.
|
21
|
-
|
41
|
+
def self.default_chars
|
42
|
+
('1'..'z').to_a
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.array_of(limit, *generated)
|
46
|
+
[].class.new(random_int(limit)) { generated.sample }
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.random_string_of(chars, limit)
|
50
|
+
[].class.new(random_int(limit)) { chars.sample }.join
|
22
51
|
end
|
23
52
|
|
24
|
-
def self.random_int
|
25
|
-
Degenerate::Generators.integer.call(min: 0, max:
|
53
|
+
def self.random_int(limit=9999)
|
54
|
+
Degenerate::Generators.integer.call(min: 0, max: limit)
|
26
55
|
end
|
27
56
|
end
|
28
57
|
end
|
data/lib/degenerate/version.rb
CHANGED
data/spec/lib/degenerate_spec.rb
CHANGED
@@ -30,4 +30,27 @@ RSpec.describe Degenerate do
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
33
|
+
|
34
|
+
describe "any generator" do
|
35
|
+
generative do
|
36
|
+
data(:any) { generate(:array) }
|
37
|
+
|
38
|
+
it "registers an any generator" do
|
39
|
+
class_name = any.class.to_s.downcase.to_sym
|
40
|
+
expect(Degenerate::Generators::GENERATORS)
|
41
|
+
.to include(class_name)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "http status generator" do
|
47
|
+
generative do
|
48
|
+
data(:status) { generate(:http_status) }
|
49
|
+
|
50
|
+
it "registers an http status generator" do
|
51
|
+
expect(Degenerate::Generators::HTTP_STATUSES)
|
52
|
+
.to include(status)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
33
56
|
end
|
data/spec/lib/generators_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative '../spec_helper
|
1
|
+
require_relative '../spec_helper'
|
2
2
|
|
3
3
|
RSpec.describe Degenerate::Generators do
|
4
4
|
describe ".integer" do
|
@@ -32,6 +32,20 @@ RSpec.describe Degenerate::Generators do
|
|
32
32
|
it "'s generator returns a string" do
|
33
33
|
expect(Degenerate::Generators.string.call).to be_a(String)
|
34
34
|
end
|
35
|
+
|
36
|
+
data(:chars) { generate(:string, limit: 10).split('') }
|
37
|
+
|
38
|
+
it "only uses characters from user input when given a list of characters" do
|
39
|
+
string = Degenerate::Generators.string.call(of: chars)
|
40
|
+
expect(string.split('').all? { |c| chars.include?(c) }).to be true
|
41
|
+
end
|
42
|
+
|
43
|
+
data(:limit) { generate(:integer, min: 0, max: 100) }
|
44
|
+
|
45
|
+
it "limits strings to a given size" do
|
46
|
+
expect(Degenerate::Generators.string.call(limit: limit).size)
|
47
|
+
.to be <= limit
|
48
|
+
end
|
35
49
|
end
|
36
50
|
end
|
37
51
|
|
@@ -44,6 +58,21 @@ RSpec.describe Degenerate::Generators do
|
|
44
58
|
it "'s generator returns a array" do
|
45
59
|
expect(Degenerate::Generators.array.call).to be_a(Array)
|
46
60
|
end
|
61
|
+
|
62
|
+
let(:limit) { generate(:integer, min: 0, max: 100) }
|
63
|
+
|
64
|
+
it "limits the array to a given size" do
|
65
|
+
array = Degenerate::Generators.array.call(limit: limit)
|
66
|
+
expect(array.size).to be <= limit
|
67
|
+
end
|
68
|
+
|
69
|
+
let(:generated) { generate([:integer, :string].sample) }
|
70
|
+
|
71
|
+
it "generate an array from 1 given generator" do
|
72
|
+
array = Degenerate::Generators.array.call(limit: limit, of: generated)
|
73
|
+
result_classes = array.map(&:class)
|
74
|
+
result_classes.all? { |c| expect(c).to eq(generated.class) }
|
75
|
+
end
|
47
76
|
end
|
48
77
|
end
|
49
78
|
|
@@ -58,4 +87,15 @@ RSpec.describe Degenerate::Generators do
|
|
58
87
|
end
|
59
88
|
end
|
60
89
|
end
|
90
|
+
|
91
|
+
describe ".http_status" do
|
92
|
+
generative do
|
93
|
+
let(:statuses) { Degenerate::Generators::HTTP_STATUSES }
|
94
|
+
|
95
|
+
it "returns a valid http status" do
|
96
|
+
status = Degenerate::Generators.http_status.call
|
97
|
+
expect(statuses).to include(status)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
61
101
|
end
|
metadata
CHANGED
@@ -1,98 +1,81 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: degenerate
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- Nate West
|
8
8
|
- Eric West
|
9
9
|
- Jack Newton
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
|
14
|
+
date: 2014-12-01 00:00:00 Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: "1.6"
|
16
22
|
name: bundler
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
18
|
-
requirements:
|
19
|
-
- - "~>"
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '1.6'
|
22
23
|
type: :development
|
24
|
+
requirement: *id001
|
23
25
|
prerelease: false
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
- !ruby/object:Gem::
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- &id005
|
30
|
+
- ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: "0"
|
30
33
|
name: rake
|
31
|
-
requirement: !ruby/object:Gem::Requirement
|
32
|
-
requirements:
|
33
|
-
- - ">="
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
version: '0'
|
36
34
|
type: :development
|
35
|
+
requirement: *id002
|
37
36
|
prerelease: false
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
- !ruby/object:Gem::Dependency
|
44
|
-
name: rspec-core
|
45
|
-
requirement: !ruby/object:Gem::Requirement
|
46
|
-
requirements:
|
47
|
-
- - "~>"
|
48
|
-
- !ruby/object:Gem::Version
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ~>
|
41
|
+
- !ruby/object:Gem::Version
|
49
42
|
version: 3.1.3
|
43
|
+
name: rspec-core
|
50
44
|
type: :development
|
45
|
+
requirement: *id003
|
51
46
|
prerelease: false
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
- !ruby/object:Gem::Dependency
|
58
|
-
name: rspec
|
59
|
-
requirement: !ruby/object:Gem::Requirement
|
60
|
-
requirements:
|
61
|
-
- - "~>"
|
62
|
-
- !ruby/object:Gem::Version
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - ~>
|
51
|
+
- !ruby/object:Gem::Version
|
63
52
|
version: 3.1.0
|
53
|
+
name: rspec
|
64
54
|
type: :development
|
55
|
+
requirement: *id004
|
65
56
|
prerelease: false
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
version: 3.1.0
|
71
|
-
- !ruby/object:Gem::Dependency
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- *id005
|
72
61
|
name: pry
|
73
|
-
requirement: !ruby/object:Gem::Requirement
|
74
|
-
requirements:
|
75
|
-
- - ">="
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
78
62
|
type: :development
|
63
|
+
requirement: *id006
|
79
64
|
prerelease: false
|
80
|
-
version_requirements: !ruby/object:Gem::Requirement
|
81
|
-
requirements:
|
82
|
-
- - ">="
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
version: '0'
|
85
65
|
description: Random data generator for use with Generative.
|
86
|
-
email:
|
66
|
+
email:
|
87
67
|
- natescott.west@gmail.com
|
88
68
|
- esw9999@gmail.com
|
89
69
|
- eternal.turtles@gmail.com
|
90
70
|
executables: []
|
71
|
+
|
91
72
|
extensions: []
|
73
|
+
|
92
74
|
extra_rdoc_files: []
|
93
|
-
|
94
|
-
|
95
|
-
-
|
75
|
+
|
76
|
+
files:
|
77
|
+
- .gitignore
|
78
|
+
- .rspec
|
96
79
|
- Gemfile
|
97
80
|
- LICENSE.txt
|
98
81
|
- README.md
|
@@ -105,30 +88,29 @@ files:
|
|
105
88
|
- spec/lib/generators_spec.rb
|
106
89
|
- spec/spec_helper.rb
|
107
90
|
homepage: http://github.com/niftyn8/degenerate
|
108
|
-
licenses:
|
91
|
+
licenses:
|
109
92
|
- MIT
|
110
93
|
metadata: {}
|
94
|
+
|
111
95
|
post_install_message:
|
112
96
|
rdoc_options: []
|
113
|
-
|
97
|
+
|
98
|
+
require_paths:
|
114
99
|
- lib
|
115
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
116
|
-
requirements:
|
117
|
-
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- *id005
|
103
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- *id005
|
125
106
|
requirements: []
|
107
|
+
|
126
108
|
rubyforge_project:
|
127
109
|
rubygems_version: 2.2.2
|
128
110
|
signing_key:
|
129
111
|
specification_version: 4
|
130
112
|
summary: Random data generator for use with Generative.
|
131
|
-
test_files:
|
113
|
+
test_files:
|
132
114
|
- spec/lib/degenerate_spec.rb
|
133
115
|
- spec/lib/generators_spec.rb
|
134
116
|
- spec/spec_helper.rb
|