%%%============================================================================ %%% Copyright 2010 Erlang Solutions Ltd. %%% %%% Licensed under the Apache License, Version 2.0 (the "License"); %%% you may not use this file except in compliance with the License. %%% You may obtain a copy of the License at %%% %%% http://www.apache.org/licenses/LICENSE-2.0 %%% %%% Unless required by applicable law or agreed to in writing, software %%% distributed under the License is distributed on an "AS IS" BASIS, %%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. %%% See the License for the specific language governing permissions and %%% limitations under the License. %%%============================================================================ -module(meck_expect_tests). -include_lib("eunit/include/eunit.hrl"). expect_explicit_values_test() -> %% When E = meck_expect:new(blah, [1000, a, {1002, [{<<"b">>, 1003}]}], 2001), %% Then V2001 = meck_ret_spec:val(2001), ?assertMatch({V2001, _}, meck_expect:fetch_result([1000, a, {1002, [{<<"b">>, 1003}]}], E)), ?assertMatch({undefined, _}, meck_expect:fetch_result([1001, a, {1002, [{<<"b">>, 1003}]}], E)), ?assertMatch({undefined, _}, meck_expect:fetch_result([1000, b, {1002, [{<<"b">>, 1003}]}], E)), ?assertMatch({undefined, _}, meck_expect:fetch_result([1000, a, {1003, [{<<"b">>, 1003}]}], E)), ?assertMatch({undefined, _}, meck_expect:fetch_result([1000, a, {1002, [{<<"c">>, 1003}]}], E)), ?assertMatch({undefined, _}, meck_expect:fetch_result([1000, a, {1002, [{<<"b">>, 1004}]}], E)). expect_wildcard_test() -> %% When E = meck_expect:new(blah, [1000, '_', {'_', [{'_', 1003}]}], 2001), %% Then V2001 = meck_ret_spec:val(2001), ?assertMatch({V2001, _}, meck_expect:fetch_result([1000, a, {1002, [{<<"b">>, 1003}]}], E)), ?assertMatch({undefined, _}, meck_expect:fetch_result([1001, a, {1002, [{<<"b">>, 1003}]}], E)), ?assertMatch({V2001, _}, meck_expect:fetch_result([1000, b, {1002, [{<<"b">>, 1003}]}], E)), ?assertMatch({V2001, _}, meck_expect:fetch_result([1000, a, {1003, [{<<"b">>, 1003}]}], E)), ?assertMatch({V2001, _}, meck_expect:fetch_result([1000, a, {1002, [{[1, {2}, 3], 1003}]}], E)), ?assertMatch({undefined, _}, meck_expect:fetch_result([1000, a, {1002, [{<<"b">>, 1004}]}], E)). expect_matchers_test() -> %% Given Is1003 = meck_matcher:new(fun(X) -> X == 1003 end), LessThen1004 = meck_matcher:new(hamcrest_matchers:less_than(1004)), %% When E = meck_expect:new(blah, [Is1003, LessThen1004], 2001), %% Then V2001 = meck_ret_spec:val(2001), ?assertMatch({V2001, _}, meck_expect:fetch_result([1003, 1002], E)), ?assertMatch({V2001, _}, meck_expect:fetch_result([1003, 1003], E)), ?assertMatch({undefined, _}, meck_expect:fetch_result([1003, 1004], E)), ?assertMatch({undefined, _}, meck_expect:fetch_result([1002, 1002], E)). expect_with_matchers_multiclause_test() -> %% Given Is1003 = meck_matcher:new(fun(X) -> X == 1003 end), LessThen1004 = meck_matcher:new(hamcrest_matchers:less_than(1004)), %% When E = meck_expect:new(blah, [{['_', Is1003, 1004], 2001}, {['_', Is1003, LessThen1004], 2002}, {['_', '_', LessThen1004], 2003}]), %% Then V2001 = meck_ret_spec:val(2001), ?assertMatch({V2001, _}, meck_expect:fetch_result([1002, 1003, 1004], E)), V2002 = meck_ret_spec:val(2002), ?assertMatch({V2002, _}, meck_expect:fetch_result([1002, 1003, 1003], E)), V2003 = meck_ret_spec:val(2003), ?assertMatch({V2003, _}, meck_expect:fetch_result([1002, 1004, 1003], E)), ?assertMatch({undefined, _}, meck_expect:fetch_result([1002, 1003, 1005], E)). expect_with_matchers_masked_clause_test() -> %% Given Is1003 = meck_matcher:new(fun(X) -> X == 1003 end), LessThen1004 = meck_matcher:new(hamcrest_matchers:less_than(1004)), %% When E = meck_expect:new(blah, [{[Is1003, LessThen1004], 2001}, {[Is1003, Is1003], 2002}]), %% Then V2001 = meck_ret_spec:val(2001), ?assertMatch({V2001, _}, meck_expect:fetch_result([1003, 1003], E)). expect_with_arity_test() -> %% When E = meck_expect:new(foo, [{2, 2001}]), %% Then V2001 = meck_ret_spec:val(2001), ?assertMatch({V2001, _}, meck_expect:fetch_result([1, 2], E)), ?assertMatch({undefined, _}, meck_expect:fetch_result([1, 2, 3], E)).