C0 code coverage information
Generated on Mon May 21 22:36:02 -0400 2007 with rcov 0.8.0
Code reported as executed by Ruby looks like this...
and this: this line is also marked as covered.
Lines considered as run by rcov, but not reported by Ruby, look like this,
and this: these lines were inferred by rcov (using simple heuristics).
Finally, here's a line marked as not executed.
1 require File.dirname(__FILE__) + '/../spec_helper'
2 require 'rools'
3
4 class Hour
5 attr_accessor :val
6
7 def initialize( val )
8 @val = val
9 end
10
11 def > ( val)
12 return @val >= val
13 end
14
15 def <= (val)
16 @val <= val
17 end
18
19 def to_s
20 @val.to_s
21 end
22 end
23
24 describe Rools::Rule do
25
26 it "should have a name that will be downcased" do
27 ruleset = Rools::RuleSet.new do
28 rule 'Hello' do
29 parameter String
30 consequence { $result = "Hello, Rools!" }
31 end
32 end
33 rules = ruleset.get_rules
34 rule = rules.values[0]
35 rule.name.should eql("hello")
36 end
37
38 it "can have an optional priority" do
39 ruleset = Rools::RuleSet.new do
40 rule('Hello', 12) do
41 parameter String
42 consequence { $result = "Hello, Rools!" }
43 end
44 end
45 rules = ruleset.get_rules
46 rule = rules.values[0]
47 rule.priority.should eql(12)
48 end
49
50 it "can have an optional parameter tag" do
51 ruleset = Rools::RuleSet.new do
52 rule 'Hello1' do
53 parameter String
54 consequence { $result = "Hello, Rools!" }
55 end
56 rule 'Hello2' do
57 consequence { $result = "Hello, Rools!" }
58 end
59 end
60 rules = ruleset.get_rules
61 rule1 = rules.values[0]
62 rule1.parameters.should have(1).parameter
63
64 rule2 = rules.values[1]
65 rule2.parameters.should have(0).parameter
66
67 end
68
69 it "a rule parameter tag can define one or more types" do
70 ruleset = Rools::RuleSet.new do
71 rule 'Hello1' do
72 parameter String, Integer
73 consequence { $result = "Hello, Rools!" }
74 end
75 end
76
77 rules = ruleset.get_rules
78 rule1 = rules.values[0]
79 rule1.parameters.should have(2).parameter
80
81 end
82
83 it "a rule parameter type has to be pre-defined" do
84 lambda {
85 ruleset = Rools::RuleSet.new do
86 rule 'Hello1' do
87 parameter Employee
88 consequence { $result = "Hello, Rools!" }
89 end
90 end
91 }.should raise_error(Rools::RuleCheckError)
92
93
94 end
95
96 it "can have optional conditions" do
97 ruleset = Rools::RuleSet.new do
98 rule 'greater' do
99 parameter Hour
100 condition { hour > 24}
101 consequence { $result = "hour greater than 24" }
102 end
103
104 rule 'pm' do
105 parameter Hour
106 condition { hour > 12}
107 condition { hour < 24}
108 consequence { $result = "in PM" }
109 end
110
111 rule 'always' do
112 consequence { $result = "always triggers" }
113 end
114 end
115
116 rules = ruleset.get_rules
117 rule1 = rules["greater"]
118 rule1.conditions.should have(1).condition
119
120 rule2 = rules["pm"]
121 rule2.conditions.should have(2).conditions
122
123 rule3 = rules["always"]
124 rule3.conditions.should have(0).conditions
125
126 end
127
128 it "should have one or more consequences" do
129 ruleset = Rools::RuleSet.new do
130 rule 'greater' do
131 parameter Hour
132 condition { hour > 24}
133 consequence { $result = "hour greater than 24" }
134 end
135
136 rule 'always' do
137 parameter Hour
138 consequence { $result = "always triggers" }
139 consequence { $result = "hour: #{hour}" }
140 end
141
142 end
143
144 rules = ruleset.get_rules
145 rule1 = rules["greater"]
146 rule1.consequences.should have(1).consequence
147
148 rule2 = rules["always"]
149 rule2.consequences.should have(2).consequences
150
151 status = ruleset.assert(Hour.new(30))
152 status.should eql(Rools::RuleSet::PASS)
153 ruleset.num_executed.should be(2);
154 ruleset.num_evaluated.should be(2);
155
156 end
157 end
Generated using the rcov code coverage analysis tool for Ruby version 0.8.0.