Skip to content

Commit

Permalink
mocker enhancements
Browse files Browse the repository at this point in the history
  • Loading branch information
cadrian committed Oct 28, 2015
1 parent 668e0fa commit 141c94f
Show file tree
Hide file tree
Showing 16 changed files with 251 additions and 7 deletions.
10 changes: 10 additions & 0 deletions src/lib/tests/mock/matcher/mock_any.e
Expand Up @@ -6,6 +6,16 @@ class MOCK_ANY[E_]
inherit
MOCK_TYPED_MATCHER[E_]

feature {ANY}
out_in_tagged_out_memory
local
e: E_
do
tagged_out_memory.append(once "<any ")
tagged_out_memory.append(e.generator)
tagged_out_memory.extend('>')
end

feature {MOCK_EXPECTATION}
match (a: MOCK_TYPED_ARGUMENT[E_]): BOOLEAN
do
Expand Down
13 changes: 13 additions & 0 deletions src/lib/tests/mock/matcher/mock_eq.e
Expand Up @@ -8,10 +8,23 @@ inherit

insert
SAFE_EQUAL[E_]
redefine
out_in_tagged_out_memory
end

create {ANY}
make

feature {ANY}
out_in_tagged_out_memory
do
if item = Void then
tagged_out_memory.append(once "Void")
else
item.out_in_tagged_out_memory
end
end

feature {MOCK_EXPECTATION}
match (a: MOCK_TYPED_ARGUMENT[E_]): BOOLEAN
do
Expand Down
7 changes: 7 additions & 0 deletions src/lib/tests/mock/mock_argument.e
Expand Up @@ -5,6 +5,13 @@ deferred class MOCK_ARGUMENT
--
-- Tag type used by the mock framework
--

insert
ANY
undefine
out_in_tagged_out_memory
end

end -- class MOCK_ARGUMENT
--
-- Copyright (c) 2013-2015 Cyril ADRIAN <cyril.adrian@gmail.com>
Expand Down
27 changes: 27 additions & 0 deletions src/lib/tests/mock/mock_arguments.e
Expand Up @@ -3,6 +3,12 @@
--
class MOCK_ARGUMENTS

insert
ANY
redefine
out_in_tagged_out_memory
end

create {MOCK_EXPECT, MOCK_OBJECT}
make0, make1, make2, make3, make4, make5, make6, make7, make8, make9, make10

Expand All @@ -24,6 +30,27 @@ feature {ANY}
Result := arguments.item(i - 1)
end

out_in_tagged_out_memory
local
i: INTEGER
do
if count > 0 then
tagged_out_memory.extend('(')
from
i := arguments.lower
until
i > arguments.upper
loop
if i > arguments.lower then
tagged_out_memory.append(once ", ")
end
arguments.item(i).out_in_tagged_out_memory
i := i + 1
end
tagged_out_memory.extend(')')
end
end

feature {}
make0
do
Expand Down
19 changes: 19 additions & 0 deletions src/lib/tests/mock/mock_expectation.e
Expand Up @@ -3,6 +3,12 @@
--
deferred class MOCK_EXPECTATION

insert
ANY
undefine
out_in_tagged_out_memory
end

feature {ANY}
ready: BOOLEAN
deferred
Expand All @@ -23,9 +29,20 @@ feature {ANY}
a_feature_name.is_interned
a_arguments /= Void
deferred
ensure
Result implies target.missing_expectations /= Void
end

feature {MOCK_EXPECTATION_GROUP}
replay (missing_expectations: COLLECTION[MOCK_EXPECTATION])
require
missing_expectations /= Void
do
target.replay(missing_expectations)
ensure
target.missing_expectations = missing_expectations
end

done
deferred
ensure
Expand All @@ -34,6 +51,8 @@ feature {MOCK_EXPECTATION_GROUP}

all_called
deferred
ensure
target.missing_expectations = Void
end

all_done_message_in (message: STRING)
Expand Down
8 changes: 8 additions & 0 deletions src/lib/tests/mock/mock_expectation_group.e
Expand Up @@ -57,6 +57,14 @@ feature {MOCK_EXPECTATION_GROUPS}
Result /= Void implies Result.can_call(a_target, a_feature_name, a_arguments)
end

replay_all (missing_expectations: COLLECTION[MOCK_EXPECTATION])
do
expectations.for_each(agent (mexps: COLLECTION[MOCK_EXPECTATION]; exps: FAST_ARRAY[MOCK_EXPECTATION])
do
exps.for_each(agent {MOCK_EXPECTATION}.replay(mexps))
end (missing_expectations, ?))
end

all_called
do
expectations.for_each(agent {FAST_ARRAY[MOCK_EXPECTATION]}.for_each(agent {MOCK_EXPECTATION}.all_called))
Expand Down
3 changes: 2 additions & 1 deletion src/lib/tests/mock/mock_expectation_groups.e
Expand Up @@ -25,11 +25,12 @@ feature {MOCK_SCENARIO}
groups.add_last(create {MOCK_EXPECTATION_GROUP}.make)
end

replay_all
replay_all (missing_expectations: COLLECTION[MOCK_EXPECTATION])
require
not is_replaying
do
check_index.set_item(groups.lower)
groups.for_each(agent {MOCK_EXPECTATION_GROUP}.replay_all(missing_expectations))
ensure
is_replaying
end
Expand Down
2 changes: 1 addition & 1 deletion src/lib/tests/mock/mock_function_expectation.e
Expand Up @@ -4,7 +4,7 @@
class MOCK_FUNCTION_EXPECTATION[T_ -> TUPLE, R_]

inherit
MOCK_TYPED_EXPECTATION
MOCK_TYPED_EXPECTATION[T_]

create {MOCK_EXPECT}
make
Expand Down
6 changes: 6 additions & 0 deletions src/lib/tests/mock/mock_matcher.e
Expand Up @@ -6,6 +6,12 @@ deferred class MOCK_MATCHER
-- Tag type used by the mock framework
--

insert
ANY
undefine
out_in_tagged_out_memory
end

feature {MOCK_EXPECTATION}
match (a: MOCK_ARGUMENT): BOOLEAN
require
Expand Down
95 changes: 95 additions & 0 deletions src/lib/tests/mock/mock_matchers.e
Expand Up @@ -3,6 +3,12 @@
--
class MOCK_MATCHERS

insert
ANY
redefine
out_in_tagged_out_memory
end

create {MOCK_EXPECT}
make0, make1, make2, make3, make4, make5, make6, make7, make8, make9, make10

Expand All @@ -24,64 +30,153 @@ feature {MOCK_EXPECTATION}
Result := matchers.item(i - 1)
end

out_in_tagged_out_memory
local
i: INTEGER
do
if count > 0 then
tagged_out_memory.extend('(')
from
i := matchers.lower
until
i > matchers.upper
loop
if i > matchers.lower then
tagged_out_memory.append(once ", ")
end
matchers.item(i).out_in_tagged_out_memory
i := i + 1
end
tagged_out_memory.extend(')')
end
end

feature {}
make0
do
create matchers
end

make1 (a1: MOCK_MATCHER)
require
a1 /= Void
do
matchers := {FAST_ARRAY[MOCK_MATCHER] << a1 >> }
end

make2 (a1, a2: MOCK_MATCHER)
require
a1 /= Void
a2 /= Void
do
matchers := {FAST_ARRAY[MOCK_MATCHER] << a1, a2 >> }
end

make3 (a1, a2, a3: MOCK_MATCHER)
require
a1 /= Void
a2 /= Void
a3 /= Void
do
matchers := {FAST_ARRAY[MOCK_MATCHER] << a1, a2, a3 >> }
end

make4 (a1, a2, a3, a4: MOCK_MATCHER)
require
a1 /= Void
a2 /= Void
a3 /= Void
a4 /= Void
do
matchers := {FAST_ARRAY[MOCK_MATCHER] << a1, a2, a3, a4 >> }
end

make5 (a1, a2, a3, a4, a5: MOCK_MATCHER)
require
a1 /= Void
a2 /= Void
a3 /= Void
a4 /= Void
a5 /= Void
do
matchers := {FAST_ARRAY[MOCK_MATCHER] << a1, a2, a3, a4, a5 >> }
end

make6 (a1, a2, a3, a4, a5, a6: MOCK_MATCHER)
require
a1 /= Void
a2 /= Void
a3 /= Void
a4 /= Void
a5 /= Void
a6 /= Void
do
matchers := {FAST_ARRAY[MOCK_MATCHER] << a1, a2, a3, a4, a5, a6 >> }
end

make7 (a1, a2, a3, a4, a5, a6, a7: MOCK_MATCHER)
require
a1 /= Void
a2 /= Void
a3 /= Void
a4 /= Void
a5 /= Void
a6 /= Void
a7 /= Void
do
matchers := {FAST_ARRAY[MOCK_MATCHER] << a1, a2, a3, a4, a5, a6, a7 >> }
end

make8 (a1, a2, a3, a4, a5, a6, a7, a8: MOCK_MATCHER)
require
a1 /= Void
a2 /= Void
a3 /= Void
a4 /= Void
a5 /= Void
a6 /= Void
a7 /= Void
a8 /= Void
do
matchers := {FAST_ARRAY[MOCK_MATCHER] << a1, a2, a3, a4, a5, a6, a7, a8 >> }
end

make9 (a1, a2, a3, a4, a5, a6, a7, a8, a9: MOCK_MATCHER)
require
a1 /= Void
a2 /= Void
a3 /= Void
a4 /= Void
a5 /= Void
a6 /= Void
a7 /= Void
a8 /= Void
a9 /= Void
do
matchers := {FAST_ARRAY[MOCK_MATCHER] << a1, a2, a3, a4, a5, a6, a7, a8, a9 >> }
end

make10 (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10: MOCK_MATCHER)
require
a1 /= Void
a2 /= Void
a3 /= Void
a4 /= Void
a5 /= Void
a6 /= Void
a7 /= Void
a8 /= Void
a9 /= Void
a10 /= Void
do
matchers := {FAST_ARRAY[MOCK_MATCHER] << a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 >> }
end

matchers: FAST_ARRAY[MOCK_MATCHER]

invariant
matchers.for_all(agent (m: MOCK_MATCHER): BOOLEAN do then m /= Void end(?))

end -- class MOCK_MATCHERS
--
-- Copyright (c) 2013-2015 Cyril ADRIAN <cyril.adrian@gmail.com>
Expand Down
24 changes: 24 additions & 0 deletions src/lib/tests/mock/mock_object.e
Expand Up @@ -5,6 +5,30 @@ deferred class MOCK_OBJECT
--
-- Tag type used by the mock framework
--

feature {MOCK_EXPECT}
add_missing_expectation(expectation: MOCK_EXPECTATION)
require
expectation /= Void
do
missing_expectations.add_last(expectation)
end

can_add_missing_expectation: BOOLEAN
do
Result := missing_expectations /= Void
end

feature {MOCK_EXPECTATION}
missing_expectations: COLLECTION[MOCK_EXPECTATION]

replay (a_missing_expectations: like missing_expectations)
do
missing_expectations := a_missing_expectations
ensure
missing_expectations = a_missing_expectations
end

end -- class MOCK_OBJECT
--
-- Copyright (c) 2013-2015 Cyril ADRIAN <cyril.adrian@gmail.com>
Expand Down
2 changes: 1 addition & 1 deletion src/lib/tests/mock/mock_procedure_expectation.e
Expand Up @@ -4,7 +4,7 @@
class MOCK_PROCEDURE_EXPECTATION[T_ -> TUPLE]

inherit
MOCK_TYPED_EXPECTATION
MOCK_TYPED_EXPECTATION[T_]
export {MOCK_OBJECT}
call
end
Expand Down

0 comments on commit 141c94f

Please sign in to comment.