rushcheck 0.3 → 0.4

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.
Files changed (167) hide show
  1. data/Rakefile +1 -1
  2. data/data/rushcheck/doc/policy.txt +107 -0
  3. data/data/rushcheck/doc/rushcheck.thtml +832 -0
  4. data/data/rushcheck/examples/candy.rb +6 -8
  5. data/data/rushcheck/examples/printf.rb +3 -3
  6. data/data/rushcheck/examples/proc.rb +4 -4
  7. data/data/rushcheck/examples/roguetile.rb +16 -16
  8. data/data/rushcheck/examples/sample.rb +10 -10
  9. data/data/rushcheck/rdoc/classes/Arbitrary.html +5 -5
  10. data/data/rushcheck/rdoc/classes/Arbitrary.src/M000082.html +18 -0
  11. data/data/rushcheck/rdoc/classes/Assertion.html +11 -11
  12. data/data/rushcheck/rdoc/classes/Assertion.src/M000019.html +20 -0
  13. data/data/rushcheck/rdoc/classes/Assertion.src/M000020.html +50 -0
  14. data/data/rushcheck/rdoc/classes/Coarbitrary.html +5 -5
  15. data/data/rushcheck/rdoc/classes/Coarbitrary.src/M000105.html +18 -0
  16. data/data/rushcheck/rdoc/classes/FalseClass.html +15 -15
  17. data/data/rushcheck/rdoc/classes/FalseClass.src/M000022.html +18 -0
  18. data/data/rushcheck/rdoc/classes/FalseClass.src/M000023.html +18 -0
  19. data/data/rushcheck/rdoc/classes/FalseClass.src/M000024.html +18 -0
  20. data/data/rushcheck/rdoc/classes/Float.html +20 -20
  21. data/data/rushcheck/rdoc/classes/Float.src/M000052.html +21 -0
  22. data/data/rushcheck/rdoc/classes/Float.src/M000053.html +18 -0
  23. data/data/rushcheck/rdoc/classes/Float.src/M000054.html +22 -0
  24. data/data/rushcheck/rdoc/classes/Float.src/M000055.html +20 -0
  25. data/data/rushcheck/rdoc/classes/Gen.html +102 -102
  26. data/data/rushcheck/rdoc/classes/Gen.src/M000030.html +4 -10
  27. data/data/rushcheck/rdoc/classes/Gen.src/M000031.html +29 -4
  28. data/data/rushcheck/rdoc/classes/Gen.src/M000032.html +6 -4
  29. data/data/rushcheck/rdoc/classes/Gen.src/M000033.html +14 -4
  30. data/data/rushcheck/rdoc/classes/Gen.src/M000034.html +10 -4
  31. data/data/rushcheck/rdoc/classes/Gen.src/M000035.html +4 -4
  32. data/data/rushcheck/rdoc/classes/Gen.src/M000036.html +4 -10
  33. data/data/rushcheck/rdoc/classes/Gen.src/M000037.html +4 -4
  34. data/data/rushcheck/rdoc/classes/Gen.src/M000038.html +4 -7
  35. data/data/rushcheck/rdoc/classes/Gen.src/M000039.html +4 -4
  36. data/data/rushcheck/rdoc/classes/Gen.src/M000040.html +10 -4
  37. data/data/rushcheck/rdoc/classes/Gen.src/M000041.html +4 -9
  38. data/data/rushcheck/rdoc/classes/Gen.src/M000042.html +7 -5
  39. data/data/rushcheck/rdoc/classes/Gen.src/M000043.html +4 -4
  40. data/data/rushcheck/rdoc/classes/Gen.src/M000044.html +4 -10
  41. data/data/rushcheck/rdoc/classes/Gen.src/M000045.html +23 -0
  42. data/data/rushcheck/rdoc/classes/Gen.src/M000046.html +19 -0
  43. data/data/rushcheck/rdoc/classes/Gen.src/M000047.html +18 -0
  44. data/data/rushcheck/rdoc/classes/Gen.src/M000048.html +24 -0
  45. data/data/rushcheck/rdoc/classes/Guard.html +10 -10
  46. data/data/rushcheck/rdoc/classes/Guard.src/M000028.html +27 -0
  47. data/data/rushcheck/rdoc/classes/Guard.src/M000029.html +18 -0
  48. data/data/rushcheck/rdoc/classes/HsRandom.html +20 -20
  49. data/data/rushcheck/rdoc/classes/HsRandom.src/M000088.html +22 -0
  50. data/data/rushcheck/rdoc/classes/HsRandom.src/M000089.html +32 -0
  51. data/data/rushcheck/rdoc/classes/HsRandom.src/M000090.html +18 -0
  52. data/data/rushcheck/rdoc/classes/Integer.html +20 -20
  53. data/data/rushcheck/rdoc/classes/Integer.src/M000010.html +18 -0
  54. data/data/rushcheck/rdoc/classes/Integer.src/M000011.html +18 -0
  55. data/data/rushcheck/rdoc/classes/Integer.src/M000012.html +21 -0
  56. data/data/rushcheck/rdoc/classes/Integer.src/M000013.html +19 -0
  57. data/data/rushcheck/rdoc/classes/NilClass.html +15 -15
  58. data/data/rushcheck/rdoc/classes/NilClass.src/M000064.html +18 -0
  59. data/data/rushcheck/rdoc/classes/NilClass.src/M000065.html +18 -0
  60. data/data/rushcheck/rdoc/classes/NilClass.src/M000066.html +18 -0
  61. data/data/rushcheck/rdoc/classes/Property.html +10 -10
  62. data/data/rushcheck/rdoc/classes/Property.src/M000077.html +26 -0
  63. data/data/rushcheck/rdoc/classes/Property.src/M000078.html +18 -0
  64. data/data/rushcheck/rdoc/classes/RandomArray.html +15 -15
  65. data/data/rushcheck/rdoc/classes/RandomArray.src/M000025.html +18 -0
  66. data/data/rushcheck/rdoc/classes/RandomArray.src/M000026.html +35 -0
  67. data/data/rushcheck/rdoc/classes/RandomArray.src/M000027.html +22 -0
  68. data/data/rushcheck/rdoc/classes/RandomBool.html +10 -10
  69. data/data/rushcheck/rdoc/classes/RandomBool.src/M000086.html +18 -0
  70. data/data/rushcheck/rdoc/classes/RandomBool.src/M000087.html +19 -0
  71. data/data/rushcheck/rdoc/classes/RandomGen.html +20 -20
  72. data/data/rushcheck/rdoc/classes/RandomGen.src/M000083.html +18 -0
  73. data/data/rushcheck/rdoc/classes/RandomGen.src/M000084.html +18 -0
  74. data/data/rushcheck/rdoc/classes/RandomGen.src/M000085.html +18 -0
  75. data/data/rushcheck/rdoc/classes/RandomHash.html +16 -16
  76. data/data/rushcheck/rdoc/classes/RandomHash.src/M000049.html +18 -0
  77. data/data/rushcheck/rdoc/classes/RandomHash.src/M000050.html +26 -0
  78. data/data/rushcheck/rdoc/classes/RandomHash.src/M000051.html +22 -0
  79. data/data/rushcheck/rdoc/classes/RandomProc.html +20 -20
  80. data/data/rushcheck/rdoc/classes/RandomProc.src/M000060.html +18 -0
  81. data/data/rushcheck/rdoc/classes/RandomProc.src/M000061.html +30 -0
  82. data/data/rushcheck/rdoc/classes/RandomProc.src/M000062.html +26 -0
  83. data/data/rushcheck/rdoc/classes/RandomProc.src/M000063.html +20 -0
  84. data/data/rushcheck/rdoc/classes/Result.html +19 -19
  85. data/data/rushcheck/rdoc/classes/Result.src/M000056.html +18 -0
  86. data/data/rushcheck/rdoc/classes/Result.src/M000057.html +18 -0
  87. data/data/rushcheck/rdoc/classes/Result.src/M000058.html +18 -0
  88. data/data/rushcheck/rdoc/classes/RushCheckConfig.html +41 -11
  89. data/data/rushcheck/rdoc/classes/RushCheckConfig.src/M000001.html +1 -1
  90. data/data/rushcheck/rdoc/classes/RushCheckConfig.src/M000002.html +1 -1
  91. data/data/rushcheck/rdoc/classes/RushCheckConfig.src/M000003.html +8 -4
  92. data/data/rushcheck/rdoc/classes/RushCheckConfig.src/M000004.html +4 -24
  93. data/data/rushcheck/rdoc/classes/RushCheckConfig.src/M000005.html +22 -39
  94. data/data/rushcheck/rdoc/classes/RushCheckConfig.src/M000006.html +55 -0
  95. data/data/rushcheck/rdoc/classes/RushCheckConfig.src/M000007.html +50 -0
  96. data/data/rushcheck/rdoc/classes/SpecialString.html +5 -5
  97. data/data/rushcheck/rdoc/classes/SpecialString.src/M000021.html +37 -0
  98. data/data/rushcheck/rdoc/classes/StdGen.html +27 -27
  99. data/data/rushcheck/rdoc/classes/StdGen.src/M000014.html +9 -4
  100. data/data/rushcheck/rdoc/classes/StdGen.src/M000015.html +21 -0
  101. data/data/rushcheck/rdoc/classes/StdGen.src/M000016.html +21 -0
  102. data/data/rushcheck/rdoc/classes/StdGen.src/M000017.html +18 -0
  103. data/data/rushcheck/rdoc/classes/StdGen.src/M000018.html +18 -0
  104. data/data/rushcheck/rdoc/classes/String.html +20 -20
  105. data/data/rushcheck/rdoc/classes/String.src/M000073.html +24 -0
  106. data/data/rushcheck/rdoc/classes/String.src/M000074.html +18 -0
  107. data/data/rushcheck/rdoc/classes/String.src/M000075.html +25 -0
  108. data/data/rushcheck/rdoc/classes/String.src/M000076.html +22 -0
  109. data/data/rushcheck/rdoc/classes/TestExausted.html +113 -0
  110. data/data/rushcheck/rdoc/classes/TestFailed.html +155 -0
  111. data/data/rushcheck/rdoc/classes/TestFailed.src/M000067.html +18 -0
  112. data/data/rushcheck/rdoc/classes/TestOk.html +113 -0
  113. data/data/rushcheck/rdoc/classes/TestOptions.html +180 -0
  114. data/data/rushcheck/rdoc/classes/TestOptions.src/M000008.html +18 -0
  115. data/data/rushcheck/rdoc/classes/TestOptions.src/M000009.html +18 -0
  116. data/data/rushcheck/rdoc/classes/TestResult.html +164 -0
  117. data/data/rushcheck/rdoc/classes/TestResult.src/M000068.html +18 -0
  118. data/data/rushcheck/rdoc/classes/Testable.html +96 -51
  119. data/data/rushcheck/rdoc/classes/Testable.src/M000091.html +4 -4
  120. data/data/rushcheck/rdoc/classes/Testable.src/M000092.html +4 -4
  121. data/data/rushcheck/rdoc/classes/Testable.src/M000095.html +4 -4
  122. data/data/rushcheck/rdoc/classes/Testable.src/M000096.html +18 -0
  123. data/data/rushcheck/rdoc/classes/Testable.src/M000097.html +18 -0
  124. data/data/rushcheck/rdoc/classes/Testable.src/M000099.html +19 -0
  125. data/data/rushcheck/rdoc/classes/Testable.src/M000100.html +21 -0
  126. data/data/rushcheck/rdoc/classes/Testable.src/M000101.html +18 -0
  127. data/data/rushcheck/rdoc/classes/Testable.src/M000103.html +18 -0
  128. data/data/rushcheck/rdoc/classes/Testable.src/M000104.html +18 -0
  129. data/data/rushcheck/rdoc/classes/TheStdGen.html +20 -20
  130. data/data/rushcheck/rdoc/classes/TheStdGen.src/M000069.html +18 -0
  131. data/data/rushcheck/rdoc/classes/TheStdGen.src/M000070.html +20 -0
  132. data/data/rushcheck/rdoc/classes/TheStdGen.src/M000071.html +21 -0
  133. data/data/rushcheck/rdoc/classes/TheStdGen.src/M000072.html +18 -0
  134. data/data/rushcheck/rdoc/classes/TrueClass.html +15 -15
  135. data/data/rushcheck/rdoc/classes/TrueClass.src/M000079.html +18 -0
  136. data/data/rushcheck/rdoc/classes/TrueClass.src/M000080.html +18 -0
  137. data/data/rushcheck/rdoc/classes/TrueClass.src/M000081.html +18 -0
  138. data/data/rushcheck/rdoc/created.rid +1 -1
  139. data/data/rushcheck/rdoc/files/rushcheck/config_rb.html +8 -1
  140. data/data/rushcheck/rdoc/files/rushcheck/testable_rb.html +3 -1
  141. data/data/rushcheck/rdoc/files/rushcheck/testoptions_rb.html +109 -0
  142. data/data/rushcheck/rdoc/files/rushcheck/testresult_rb.html +105 -0
  143. data/data/rushcheck/rdoc/files/rushcheck_rb.html +127 -0
  144. data/data/rushcheck/rdoc/fr_class_index.html +5 -0
  145. data/data/rushcheck/rdoc/fr_file_index.html +3 -1
  146. data/data/rushcheck/rdoc/fr_method_index.html +103 -94
  147. data/lib/rushcheck/arbitrary.rb +16 -12
  148. data/lib/rushcheck/array.rb +7 -6
  149. data/lib/rushcheck/assertion.rb +53 -50
  150. data/lib/rushcheck/bool.rb +26 -24
  151. data/lib/rushcheck/config.rb +131 -81
  152. data/lib/rushcheck/float.rb +4 -4
  153. data/lib/rushcheck/gen.rb +194 -182
  154. data/lib/rushcheck/guard.rb +9 -10
  155. data/lib/rushcheck/hash.rb +4 -3
  156. data/lib/rushcheck/integer.rb +11 -6
  157. data/lib/rushcheck/proc.rb +7 -7
  158. data/lib/rushcheck/property.rb +19 -15
  159. data/lib/rushcheck/random.rb +162 -159
  160. data/lib/rushcheck/result.rb +16 -12
  161. data/lib/rushcheck/string.rb +12 -12
  162. data/lib/rushcheck/testable.rb +99 -25
  163. data/lib/rushcheck/testoptions.rb +20 -0
  164. data/lib/rushcheck/testresult.rb +25 -0
  165. data/lib/{rushcheck/rushcheck.rb → rushcheck.rb} +2 -1
  166. metadata +93 -4
  167. data/data/rushcheck/doc/rushcheck.txt +0 -670
@@ -1,11 +1,11 @@
1
1
  # candy.rb
2
2
  # an example to write a random generator
3
3
 
4
- require 'rushcheck/rushcheck'
4
+ require 'rushcheck'
5
5
 
6
6
  class Candy
7
7
 
8
- extend Arbitrary
8
+ extend RushCheck::Arbitrary
9
9
 
10
10
  def initialize(name, price)
11
11
  raise unless price >= 0
@@ -13,9 +13,8 @@ class Candy
13
13
  end
14
14
 
15
15
  def self.arbitrary
16
- xs = [String, Integer].map {|c| c.arbitrary}
17
- Gen.create(xs) do |name, price, g|
18
- g.guard { price >= 0 }
16
+ RushCheck::Gen.create(String, Integer) do |name, price|
17
+ RushCheck::guard { price >= 0 }
19
18
  new(name, price)
20
19
  end
21
20
  end
@@ -30,12 +29,11 @@ class ExpensiveCandy < Candy
30
29
  end
31
30
 
32
31
  def self.arbitrary
33
- # xs = [String, Integer].map {|c| c.arbitrary}
34
32
  lo = 100000
35
33
  g = Gen.sized { |n| Gen.choose(lo, n + lo)}
36
34
  xs = [String.arbitrary, g]
37
- Gen.create(xs) do |name, price, g|
38
- g.guard { price >= 100000 }
35
+ Gen.create_by_gen(xs) do |name, price|
36
+ RushCheck::guard { price >= 100000 }
39
37
  new(name, price)
40
38
  end
41
39
  end
@@ -4,10 +4,10 @@
4
4
  # this news tells that a japanese handy-phone hungs when it receives
5
5
  # an email which contains the special format string "%s".
6
6
 
7
- require 'rushcheck/rushcheck'
7
+ require 'rushcheck'
8
8
 
9
9
  def malformed_format_string
10
- Assertion.new(String) { |s|
10
+ RushCheck::Assertion.new(String) { |s|
11
11
  sprintf(s)
12
12
  true
13
13
  }.check
@@ -15,7 +15,7 @@ end
15
15
 
16
16
  def malformed_format_string2
17
17
  # SpecialString is used to find special format more likely
18
- Assertion.new(SpecialString) { |s|
18
+ RushCheck::Assertion.new(SpecialString) { |s|
19
19
  sprintf(s)
20
20
  true
21
21
  }.check
@@ -1,7 +1,7 @@
1
1
  # proc.rb
2
2
  # a sample of RushCheck
3
3
 
4
- require 'rushcheck/rushcheck'
4
+ require 'rushcheck'
5
5
 
6
6
  class Proc
7
7
  # application
@@ -13,11 +13,11 @@ class Proc
13
13
  end
14
14
  end
15
15
 
16
- class MyRandomProc < RandomProc; end
16
+ class MyRandomProc < RushCheck::RandomProc; end
17
17
 
18
18
  def associativity_integer
19
19
  MyRandomProc.set_pattern([Integer], [Integer])
20
- Assertion.new(MyRandomProc, MyRandomProc, MyRandomProc, Integer) do
20
+ RushCheck::Assertion.new(MyRandomProc, MyRandomProc, MyRandomProc, Integer) do
21
21
  |a, b, c, x|
22
22
  (a ** (b ** c)).call(x) == ((a ** b) ** c).call(x)
23
23
  end.check
@@ -26,7 +26,7 @@ end
26
26
  # this test takes much time than associativity_integer
27
27
  def associativity_string
28
28
  MyRandomProc.set_pattern([String], [String])
29
- Assertion.new(MyRandomProc, MyRandomProc, MyRandomProc, String) do
29
+ RushCheck::Assertion.new(MyRandomProc, MyRandomProc, MyRandomProc, String) do
30
30
  |a, b, c, x|
31
31
  (a ** (b ** c)).call(x) == ((a ** b) ** c).call(x)
32
32
  end.check
@@ -60,14 +60,14 @@ end
60
60
 
61
61
  # ok, then let's test them and find a bug.
62
62
 
63
- require 'rushcheck/rushcheck'
63
+ require 'rushcheck'
64
64
 
65
65
  class Tree
66
- extend Arbitrary
67
- include Coarbitrary
66
+ extend RushCheck::Arbitrary
67
+ include RushCheck::Coarbitrary
68
68
 
69
69
  def self.arbitrary
70
- Gen.frequency([[3, Leaf.arbitrary], [1, Branch.arbitrary]])
70
+ RushCheck::Gen.frequency([[3, Leaf.arbitrary], [1, Branch.arbitrary]])
71
71
  end
72
72
 
73
73
  # In this example, coarbitrary isn't needed, however,
@@ -78,11 +78,11 @@ class Tree
78
78
  end
79
79
 
80
80
  class Leaf
81
- extend Arbitrary
82
- include Coarbitrary
81
+ extend RushCheck::Arbitrary
82
+ include RushCheck::Coarbitrary
83
83
 
84
84
  def self.arbitrary
85
- Integer.arbitrary.bind {|x| Gen.unit(new(x)) }
85
+ Integer.arbitrary.bind {|x| RushCheck::Gen.unit(new(x)) }
86
86
  end
87
87
 
88
88
  def coarbitrary(g)
@@ -91,11 +91,11 @@ class Leaf
91
91
  end
92
92
 
93
93
  class Branch
94
- extend Arbitrary
95
- include Coarbitrary
94
+ extend RushCheck::Arbitrary
95
+ include RushCheck::Coarbitrary
96
96
 
97
97
  def self.arbitrary
98
- Gen.new do |n, g|
98
+ RushCheck::Gen.new do |n, g|
99
99
  g2 = g
100
100
  v, l, r = [Integer.arbitrary, Tree.arbitrary, Tree.arbitrary].map do |x|
101
101
  g1, g2 = g2.split
@@ -111,15 +111,15 @@ class Branch
111
111
  end
112
112
 
113
113
  def prop_leaf_add
114
- Assertion.new(Leaf) {|x| x.add == x.value }.check
114
+ RushCheck::Assertion.new(Leaf) {|x| x.add == x.value }.check
115
115
  end
116
116
 
117
117
  def prop_leaf_multiply
118
- Assertion.new(Leaf) {|x| x.multiply == x.value }.check
118
+ RushCheck::Assertion.new(Leaf) {|x| x.multiply == x.value }.check
119
119
  end
120
120
 
121
121
  def prop_branch_add
122
- Assertion.new(Branch) do |t|
122
+ RushCheck::Assertion.new(Branch) do |t|
123
123
  t.add == t.value + t.left.add + t.right.add
124
124
  end.check
125
125
  end
@@ -129,7 +129,7 @@ def prop_branch_multiply
129
129
  # If the tester write a wrong test case by copying the code snippet?
130
130
  # Then we will meet the same problem! Even this test is passed, but
131
131
  # it is wrong.
132
- Assertion.new(Branch) do |t|
132
+ RushCheck::Assertion.new(Branch) do |t|
133
133
  t.add == t.value * t.left.add + t.right.add # Oops, a bug in testcase.
134
134
  end.check
135
135
  end
@@ -137,13 +137,13 @@ end
137
137
  # But, we can test another /primitive/ properties about
138
138
  # branch_multiply.
139
139
  def prop_branch_multiply_zero
140
- Assertion.new(Leaf) do |x|
140
+ RushCheck::Assertion.new(Leaf) do |x|
141
141
  Branch.new(0, x, x).multiply == 0
142
142
  end.check
143
143
  end
144
144
 
145
145
  def prop_branch_multiply_power
146
- Assertion.new(Leaf) do |x|
146
+ RushCheck::Assertion.new(Leaf) do |x|
147
147
  Branch.new(1, x, x).multiply == x.value * x.value
148
148
  end.check
149
149
  end
@@ -1,15 +1,15 @@
1
1
  # a simple example
2
2
 
3
- require 'rushcheck/rushcheck'
3
+ require 'rushcheck'
4
4
 
5
5
  # first boring example
6
6
  def assert_sort
7
- Assertion.new { [].sort == [] }.check
7
+ RushCheck::Assertion.new { [].sort == [] }.check
8
8
  end
9
9
 
10
10
  # assert_sort_one should be true
11
11
  def assert_sort_one
12
- Assertion.new(Integer) { |x|
12
+ RushCheck::Assertion.new(Integer) { |x|
13
13
  [x].sort == [x]
14
14
  }.check
15
15
  end
@@ -17,7 +17,7 @@ end
17
17
  # however, assert_sort_two is not true generally,
18
18
  # and RushCheck finds a counter example.
19
19
  def assert_sort_two
20
- Assertion.new(Integer, Integer) { |x, y|
20
+ RushCheck::Assertion.new(Integer, Integer) { |x, y|
21
21
  ary = [x, y]
22
22
  ary.sort == ary
23
23
  }.check
@@ -26,8 +26,8 @@ end
26
26
  # if given array is already sorted, then the
27
27
  # assertion turns true.
28
28
  def assert_sort_two_sorted
29
- Assertion.new(Integer, Integer) { |x, y, g|
30
- g.guard {x <= y}
29
+ RushCheck::Assertion.new(Integer, Integer) { |x, y|
30
+ RushCheck::guard {x <= y}
31
31
  ary = [x, y]
32
32
  ary.sort == ary
33
33
  }.check
@@ -35,16 +35,16 @@ end
35
35
 
36
36
  # watch statistics
37
37
  def assert_sort_two_sorted_trivial
38
- Assertion.new(Integer, Integer) { |x, y, g|
39
- g.guard {x <= y}
38
+ RushCheck::Assertion.new(Integer, Integer) { |x, y|
39
+ RushCheck::guard {x <= y}
40
40
  ary = [x, y]
41
41
  (ary.sort == ary).trivial{x == y}
42
42
  }.check
43
43
  end
44
44
 
45
45
  def assert_sort_two_sorted_classify
46
- Assertion.new(Integer, Integer) { |x, y, g|
47
- g.guard {x <= y}
46
+ RushCheck::Assertion.new(Integer, Integer) { |x, y|
47
+ RushCheck::guard {x <= y}
48
48
  ary = [x, y]
49
49
  (ary.sort == ary).classify('same'){x == y}.
50
50
  classify('bit diff') { (x - y).abs == 1 }
@@ -92,7 +92,7 @@ each class after include/extend them.
92
92
  <h3 class="section-bar">Methods</h3>
93
93
 
94
94
  <div class="name-list">
95
- <a href="#M000076">arbitrary</a>&nbsp;&nbsp;
95
+ <a href="#M000082">arbitrary</a>&nbsp;&nbsp;
96
96
  </div>
97
97
  </div>
98
98
 
@@ -114,12 +114,12 @@ each class after include/extend them.
114
114
  <div id="methods">
115
115
  <h3 class="section-bar">Public Instance methods</h3>
116
116
 
117
- <div id="method-M000076" class="method-detail">
118
- <a name="M000076"></a>
117
+ <div id="method-M000082" class="method-detail">
118
+ <a name="M000082"></a>
119
119
 
120
120
  <div class="method-heading">
121
- <a href="Arbitrary.src/M000076.html" target="Code" class="method-signature"
122
- onclick="popupCode('Arbitrary.src/M000076.html');return false;">
121
+ <a href="Arbitrary.src/M000082.html" target="Code" class="method-signature"
122
+ onclick="popupCode('Arbitrary.src/M000082.html');return false;">
123
123
  <span class="method-name">arbitrary</span><span class="method-args">()</span>
124
124
  </a>
125
125
  </div>
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>arbitrary (Arbitrary)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File rushcheck/arbitrary.rb, line 14</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">arbitrary</span>
15
+ <span class="ruby-identifier">raise</span>(<span class="ruby-constant">NotImplementedError</span>, <span class="ruby-value str">&quot;This method should be overrided.&quot;</span>)
16
+ <span class="ruby-keyword kw">end</span></pre>
17
+ </body>
18
+ </html>
@@ -84,7 +84,7 @@
84
84
  RushCheck. You can write a testcase for random testing as follows:
85
85
  </p>
86
86
  <p>
87
- <a href="Assertion.html#M000015">Assertion.new</a>(<a
87
+ <a href="Assertion.html#M000019">Assertion.new</a>(<a
88
88
  href="Integer.html">Integer</a>, <a href="String.html">String</a>) do |x,
89
89
  y, g|
90
90
  </p>
@@ -108,8 +108,8 @@ See also documents and several examples.
108
108
  <h3 class="section-bar">Methods</h3>
109
109
 
110
110
  <div class="name-list">
111
- <a href="#M000015">new</a>&nbsp;&nbsp;
112
- <a href="#M000016">property</a>&nbsp;&nbsp;
111
+ <a href="#M000019">new</a>&nbsp;&nbsp;
112
+ <a href="#M000020">property</a>&nbsp;&nbsp;
113
113
  </div>
114
114
  </div>
115
115
 
@@ -138,12 +138,12 @@ See also documents and several examples.
138
138
  <div id="methods">
139
139
  <h3 class="section-bar">Public Class methods</h3>
140
140
 
141
- <div id="method-M000015" class="method-detail">
142
- <a name="M000015"></a>
141
+ <div id="method-M000019" class="method-detail">
142
+ <a name="M000019"></a>
143
143
 
144
144
  <div class="method-heading">
145
- <a href="Assertion.src/M000015.html" target="Code" class="method-signature"
146
- onclick="popupCode('Assertion.src/M000015.html');return false;">
145
+ <a href="Assertion.src/M000019.html" target="Code" class="method-signature"
146
+ onclick="popupCode('Assertion.src/M000019.html');return false;">
147
147
  <span class="method-name">new</span><span class="method-args">(*xs, &amp;f)</span>
148
148
  </a>
149
149
  </div>
@@ -154,12 +154,12 @@ See also documents and several examples.
154
154
 
155
155
  <h3 class="section-bar">Public Instance methods</h3>
156
156
 
157
- <div id="method-M000016" class="method-detail">
158
- <a name="M000016"></a>
157
+ <div id="method-M000020" class="method-detail">
158
+ <a name="M000020"></a>
159
159
 
160
160
  <div class="method-heading">
161
- <a href="Assertion.src/M000016.html" target="Code" class="method-signature"
162
- onclick="popupCode('Assertion.src/M000016.html');return false;">
161
+ <a href="Assertion.src/M000020.html" target="Code" class="method-signature"
162
+ onclick="popupCode('Assertion.src/M000020.html');return false;">
163
163
  <span class="method-name">property</span><span class="method-args">()</span>
164
164
  </a>
165
165
  </div>
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>new (Assertion)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File rushcheck/assertion.rb, line 24</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">xs</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">f</span>)
15
+ <span class="ruby-ivar">@inputs</span> = <span class="ruby-identifier">xs</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span>(<span class="ruby-identifier">f</span>.<span class="ruby-identifier">arity</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)]
16
+ <span class="ruby-ivar">@nguard</span> = <span class="ruby-identifier">f</span>.<span class="ruby-identifier">arity</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">xs</span>.<span class="ruby-identifier">length</span>
17
+ <span class="ruby-ivar">@proc</span> = <span class="ruby-identifier">f</span>
18
+ <span class="ruby-keyword kw">end</span></pre>
19
+ </body>
20
+ </html>
@@ -0,0 +1,50 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>property (Assertion)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File rushcheck/assertion.rb, line 30</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">property</span>
15
+ <span class="ruby-constant">Property</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">Gen</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">n</span>, <span class="ruby-identifier">r</span><span class="ruby-operator">|</span>
16
+ <span class="ruby-identifier">r2</span> = <span class="ruby-identifier">r</span>
17
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@inputs</span>
18
+ <span class="ruby-keyword kw">then</span>
19
+ <span class="ruby-ivar">@inputs</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
20
+ <span class="ruby-identifier">r1</span>, <span class="ruby-identifier">r2</span> = <span class="ruby-identifier">r2</span>.<span class="ruby-identifier">split</span>
21
+ <span class="ruby-identifier">c</span>.<span class="ruby-identifier">arbitrary</span>.<span class="ruby-identifier">value</span>(<span class="ruby-identifier">n</span>, <span class="ruby-identifier">r1</span>)
22
+ <span class="ruby-keyword kw">end</span>
23
+ <span class="ruby-keyword kw">else</span>
24
+ []
25
+ <span class="ruby-keyword kw">end</span>
26
+ <span class="ruby-keyword kw">end</span>.<span class="ruby-identifier">bind</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">args</span><span class="ruby-operator">|</span>
27
+ <span class="ruby-identifier">guards</span> = <span class="ruby-ivar">@nguard</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-value">0</span> <span class="ruby-operator">?</span> <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@nguard</span>, <span class="ruby-constant">Guard</span>.<span class="ruby-identifier">new</span>) <span class="ruby-operator">:</span> []
28
+ <span class="ruby-identifier">test</span> = <span class="ruby-keyword kw">begin</span>
29
+ <span class="ruby-identifier">xs</span> = <span class="ruby-identifier">args</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">guards</span>
30
+ <span class="ruby-ivar">@proc</span>.<span class="ruby-identifier">call</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">xs</span>)
31
+ <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">Exception</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">ex</span>
32
+ <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">ex</span>
33
+ <span class="ruby-keyword kw">when</span> <span class="ruby-constant">RushCheckGuard</span>
34
+ <span class="ruby-constant">Result</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">nil</span>)
35
+ <span class="ruby-keyword kw">else</span>
36
+ <span class="ruby-identifier">err</span> = <span class="ruby-node">&quot;Unexpected exception: #{ex.inspect}\n&quot;</span> <span class="ruby-operator">+</span>
37
+ <span class="ruby-identifier">ex</span>.<span class="ruby-identifier">backtrace</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;\n&quot;</span>)
38
+ <span class="ruby-constant">Result</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">false</span>, [], [<span class="ruby-identifier">err</span>])
39
+ <span class="ruby-keyword kw">end</span>
40
+ <span class="ruby-keyword kw">end</span>
41
+ <span class="ruby-comment cmt"># not use ensure here because ensure clause</span>
42
+ <span class="ruby-comment cmt"># does not return values</span>
43
+ <span class="ruby-identifier">test</span>.<span class="ruby-identifier">property</span>.<span class="ruby-identifier">gen</span>.<span class="ruby-identifier">bind</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">res</span><span class="ruby-operator">|</span>
44
+ <span class="ruby-identifier">res</span>.<span class="ruby-identifier">arguments</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">inspect</span>
45
+ <span class="ruby-constant">Gen</span>.<span class="ruby-identifier">unit</span>(<span class="ruby-identifier">res</span>)
46
+ <span class="ruby-keyword kw">end</span>
47
+ <span class="ruby-keyword kw">end</span>)
48
+ <span class="ruby-keyword kw">end</span></pre>
49
+ </body>
50
+ </html>
@@ -80,7 +80,7 @@
80
80
  <h3 class="section-bar">Methods</h3>
81
81
 
82
82
  <div class="name-list">
83
- <a href="#M000096">coarbitrary</a>&nbsp;&nbsp;
83
+ <a href="#M000105">coarbitrary</a>&nbsp;&nbsp;
84
84
  </div>
85
85
  </div>
86
86
 
@@ -102,12 +102,12 @@
102
102
  <div id="methods">
103
103
  <h3 class="section-bar">Public Instance methods</h3>
104
104
 
105
- <div id="method-M000096" class="method-detail">
106
- <a name="M000096"></a>
105
+ <div id="method-M000105" class="method-detail">
106
+ <a name="M000105"></a>
107
107
 
108
108
  <div class="method-heading">
109
- <a href="Coarbitrary.src/M000096.html" target="Code" class="method-signature"
110
- onclick="popupCode('Coarbitrary.src/M000096.html');return false;">
109
+ <a href="Coarbitrary.src/M000105.html" target="Code" class="method-signature"
110
+ onclick="popupCode('Coarbitrary.src/M000105.html');return false;">
111
111
  <span class="method-name">coarbitrary</span><span class="method-args">(g)</span>
112
112
  </a>
113
113
  </div>
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>coarbitrary (Coarbitrary)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File rushcheck/arbitrary.rb, line 24</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">coarbitrary</span>(<span class="ruby-identifier">g</span>)
15
+ <span class="ruby-identifier">raise</span>(<span class="ruby-constant">NotImplementedError</span>, <span class="ruby-value str">&quot;This method should be overrided.&quot;</span>)
16
+ <span class="ruby-keyword kw">end</span></pre>
17
+ </body>
18
+ </html>
@@ -86,9 +86,9 @@
86
86
  <h3 class="section-bar">Methods</h3>
87
87
 
88
88
  <div class="name-list">
89
- <a href="#M000018">bound</a>&nbsp;&nbsp;
90
- <a href="#M000019">coarbitrary</a>&nbsp;&nbsp;
91
- <a href="#M000020">property</a>&nbsp;&nbsp;
89
+ <a href="#M000022">bound</a>&nbsp;&nbsp;
90
+ <a href="#M000023">coarbitrary</a>&nbsp;&nbsp;
91
+ <a href="#M000024">property</a>&nbsp;&nbsp;
92
92
  </div>
93
93
  </div>
94
94
 
@@ -118,12 +118,12 @@
118
118
  <div id="methods">
119
119
  <h3 class="section-bar">Public Class methods</h3>
120
120
 
121
- <div id="method-M000018" class="method-detail">
122
- <a name="M000018"></a>
121
+ <div id="method-M000022" class="method-detail">
122
+ <a name="M000022"></a>
123
123
 
124
124
  <div class="method-heading">
125
- <a href="FalseClass.src/M000018.html" target="Code" class="method-signature"
126
- onclick="popupCode('FalseClass.src/M000018.html');return false;">
125
+ <a href="FalseClass.src/M000022.html" target="Code" class="method-signature"
126
+ onclick="popupCode('FalseClass.src/M000022.html');return false;">
127
127
  <span class="method-name">bound</span><span class="method-args">()</span>
128
128
  </a>
129
129
  </div>
@@ -134,12 +134,12 @@
134
134
 
135
135
  <h3 class="section-bar">Public Instance methods</h3>
136
136
 
137
- <div id="method-M000019" class="method-detail">
138
- <a name="M000019"></a>
137
+ <div id="method-M000023" class="method-detail">
138
+ <a name="M000023"></a>
139
139
 
140
140
  <div class="method-heading">
141
- <a href="FalseClass.src/M000019.html" target="Code" class="method-signature"
142
- onclick="popupCode('FalseClass.src/M000019.html');return false;">
141
+ <a href="FalseClass.src/M000023.html" target="Code" class="method-signature"
142
+ onclick="popupCode('FalseClass.src/M000023.html');return false;">
143
143
  <span class="method-name">coarbitrary</span><span class="method-args">(g)</span>
144
144
  </a>
145
145
  </div>
@@ -148,12 +148,12 @@
148
148
  </div>
149
149
  </div>
150
150
 
151
- <div id="method-M000020" class="method-detail">
152
- <a name="M000020"></a>
151
+ <div id="method-M000024" class="method-detail">
152
+ <a name="M000024"></a>
153
153
 
154
154
  <div class="method-heading">
155
- <a href="FalseClass.src/M000020.html" target="Code" class="method-signature"
156
- onclick="popupCode('FalseClass.src/M000020.html');return false;">
155
+ <a href="FalseClass.src/M000024.html" target="Code" class="method-signature"
156
+ onclick="popupCode('FalseClass.src/M000024.html');return false;">
157
157
  <span class="method-name">property</span><span class="method-args">()</span>
158
158
  </a>
159
159
  </div>
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>bound (FalseClass)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File rushcheck/bool.rb, line 59</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">bound</span>
15
+ [<span class="ruby-ivar">@@min_bound</span>, <span class="ruby-ivar">@@max_bound</span>]
16
+ <span class="ruby-keyword kw">end</span></pre>
17
+ </body>
18
+ </html>
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>coarbitrary (FalseClass)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File rushcheck/bool.rb, line 63</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">coarbitrary</span>(<span class="ruby-identifier">g</span>)
15
+ <span class="ruby-identifier">g</span>.<span class="ruby-identifier">variant</span>(<span class="ruby-value">1</span>)
16
+ <span class="ruby-keyword kw">end</span></pre>
17
+ </body>
18
+ </html>
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html>
7
+ <head>
8
+ <title>property (FalseClass)</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
11
+ </head>
12
+ <body class="standalone-code">
13
+ <pre><span class="ruby-comment cmt"># File rushcheck/bool.rb, line 67</span>
14
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">property</span>
15
+ <span class="ruby-constant">Result</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>).<span class="ruby-identifier">result</span>
16
+ <span class="ruby-keyword kw">end</span></pre>
17
+ </body>
18
+ </html>