queencheck 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --default_path spec
2
+ --color
3
+ --format Fuubar
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use 1.9.3@queencheck --create
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
data/Gemfile ADDED
@@ -0,0 +1,13 @@
1
+ source "http://rubygems.org"
2
+
3
+ group :development do
4
+ gem "jeweler"
5
+ gem "rake"
6
+ gem "rspec", "2.8.0"
7
+ gem "guard-rspec", "0.6.0"
8
+ gem "growl", "1.0.3"
9
+ gem "spork", "0.9.0.rc9"
10
+ gem "guard-spork", "0.5.1"
11
+ gem "rb-fsevent", "0.4.3.1"
12
+ gem "fuubar", "~> 0.0.6"
13
+ end
data/Guardfile ADDED
@@ -0,0 +1,9 @@
1
+ guard 'spork', :cucumber => false, :bundler => false do
2
+ end
3
+
4
+ guard 'rspec', version: 2, cli: '--drb --color --format Fuubar' do
5
+ watch(%r{^spec/.+_spec\.rb$})
6
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+ end
9
+
data/README.markdown ADDED
@@ -0,0 +1,21 @@
1
+ # QueenCheck
2
+
3
+ QueenCheck is random test library.
4
+
5
+ Inspired by QuickCheck library in Haskell.
6
+
7
+ ## Usage
8
+
9
+ ```ruby
10
+ require 'queencheck'
11
+
12
+ number = 100
13
+
14
+ check = QueenCheck.new(number, :+, Integer)
15
+
16
+ res = check.run(verbose: true) do | result, arguments, error |
17
+ result == number + arguments[0]
18
+ end
19
+
20
+ puts "#{res[:passed]} / #{res[:examples]}"
21
+ ```
data/Rakefile ADDED
@@ -0,0 +1,20 @@
1
+ require 'bundler'
2
+
3
+ require 'rspec/core/rake_task'
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
7
+
8
+ begin
9
+ require 'jeweler'
10
+ Jeweler::Tasks.new do |gemspec|
11
+ gemspec.name = "queencheck"
12
+ gemspec.summary = "like haskell's QuickCheck"
13
+ gemspec.email = "rosylilly@aduca.org"
14
+ gemspec.homepage = "https://github.com/rosylilly/QueenCheck"
15
+ gemspec.description = "QueenCheck is random test library. Inspired by QuickCheck library in Haskell."
16
+ gemspec.authors = ["Sho Kusano"]
17
+ end
18
+ rescue LoadError
19
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
20
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.0
@@ -0,0 +1,56 @@
1
+
2
+ module QueenCheck
3
+ class << self
4
+ def Arbitrary(name = nil, &block)
5
+ if block.nil? && !name.nil?
6
+ return QueenCheck::Arbitrary::Instance.get_by_id(name)
7
+ else
8
+ return QueenCheck::Arbitrary::Instance.new(name, &block)
9
+ end
10
+ nil
11
+ end
12
+ end
13
+ module Arbitrary
14
+ class NotQueenCheckArbitrary < StandardError; end
15
+
16
+ def arbitrary?; true; end
17
+
18
+ def arbitrary(seed)
19
+ raise NotImplementedError
20
+ end
21
+
22
+ def set_arbitrary(&block)
23
+ self.module_eval do
24
+ sig = class << self; self; end
25
+ sig.send(:define_method, :arbitrary, &block)
26
+ end
27
+ end
28
+
29
+ class Instance
30
+ @@collection = {}
31
+ def self.get_by_id(name); return @@collection[name.to_s.to_sym]; end
32
+ def self.collection=(c); @@collection = c; end
33
+ def self.collection; @@collection; end
34
+
35
+ def initialize(name = nil, &block)
36
+ raise ArgumentError, "require block" if block.nil?
37
+ @arbitrary_proc = block
38
+ @name = name.to_s.to_sym unless name.nil?
39
+ unless @name.nil?
40
+ @@collection[@name] = self
41
+ end
42
+ end
43
+ attr_reader :name
44
+
45
+ def arbitrary?; true; end
46
+
47
+ def arbitrary(seed)
48
+ @arbitrary_proc.call(seed)
49
+ end
50
+ end
51
+ end
52
+ end
53
+
54
+ class BasicObject
55
+ def arbitrary?; false; end
56
+ end
@@ -0,0 +1,33 @@
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
+
@@ -0,0 +1,9 @@
1
+ require 'queencheck/arbitrary'
2
+
3
+ class Boolean
4
+ extend QueenCheck::Arbitrary
5
+
6
+ set_arbitrary do | seed |
7
+ rand(2).zero? ? true : false
8
+ end
9
+ end
@@ -0,0 +1,16 @@
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
@@ -0,0 +1,107 @@
1
+ require 'queencheck/config'
2
+
3
+ module QueenCheck
4
+ def self.new(*args)
5
+ QueenCheck::Core.new(*args)
6
+ end
7
+
8
+ class Core
9
+ def initialize(instance, method, *types)
10
+ @instance = instance
11
+ @method = method.respond_to?(:call) ? method : instance.method(method.to_s.to_sym)
12
+ @types = types.map do | type |
13
+ if type.respond_to?(:arbitrary?) && type.arbitrary?
14
+ next type
15
+ elsif types.kind_of?(Symbol)
16
+ type = QueenCheck::Arbitrary::Instance.get_by_id(type)
17
+ next type if type
18
+ end
19
+ raise QueenCheck::Arbitrary::NotQueenCheckArbitrary, "`#{type}` is not implemented arbitrary"
20
+ end
21
+ end
22
+
23
+ def run(config = QueenCheck::Config.new, &block)
24
+ config = config.kind_of?(Hash) ? QueenCheck::Config.new(config) : config
25
+
26
+ stats = QueenCheck::Core::Result.new(config.count)
27
+
28
+ config.count.times do | n |
29
+ range = n.to_f / config.count
30
+ arguments = []
31
+ @types.each do | type |
32
+ arguments.push(type.arbitrary(range))
33
+ end
34
+
35
+ if config.verbose?
36
+ arguments.each_with_index do | n, i |
37
+ puts "#{@types[i]}: #{n}"
38
+ end
39
+ end
40
+
41
+ result, error = nil, nil
42
+ begin
43
+ result = @method.call(*arguments)
44
+ rescue Exception => e
45
+ error = e
46
+ end
47
+
48
+ is_exception = false
49
+ begin
50
+ test_result = block.call(result, arguments, error)
51
+ rescue Exception => e
52
+ error = e
53
+ is_exception = true
54
+ end
55
+
56
+ if config.verbose?
57
+ print "#{@instance.kind_of?(Class) ? @instance.name : @instance.class.name} \##{@method.respond_to?(:name) ? @method.name : @method.class} ("
58
+ print @types.map{|type| "#{type.name}" }.join(', ') + ')'
59
+ puts " => #{is_exception ? error.class : test_result}"
60
+ end
61
+
62
+ unless is_exception
63
+ case test_result
64
+ when true
65
+ stats.passed += 1
66
+ when false
67
+ stats.failures += 1
68
+ end
69
+ else
70
+ stats.add_exception(error)
71
+ end
72
+ end
73
+
74
+ return stats
75
+ end
76
+
77
+ class Result
78
+ def initialize(examples)
79
+ @examples = examples
80
+ @passed = 0
81
+ @failures = 0
82
+ @exceptions = []
83
+ end
84
+ attr_reader :examples, :passed, :failures
85
+
86
+ def passed=(n)
87
+ raise RangeError if n > @examples
88
+ @passed = n
89
+ end
90
+
91
+ def failures=(n)
92
+ raise RangeError if n > @examples
93
+ @failures = n
94
+ end
95
+
96
+ def exceptions; @exceptions.length; end
97
+
98
+ def add_exception(e)
99
+ @exceptions.push(e)
100
+ end
101
+ end
102
+ end
103
+ end
104
+
105
+ def QueenCheck(*args)
106
+ QueenCheck.new(*args)
107
+ end
@@ -0,0 +1,44 @@
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
@@ -0,0 +1,23 @@
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
+
@@ -0,0 +1,16 @@
1
+ require 'queencheck/arbitrary'
2
+
3
+ class Integer
4
+ extend QueenCheck::Arbitrary
5
+
6
+ @@bound = 25
7
+
8
+ set_arbitrary do |seed|
9
+ if seed == 0
10
+ 0
11
+ else
12
+ max = 10 ** ((@@bound * seed).ceil)
13
+ rand(max) * (rand(2).zero? ? 1 : -1)
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,41 @@
1
+ require 'queencheck/arbitrary'
2
+
3
+ class String
4
+ extend QueenCheck::Arbitrary
5
+
6
+ @@max_length = 3000
7
+
8
+ set_arbitrary do | seed |
9
+ max = (@@max_length * (seed * seed)).ceil
10
+
11
+ charset = []
12
+ if seed == 0
13
+ return ''
14
+ elsif seed < 0.1
15
+ charset = (0x61 ... 0x7b).to_a + (0x41 ... 0x5b).to_a
16
+ elsif seed < 0.3 # ASCII
17
+ charset = (0x32 ... 0x7f).to_a
18
+ elsif seed < 0.5
19
+ charset = (0x00 ... 0x80).to_a
20
+ elsif seed < 0.7
21
+ charset = (0x00 ... 0x80).to_a
22
+ charset += (0x80 ... 0x800).to_a
23
+ elsif seed < 0.9
24
+ charset = (0x00 ... 0x80).to_a
25
+ charset += (0x80 ... 0x800).to_a
26
+ charset += (0x800 ... 0x8000).to_a
27
+ elsif seed <= 1
28
+ charset = (0x00 ... 0x80).to_a
29
+ charset += (0x80 ... 0x800).to_a
30
+ charset += (0x800 ... 0x8000).to_a
31
+ charset += (0x1000 ... 0x20000).to_a
32
+ end
33
+
34
+ ret = []
35
+ (rand(max/2) + (max/2)).times do
36
+ ret << charset[rand(charset.length)]
37
+ end
38
+
39
+ return ret.pack('U*')
40
+ end
41
+ end
data/lib/queencheck.rb ADDED
@@ -0,0 +1,10 @@
1
+ $:.unshift File.dirname(__FILE__)
2
+
3
+ require 'queencheck/core'
4
+ require 'queencheck/arbitrary'
5
+
6
+ require 'queencheck/integer'
7
+ require 'queencheck/float'
8
+ require 'queencheck/boolean'
9
+ require 'queencheck/array'
10
+ require 'queencheck/string'
@@ -0,0 +1,85 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "queencheck"
8
+ s.version = "0.0.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Sho Kusano"]
12
+ s.date = "2012-01-22"
13
+ s.description = "QueenCheck is random test library. Inspired by QuickCheck library in Haskell."
14
+ s.email = "rosylilly@aduca.org"
15
+ s.extra_rdoc_files = [
16
+ "README.markdown"
17
+ ]
18
+ s.files = [
19
+ ".rspec",
20
+ ".rvmrc",
21
+ ".travis.yml",
22
+ "Gemfile",
23
+ "Guardfile",
24
+ "README.markdown",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "lib/queencheck.rb",
28
+ "lib/queencheck/arbitrary.rb",
29
+ "lib/queencheck/array.rb",
30
+ "lib/queencheck/boolean.rb",
31
+ "lib/queencheck/config.rb",
32
+ "lib/queencheck/core.rb",
33
+ "lib/queencheck/elements_of.rb",
34
+ "lib/queencheck/float.rb",
35
+ "lib/queencheck/integer.rb",
36
+ "lib/queencheck/string.rb",
37
+ "queencheck.gemspec",
38
+ "spec/queencheck/arbitrary_spec.rb",
39
+ "spec/queencheck/core_spec.rb",
40
+ "spec/queencheck/elements_of_spec.rb",
41
+ "spec/queencheck/integer_spec.rb",
42
+ "spec/spec_helper.rb"
43
+ ]
44
+ s.homepage = "https://github.com/rosylilly/QueenCheck"
45
+ s.require_paths = ["lib"]
46
+ s.rubygems_version = "1.8.10"
47
+ s.summary = "like haskell's QuickCheck"
48
+
49
+ if s.respond_to? :specification_version then
50
+ s.specification_version = 3
51
+
52
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
53
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
54
+ s.add_development_dependency(%q<rake>, [">= 0"])
55
+ s.add_development_dependency(%q<rspec>, ["= 2.8.0"])
56
+ s.add_development_dependency(%q<guard-rspec>, ["= 0.6.0"])
57
+ s.add_development_dependency(%q<growl>, ["= 1.0.3"])
58
+ s.add_development_dependency(%q<spork>, ["= 0.9.0.rc9"])
59
+ s.add_development_dependency(%q<guard-spork>, ["= 0.5.1"])
60
+ s.add_development_dependency(%q<rb-fsevent>, ["= 0.4.3.1"])
61
+ s.add_development_dependency(%q<fuubar>, ["~> 0.0.6"])
62
+ else
63
+ s.add_dependency(%q<jeweler>, [">= 0"])
64
+ s.add_dependency(%q<rake>, [">= 0"])
65
+ s.add_dependency(%q<rspec>, ["= 2.8.0"])
66
+ s.add_dependency(%q<guard-rspec>, ["= 0.6.0"])
67
+ s.add_dependency(%q<growl>, ["= 1.0.3"])
68
+ s.add_dependency(%q<spork>, ["= 0.9.0.rc9"])
69
+ s.add_dependency(%q<guard-spork>, ["= 0.5.1"])
70
+ s.add_dependency(%q<rb-fsevent>, ["= 0.4.3.1"])
71
+ s.add_dependency(%q<fuubar>, ["~> 0.0.6"])
72
+ end
73
+ else
74
+ s.add_dependency(%q<jeweler>, [">= 0"])
75
+ s.add_dependency(%q<rake>, [">= 0"])
76
+ s.add_dependency(%q<rspec>, ["= 2.8.0"])
77
+ s.add_dependency(%q<guard-rspec>, ["= 0.6.0"])
78
+ s.add_dependency(%q<growl>, ["= 1.0.3"])
79
+ s.add_dependency(%q<spork>, ["= 0.9.0.rc9"])
80
+ s.add_dependency(%q<guard-spork>, ["= 0.5.1"])
81
+ s.add_dependency(%q<rb-fsevent>, ["= 0.4.3.1"])
82
+ s.add_dependency(%q<fuubar>, ["~> 0.0.6"])
83
+ end
84
+ end
85
+
@@ -0,0 +1,41 @@
1
+ require 'queencheck/arbitrary'
2
+
3
+ describe QueenCheck::Arbitrary do
4
+ class Example
5
+ extend QueenCheck::Arbitrary
6
+ end
7
+
8
+ it 'arbitrary' do
9
+ expect {
10
+ Example.arbitrary(1)
11
+ }.to raise_error NotImplementedError
12
+
13
+ Example.class_eval do
14
+ def arbitrary(seed)
15
+ end
16
+ end
17
+ end
18
+
19
+ describe 'Original Arbitrary' do
20
+ it 'new' do
21
+ arb = QueenCheck::Arbitrary() do | seed |
22
+ if seed < 0.5
23
+ 10**20
24
+ else
25
+ ""
26
+ end
27
+ end
28
+
29
+ arb.arbitrary?.should be_true
30
+ arb.arbitrary(0).should eq(10**20)
31
+ arb.arbitrary(1).should eq("")
32
+ end
33
+
34
+ it 'named search' do
35
+ arb = QueenCheck::Arbitrary(:sample) {}
36
+
37
+ QueenCheck::Arbitrary(:sample).should eq(arb)
38
+ end
39
+ end
40
+ end
41
+
@@ -0,0 +1,33 @@
1
+ require 'queencheck'
2
+
3
+ describe QueenCheck do
4
+ before(:each) do
5
+ @checker = QueenCheck.new(3, :+, Integer)
6
+ end
7
+
8
+ it 'quick test' do
9
+ ret = @checker.run do | result, arguments |
10
+ result.should == 3 + arguments[0]
11
+ end
12
+
13
+ ret.examples.should eq(100)
14
+ ret.passed.should eq(100)
15
+ ret.failures.should eq(0)
16
+ end
17
+
18
+ it 'exception' do
19
+ div = QueenCheck(5, :/, Integer)
20
+
21
+ ret = div.run do | result, arguments, error |
22
+ if error
23
+ error.should be_kind_of(ZeroDivisionError)
24
+ else
25
+ result.should eq(5 / arguments[0])
26
+ end
27
+ end
28
+
29
+ ret.examples.should eq(100)
30
+ ret.passed.should eq(100)
31
+ end
32
+ end
33
+
@@ -0,0 +1,22 @@
1
+ require 'queencheck/elements_of'
2
+
3
+ describe QueenCheck::ElementsOf do
4
+ before(:each) do
5
+ @samples = ['a', 'b', 'c']
6
+ @elements_of = QueenCheck::ElementsOf.new(@samples)
7
+ end
8
+
9
+ it 'choose one' do
10
+ 100.times do
11
+ @samples.should be_include(@elements_of.arbitrary(rand(10).to_f / 10))
12
+ end
13
+ end
14
+
15
+ it 'named type' do
16
+ named = QueenCheck::ElementsOf(:names, ['test', 'sample'])
17
+
18
+ named.should be_kind_of(QueenCheck::ElementsOf)
19
+ QueenCheck::ElementsOf(:names).should eq(named)
20
+ QueenCheck::Arbitrary(:elements_of_names).should eq(named)
21
+ end
22
+ end
@@ -0,0 +1,11 @@
1
+ describe Integer do
2
+ it ".arbitrary" do
3
+ 100.times do
4
+ Integer.arbitrary(0).should be_zero
5
+ end
6
+
7
+ 100.times do |n|
8
+ n = n / 100.0
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ require 'rubygems'
2
+ require 'spork'
3
+ require 'rspec'
4
+
5
+ Spork.prefork do
6
+ config(:before) do
7
+ @lib_path = Pathname.new(File.expand_path('../../lib/', __FILE__))
8
+ end
9
+ end
10
+
11
+ Spork.each_run do
12
+ end
metadata ADDED
@@ -0,0 +1,169 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: queencheck
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Sho Kusano
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-22 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: jeweler
16
+ requirement: &70273802055380 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *70273802055380
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &70273802054200 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70273802054200
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec
38
+ requirement: &70273802069140 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - =
42
+ - !ruby/object:Gem::Version
43
+ version: 2.8.0
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70273802069140
47
+ - !ruby/object:Gem::Dependency
48
+ name: guard-rspec
49
+ requirement: &70273802068260 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - =
53
+ - !ruby/object:Gem::Version
54
+ version: 0.6.0
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *70273802068260
58
+ - !ruby/object:Gem::Dependency
59
+ name: growl
60
+ requirement: &70273802067680 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - =
64
+ - !ruby/object:Gem::Version
65
+ version: 1.0.3
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *70273802067680
69
+ - !ruby/object:Gem::Dependency
70
+ name: spork
71
+ requirement: &70273802067040 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - =
75
+ - !ruby/object:Gem::Version
76
+ version: 0.9.0.rc9
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *70273802067040
80
+ - !ruby/object:Gem::Dependency
81
+ name: guard-spork
82
+ requirement: &70273802066300 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - =
86
+ - !ruby/object:Gem::Version
87
+ version: 0.5.1
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *70273802066300
91
+ - !ruby/object:Gem::Dependency
92
+ name: rb-fsevent
93
+ requirement: &70273802065700 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - =
97
+ - !ruby/object:Gem::Version
98
+ version: 0.4.3.1
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *70273802065700
102
+ - !ruby/object:Gem::Dependency
103
+ name: fuubar
104
+ requirement: &70273802065100 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 0.0.6
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *70273802065100
113
+ description: QueenCheck is random test library. Inspired by QuickCheck library in
114
+ Haskell.
115
+ email: rosylilly@aduca.org
116
+ executables: []
117
+ extensions: []
118
+ extra_rdoc_files:
119
+ - README.markdown
120
+ files:
121
+ - .rspec
122
+ - .rvmrc
123
+ - .travis.yml
124
+ - Gemfile
125
+ - Guardfile
126
+ - README.markdown
127
+ - Rakefile
128
+ - VERSION
129
+ - lib/queencheck.rb
130
+ - lib/queencheck/arbitrary.rb
131
+ - lib/queencheck/array.rb
132
+ - lib/queencheck/boolean.rb
133
+ - lib/queencheck/config.rb
134
+ - lib/queencheck/core.rb
135
+ - lib/queencheck/elements_of.rb
136
+ - lib/queencheck/float.rb
137
+ - lib/queencheck/integer.rb
138
+ - lib/queencheck/string.rb
139
+ - queencheck.gemspec
140
+ - spec/queencheck/arbitrary_spec.rb
141
+ - spec/queencheck/core_spec.rb
142
+ - spec/queencheck/elements_of_spec.rb
143
+ - spec/queencheck/integer_spec.rb
144
+ - spec/spec_helper.rb
145
+ homepage: https://github.com/rosylilly/QueenCheck
146
+ licenses: []
147
+ post_install_message:
148
+ rdoc_options: []
149
+ require_paths:
150
+ - lib
151
+ required_ruby_version: !ruby/object:Gem::Requirement
152
+ none: false
153
+ requirements:
154
+ - - ! '>='
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ required_rubygems_version: !ruby/object:Gem::Requirement
158
+ none: false
159
+ requirements:
160
+ - - ! '>='
161
+ - !ruby/object:Gem::Version
162
+ version: '0'
163
+ requirements: []
164
+ rubyforge_project:
165
+ rubygems_version: 1.8.10
166
+ signing_key:
167
+ specification_version: 3
168
+ summary: like haskell's QuickCheck
169
+ test_files: []