synthesis 0.0.10 → 0.0.11
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/Rakefile
CHANGED
@@ -91,15 +91,15 @@ end
|
|
91
91
|
|
92
92
|
gem_spec = Gem::Specification.new do |s|
|
93
93
|
s.name = 'synthesis'
|
94
|
-
s.version = '0.0.
|
94
|
+
s.version = '0.0.11'
|
95
95
|
s.platform = Gem::Platform::RUBY
|
96
96
|
s.rubyforge_project = "synthesis"
|
97
97
|
s.summary, s.description = 'A tool for Synthesized Testing'
|
98
|
-
s.
|
98
|
+
s.authors = 'Stuart Caborn, George Malamidis'
|
99
99
|
s.email = 'george@nutrun.com'
|
100
100
|
s.homepage = 'http://synthesis.rubyforge.org'
|
101
101
|
s.has_rdoc = true
|
102
|
-
s.rdoc_options += ['--quiet', '--title', '
|
102
|
+
s.rdoc_options += ['--quiet', '--title', 'Synthesis', '--main', 'README', '--inline-source']
|
103
103
|
s.extra_rdoc_files = ['README', 'COPYING']
|
104
104
|
excluded = FileList['etc/*']
|
105
105
|
# s.test_files = FileList['test/**/*_test.rb']
|
@@ -19,6 +19,18 @@ module Synthesis
|
|
19
19
|
meta_receiver.recordable_method(@method)
|
20
20
|
end
|
21
21
|
|
22
|
+
def explode
|
23
|
+
if @return_values.size > 1
|
24
|
+
@return_values.map do |v|
|
25
|
+
expectation = self.class.new(@receiver, @method, @track, @args, [])
|
26
|
+
expectation.add_return_values(v)
|
27
|
+
expectation
|
28
|
+
end
|
29
|
+
else
|
30
|
+
self
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
22
34
|
def eql?(other)
|
23
35
|
ExpectationMatcher.new(self, other).match?
|
24
36
|
end
|
@@ -4,7 +4,7 @@ module Synthesis
|
|
4
4
|
include Logging
|
5
5
|
|
6
6
|
def add_expectation(receiver, method, track, args = [])
|
7
|
-
unless ignore?
|
7
|
+
unless ignore?(receiver)
|
8
8
|
expectation = Expectation.new(receiver, method, track, args)
|
9
9
|
expectations << expectation
|
10
10
|
expectation
|
@@ -12,16 +12,16 @@ module Synthesis
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def ignore(*args)
|
15
|
-
ignored.merge
|
15
|
+
ignored.merge(args)
|
16
16
|
end
|
17
17
|
|
18
18
|
def expectations
|
19
|
-
# Using an Array instead of a Set because the +Expectation+ instance
|
19
|
+
# Using an Array instead of a Set because the +Expectation+ instance
|
20
|
+
# is not complete when first added. A Set would result to possible duplicates.
|
20
21
|
# obj.expects(:method).with(:args)
|
21
22
|
# the +Expectation+ will be added when obj.expects(:method) is called
|
22
23
|
# the +Expectation+ arguments will be added when .with(:args) is called
|
23
24
|
@expectations ||= []
|
24
|
-
@expectations.uniq!
|
25
25
|
@expectations
|
26
26
|
end
|
27
27
|
|
@@ -30,11 +30,15 @@ module Synthesis
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def [](matcher)
|
33
|
-
# Using a hash when
|
33
|
+
# Using a hash when for faster look up of expectations
|
34
|
+
# when recording invocations
|
34
35
|
expectations_hash[matcher] || Expectation::NilExpectation.new
|
35
36
|
end
|
36
37
|
|
37
38
|
def record_invocations
|
39
|
+
expectations.map! { |e| e.explode }
|
40
|
+
expectations.flatten!
|
41
|
+
expectations.uniq!
|
38
42
|
expectations.each { |e| e.record_invocations }
|
39
43
|
end
|
40
44
|
|
@@ -47,5 +47,20 @@ module Synthesis
|
|
47
47
|
actual.add_return_values(:return_val)
|
48
48
|
assert_equal(expected, actual)
|
49
49
|
end
|
50
|
+
|
51
|
+
def test_uniqs_expectations_before_recording_invocations
|
52
|
+
ExpectationRecord.add_expectation(Hash, :foo, :track)
|
53
|
+
ExpectationRecord.add_expectation(Hash, :foo, :track)
|
54
|
+
assert_equal(2, ExpectationRecord.expectations.size)
|
55
|
+
ExpectationRecord.record_invocations
|
56
|
+
assert_equal(1, ExpectationRecord.expectations.size)
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_flattens_expectations_before_recording_invocations
|
60
|
+
expectation = ExpectationRecord.add_expectation(Hash, :foo, :track)
|
61
|
+
expectation.add_return_values(1, "str", "sym")
|
62
|
+
ExpectationRecord.record_invocations
|
63
|
+
ExpectationRecord.expectations.each { |val| assert(!val.is_a?(Array)) }
|
64
|
+
end
|
50
65
|
end
|
51
66
|
end
|
@@ -74,5 +74,21 @@ module Synthesis
|
|
74
74
|
expectation = Expectation.new(String.new, :new, :track, [], [:sym])
|
75
75
|
assert(!expectation.return_values_defined?)
|
76
76
|
end
|
77
|
+
|
78
|
+
def test_explodes_to_new_expectations_for_each_return_value
|
79
|
+
expectation = Expectation.new(String, :new, :track, [])
|
80
|
+
expectation.add_return_values(:sym, "str")
|
81
|
+
expected = [
|
82
|
+
Expectation.new(String, :new, :track, [], [:sym]),
|
83
|
+
Expectation.new(String, :new, :track, [], ["str"])
|
84
|
+
]
|
85
|
+
assert_equal(expected, expectation.explode)
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_returns_self_when_only_one_return_type_on_explode
|
89
|
+
expectation = Expectation.new(String, :new, :track, [])
|
90
|
+
expectation.add_return_values("rock")
|
91
|
+
assert_equal(expectation, expectation.explode)
|
92
|
+
end
|
77
93
|
end
|
78
94
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: synthesis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stuart Caborn, George Malamidis
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
12
|
+
date: 2008-05-14 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -78,7 +78,7 @@ post_install_message:
|
|
78
78
|
rdoc_options:
|
79
79
|
- --quiet
|
80
80
|
- --title
|
81
|
-
-
|
81
|
+
- Synthesis
|
82
82
|
- --main
|
83
83
|
- README
|
84
84
|
- --inline-source
|