queencheck 0.1.2 → 1.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.
- data/Gemfile +4 -0
- data/Guardfile +2 -1
- data/README.md +119 -0
- data/Rakefile +11 -0
- data/VERSION +1 -1
- data/lib/queencheck.rb +16 -13
- data/lib/queencheck/arbitraries/all.rb +5 -0
- data/lib/queencheck/arbitraries/boolean.rb +5 -0
- data/lib/queencheck/arbitraries/integer.rb +17 -0
- data/lib/queencheck/arbitraries/string.rb +39 -0
- data/lib/queencheck/arbitrary.rb +84 -40
- data/lib/queencheck/condition.rb +112 -0
- data/lib/queencheck/core.rb +82 -97
- data/lib/queencheck/exception.rb +4 -0
- data/lib/queencheck/gen.rb +254 -0
- data/lib/queencheck/result.rb +107 -0
- data/lib/queencheck/rspec.rb +50 -9
- data/queencheck.gemspec +26 -18
- data/spec/queencheck/arbitrary_spec.rb +8 -34
- data/spec/queencheck/core_spec.rb +12 -40
- data/spec/queencheck/gen_spec.rb +68 -0
- data/spec/queencheck/rspec_spec.rb +14 -14
- metadata +76 -42
- data/README.markdown +0 -24
- data/lib/queencheck/array.rb +0 -33
- data/lib/queencheck/boolean.rb +0 -9
- data/lib/queencheck/config.rb +0 -16
- data/lib/queencheck/elements_of.rb +0 -44
- data/lib/queencheck/float.rb +0 -23
- data/lib/queencheck/integer.rb +0 -16
- data/lib/queencheck/rspec/dsl.rb +0 -22
- data/lib/queencheck/string.rb +0 -47
- data/spec/queencheck/elements_of_spec.rb +0 -22
- data/spec/queencheck/integer_spec.rb +0 -17
- data/spec/queencheck/string_spec.rb +0 -13
@@ -1,19 +1,19 @@
|
|
1
1
|
require 'queencheck/rspec'
|
2
2
|
|
3
|
-
describe
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
describe QueenCheck do
|
4
|
+
QueenCheck('stadard check', String) { | x |
|
5
|
+
x.class.should == String
|
6
|
+
}
|
7
|
+
|
8
|
+
verboseQueenCheck('verbose check', QueenCheck::ASCIIChar) { | x |
|
9
|
+
x.size.should == 1
|
10
|
+
}
|
7
11
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
end
|
15
|
-
else
|
16
|
-
result.should == 1 / arguments[0]
|
17
|
-
end
|
12
|
+
labelingQueenCheck('labelig check', {
|
13
|
+
"x > y" => proc{|x,y| x > y },
|
14
|
+
"x < y" => proc{|x,y| x < y },
|
15
|
+
"x = y" => proc{|x,y| x == y },
|
16
|
+
},Integer, Integer) do | x, y |
|
17
|
+
(x + y).should == y + x
|
18
18
|
end
|
19
19
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: queencheck
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: colorize
|
16
|
+
requirement: &70160982288100 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.5.8
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70160982288100
|
14
25
|
- !ruby/object:Gem::Dependency
|
15
26
|
name: rake
|
16
|
-
requirement: &
|
27
|
+
requirement: &70160982287160 !ruby/object:Gem::Requirement
|
17
28
|
none: false
|
18
29
|
requirements:
|
19
30
|
- - ! '>='
|
@@ -21,10 +32,10 @@ dependencies:
|
|
21
32
|
version: 0.9.2.2
|
22
33
|
type: :development
|
23
34
|
prerelease: false
|
24
|
-
version_requirements: *
|
35
|
+
version_requirements: *70160982287160
|
25
36
|
- !ruby/object:Gem::Dependency
|
26
37
|
name: rspec
|
27
|
-
requirement: &
|
38
|
+
requirement: &70160982286680 !ruby/object:Gem::Requirement
|
28
39
|
none: false
|
29
40
|
requirements:
|
30
41
|
- - ! '>='
|
@@ -32,10 +43,10 @@ dependencies:
|
|
32
43
|
version: 2.8.0
|
33
44
|
type: :development
|
34
45
|
prerelease: false
|
35
|
-
version_requirements: *
|
46
|
+
version_requirements: *70160982286680
|
36
47
|
- !ruby/object:Gem::Dependency
|
37
48
|
name: fuubar
|
38
|
-
requirement: &
|
49
|
+
requirement: &70160982286200 !ruby/object:Gem::Requirement
|
39
50
|
none: false
|
40
51
|
requirements:
|
41
52
|
- - ! '>='
|
@@ -43,10 +54,10 @@ dependencies:
|
|
43
54
|
version: 0.0.6
|
44
55
|
type: :development
|
45
56
|
prerelease: false
|
46
|
-
version_requirements: *
|
57
|
+
version_requirements: *70160982286200
|
47
58
|
- !ruby/object:Gem::Dependency
|
48
59
|
name: jeweler
|
49
|
-
requirement: &
|
60
|
+
requirement: &70160982285720 !ruby/object:Gem::Requirement
|
50
61
|
none: false
|
51
62
|
requirements:
|
52
63
|
- - ! '>='
|
@@ -54,10 +65,10 @@ dependencies:
|
|
54
65
|
version: 1.8.3
|
55
66
|
type: :development
|
56
67
|
prerelease: false
|
57
|
-
version_requirements: *
|
68
|
+
version_requirements: *70160982285720
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: growl
|
60
|
-
requirement: &
|
71
|
+
requirement: &70160982285240 !ruby/object:Gem::Requirement
|
61
72
|
none: false
|
62
73
|
requirements:
|
63
74
|
- - ! '>='
|
@@ -65,10 +76,10 @@ dependencies:
|
|
65
76
|
version: 1.0.3
|
66
77
|
type: :development
|
67
78
|
prerelease: false
|
68
|
-
version_requirements: *
|
79
|
+
version_requirements: *70160982285240
|
69
80
|
- !ruby/object:Gem::Dependency
|
70
81
|
name: spork
|
71
|
-
requirement: &
|
82
|
+
requirement: &70160982284760 !ruby/object:Gem::Requirement
|
72
83
|
none: false
|
73
84
|
requirements:
|
74
85
|
- - ! '>='
|
@@ -76,10 +87,10 @@ dependencies:
|
|
76
87
|
version: 0.9.0.rc9
|
77
88
|
type: :development
|
78
89
|
prerelease: false
|
79
|
-
version_requirements: *
|
90
|
+
version_requirements: *70160982284760
|
80
91
|
- !ruby/object:Gem::Dependency
|
81
92
|
name: rb-fsevent
|
82
|
-
requirement: &
|
93
|
+
requirement: &70160982284280 !ruby/object:Gem::Requirement
|
83
94
|
none: false
|
84
95
|
requirements:
|
85
96
|
- - ! '>='
|
@@ -87,10 +98,10 @@ dependencies:
|
|
87
98
|
version: 0.9.0
|
88
99
|
type: :development
|
89
100
|
prerelease: false
|
90
|
-
version_requirements: *
|
101
|
+
version_requirements: *70160982284280
|
91
102
|
- !ruby/object:Gem::Dependency
|
92
103
|
name: guard-spork
|
93
|
-
requirement: &
|
104
|
+
requirement: &70160982283720 !ruby/object:Gem::Requirement
|
94
105
|
none: false
|
95
106
|
requirements:
|
96
107
|
- - ! '>='
|
@@ -98,10 +109,10 @@ dependencies:
|
|
98
109
|
version: 0.5.1
|
99
110
|
type: :development
|
100
111
|
prerelease: false
|
101
|
-
version_requirements: *
|
112
|
+
version_requirements: *70160982283720
|
102
113
|
- !ruby/object:Gem::Dependency
|
103
114
|
name: guard-rspec
|
104
|
-
requirement: &
|
115
|
+
requirement: &70160982283200 !ruby/object:Gem::Requirement
|
105
116
|
none: false
|
106
117
|
requirements:
|
107
118
|
- - ! '>='
|
@@ -109,10 +120,10 @@ dependencies:
|
|
109
120
|
version: 0.6.0
|
110
121
|
type: :development
|
111
122
|
prerelease: false
|
112
|
-
version_requirements: *
|
123
|
+
version_requirements: *70160982283200
|
113
124
|
- !ruby/object:Gem::Dependency
|
114
125
|
name: guard-bundler
|
115
|
-
requirement: &
|
126
|
+
requirement: &70160982282720 !ruby/object:Gem::Requirement
|
116
127
|
none: false
|
117
128
|
requirements:
|
118
129
|
- - ! '>='
|
@@ -120,10 +131,10 @@ dependencies:
|
|
120
131
|
version: 0.1.3
|
121
132
|
type: :development
|
122
133
|
prerelease: false
|
123
|
-
version_requirements: *
|
134
|
+
version_requirements: *70160982282720
|
124
135
|
- !ruby/object:Gem::Dependency
|
125
136
|
name: guard-yard
|
126
|
-
requirement: &
|
137
|
+
requirement: &70160982282240 !ruby/object:Gem::Requirement
|
127
138
|
none: false
|
128
139
|
requirements:
|
129
140
|
- - ! '>='
|
@@ -131,10 +142,10 @@ dependencies:
|
|
131
142
|
version: 1.0.2
|
132
143
|
type: :development
|
133
144
|
prerelease: false
|
134
|
-
version_requirements: *
|
145
|
+
version_requirements: *70160982282240
|
135
146
|
- !ruby/object:Gem::Dependency
|
136
147
|
name: yard
|
137
|
-
requirement: &
|
148
|
+
requirement: &70160982425520 !ruby/object:Gem::Requirement
|
138
149
|
none: false
|
139
150
|
requirements:
|
140
151
|
- - ! '>='
|
@@ -142,10 +153,10 @@ dependencies:
|
|
142
153
|
version: 0.7.4
|
143
154
|
type: :development
|
144
155
|
prerelease: false
|
145
|
-
version_requirements: *
|
156
|
+
version_requirements: *70160982425520
|
146
157
|
- !ruby/object:Gem::Dependency
|
147
158
|
name: yard-tomdoc
|
148
|
-
requirement: &
|
159
|
+
requirement: &70160982424980 !ruby/object:Gem::Requirement
|
149
160
|
none: false
|
150
161
|
requirements:
|
151
162
|
- - ! '>='
|
@@ -153,42 +164,62 @@ dependencies:
|
|
153
164
|
version: 0.3.0
|
154
165
|
type: :development
|
155
166
|
prerelease: false
|
156
|
-
version_requirements: *
|
167
|
+
version_requirements: *70160982424980
|
168
|
+
- !ruby/object:Gem::Dependency
|
169
|
+
name: redcarpet
|
170
|
+
requirement: &70160982424500 !ruby/object:Gem::Requirement
|
171
|
+
none: false
|
172
|
+
requirements:
|
173
|
+
- - ! '>='
|
174
|
+
- !ruby/object:Gem::Version
|
175
|
+
version: '0'
|
176
|
+
type: :development
|
177
|
+
prerelease: false
|
178
|
+
version_requirements: *70160982424500
|
179
|
+
- !ruby/object:Gem::Dependency
|
180
|
+
name: pry
|
181
|
+
requirement: &70160982424020 !ruby/object:Gem::Requirement
|
182
|
+
none: false
|
183
|
+
requirements:
|
184
|
+
- - ! '>='
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: '0'
|
187
|
+
type: :development
|
188
|
+
prerelease: false
|
189
|
+
version_requirements: *70160982424020
|
157
190
|
description: QueenCheck is random test library. Inspired by QuickCheck library in
|
158
191
|
Haskell.
|
159
192
|
email: rosylilly@aduca.org
|
160
193
|
executables: []
|
161
194
|
extensions: []
|
162
195
|
extra_rdoc_files:
|
163
|
-
- README.
|
196
|
+
- README.md
|
164
197
|
files:
|
165
198
|
- .rspec
|
166
199
|
- .rvmrc
|
167
200
|
- .travis.yml
|
168
201
|
- Gemfile
|
169
202
|
- Guardfile
|
170
|
-
- README.
|
203
|
+
- README.md
|
171
204
|
- Rakefile
|
172
205
|
- VERSION
|
173
206
|
- lib/queencheck.rb
|
207
|
+
- lib/queencheck/arbitraries/all.rb
|
208
|
+
- lib/queencheck/arbitraries/boolean.rb
|
209
|
+
- lib/queencheck/arbitraries/integer.rb
|
210
|
+
- lib/queencheck/arbitraries/string.rb
|
174
211
|
- lib/queencheck/arbitrary.rb
|
175
|
-
- lib/queencheck/
|
176
|
-
- lib/queencheck/boolean.rb
|
177
|
-
- lib/queencheck/config.rb
|
212
|
+
- lib/queencheck/condition.rb
|
178
213
|
- lib/queencheck/core.rb
|
179
|
-
- lib/queencheck/
|
180
|
-
- lib/queencheck/
|
181
|
-
- lib/queencheck/
|
214
|
+
- lib/queencheck/exception.rb
|
215
|
+
- lib/queencheck/gen.rb
|
216
|
+
- lib/queencheck/result.rb
|
182
217
|
- lib/queencheck/rspec.rb
|
183
|
-
- lib/queencheck/rspec/dsl.rb
|
184
|
-
- lib/queencheck/string.rb
|
185
218
|
- queencheck.gemspec
|
186
219
|
- spec/queencheck/arbitrary_spec.rb
|
187
220
|
- spec/queencheck/core_spec.rb
|
188
|
-
- spec/queencheck/
|
189
|
-
- spec/queencheck/integer_spec.rb
|
221
|
+
- spec/queencheck/gen_spec.rb
|
190
222
|
- spec/queencheck/rspec_spec.rb
|
191
|
-
- spec/queencheck/string_spec.rb
|
192
223
|
- spec/spec_helper.rb
|
193
224
|
homepage: https://github.com/rosylilly/QueenCheck
|
194
225
|
licenses: []
|
@@ -202,6 +233,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
202
233
|
- - ! '>='
|
203
234
|
- !ruby/object:Gem::Version
|
204
235
|
version: '0'
|
236
|
+
segments:
|
237
|
+
- 0
|
238
|
+
hash: 2669412712847825288
|
205
239
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
206
240
|
none: false
|
207
241
|
requirements:
|
@@ -210,7 +244,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
210
244
|
version: '0'
|
211
245
|
requirements: []
|
212
246
|
rubyforge_project:
|
213
|
-
rubygems_version: 1.8.
|
247
|
+
rubygems_version: 1.8.11
|
214
248
|
signing_key:
|
215
249
|
specification_version: 3
|
216
250
|
summary: like haskell's QuickCheck
|
data/README.markdown
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
# QueenCheck [](http://travis-ci.org/rosylilly/QueenCheck) [](https://gemnasium.com/rosylilly/QueenCheck)
|
2
|
-
|
3
|
-
QueenCheck is random test library.
|
4
|
-
|
5
|
-
Inspired by QuickCheck library in Haskell.
|
6
|
-
|
7
|
-
## Usage
|
8
|
-
|
9
|
-
$ gem install queencheck
|
10
|
-
|
11
|
-
|
12
|
-
## Example
|
13
|
-
|
14
|
-
require 'queencheck'
|
15
|
-
|
16
|
-
number = 100
|
17
|
-
|
18
|
-
check = QueenCheck(number, :+, Integer)
|
19
|
-
|
20
|
-
res = check.run(verbose: true) do | result, arguments, error |
|
21
|
-
result == number + arguments[0]
|
22
|
-
end
|
23
|
-
|
24
|
-
puts "#{res.passes} / #{res.examples}"
|
data/lib/queencheck/array.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'queencheck/arbitrary'
|
2
|
-
|
3
|
-
class Array
|
4
|
-
extend QueenCheck::Arbitrary
|
5
|
-
|
6
|
-
@@bound = 10
|
7
|
-
|
8
|
-
set_arbitrary do |seed|
|
9
|
-
if seed == 0
|
10
|
-
return []
|
11
|
-
else
|
12
|
-
base = ((@@bound * seed).ceil)
|
13
|
-
|
14
|
-
ary = Array.new(rand(base) + 1)
|
15
|
-
|
16
|
-
if seed > 0.3
|
17
|
-
ary.map!{|ar| Array.new(rand(base) + 1) }
|
18
|
-
end
|
19
|
-
|
20
|
-
if seed > 0.5
|
21
|
-
ary.map!{|ar| ar.map!{|a| Array.new(rand(base) + 1) } }
|
22
|
-
end
|
23
|
-
|
24
|
-
if seed > 0.8
|
25
|
-
ary.map!{|ar| ar.map!{|a| a.map!{|item| Array.new(rand(base) + 1) } } }
|
26
|
-
end
|
27
|
-
|
28
|
-
return ary
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
|
data/lib/queencheck/boolean.rb
DELETED
data/lib/queencheck/config.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
|
2
|
-
module QueenCheck
|
3
|
-
class Config
|
4
|
-
attr_reader :count, :log
|
5
|
-
|
6
|
-
def initialize(options = nil)
|
7
|
-
options ||= {}
|
8
|
-
|
9
|
-
@count = options[:count] || 100 # デフォルトの試行回数は 100 回
|
10
|
-
@verbose = options[:verbose] || false
|
11
|
-
@log = options[:log] || STDOUT
|
12
|
-
end
|
13
|
-
|
14
|
-
def verbose?; @verbose; end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
|
2
|
-
module QueenCheck
|
3
|
-
class << self
|
4
|
-
def ElementsOf(name, elements = nil)
|
5
|
-
if elements.nil? && !name.kind_of?(Array)
|
6
|
-
return QueenCheck::ElementsOf.get_by_id(name)
|
7
|
-
else
|
8
|
-
return QueenCheck::ElementsOf.new(name, elements)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
class ElementsOf
|
14
|
-
@@instances = {}
|
15
|
-
|
16
|
-
def self.get_by_id(id)
|
17
|
-
return @@instances[id.to_s.to_sym]
|
18
|
-
end
|
19
|
-
|
20
|
-
attr_reader :elements, :name
|
21
|
-
|
22
|
-
def arbitrary?; true; end
|
23
|
-
|
24
|
-
def arbitrary(seed)
|
25
|
-
@elements[rand(@elements.length)]
|
26
|
-
end
|
27
|
-
|
28
|
-
def initialize(name, elements = nil)
|
29
|
-
if elements.nil? && name.kind_of?(Array)
|
30
|
-
elements = name
|
31
|
-
name = nil
|
32
|
-
end
|
33
|
-
|
34
|
-
raise ArgumentError, 'elements length require over 1' if !elements.respond_to?(:length) || elements.length < 0
|
35
|
-
@elements = elements
|
36
|
-
|
37
|
-
if name
|
38
|
-
@name = name.to_s.to_sym
|
39
|
-
@@instances[@name] = self
|
40
|
-
QueenCheck::Arbitrary::Instance.collection["elements_of_#{@name}".to_sym] = self
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
data/lib/queencheck/float.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'queencheck/arbitrary'
|
2
|
-
|
3
|
-
class Float
|
4
|
-
extend QueenCheck::Arbitrary
|
5
|
-
|
6
|
-
@@bound = 25
|
7
|
-
|
8
|
-
set_arbitrary do |seed|
|
9
|
-
if seed == 0
|
10
|
-
0.0
|
11
|
-
else
|
12
|
-
if seed > 0.9 && rand(3) > 0
|
13
|
-
return rand(2).zero? ? 0.0/0.0 : rand(2).zero? ? 1.0/0 : -1.0/0
|
14
|
-
end
|
15
|
-
base = ((@@bound * seed).ceil).to_f
|
16
|
-
max = 10.0 ** base
|
17
|
-
num = rand(max)
|
18
|
-
nod = num.to_s.length
|
19
|
-
num.to_f / (10 ** ((rand(nod / 2) + nod / 2) / 2)) * (rand(2).zero? ? 1.0 : -1.0)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|