[/
 / Copyright (c) 2014 Mathieu Champlon
 /
 / Distributed under the Boost Software License, Version 1.0. (See accompanying
 / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 /]

[section Motivation]
[import example/motivation.cpp]
[import example/calculator.hpp]
[import example/mock_view.hpp]
[import example/view.hpp]

Consider a (very) simple calculator class :

[simple_calculator]

Obviously writing unit tests for such a class is trivial, one of them could be :

[simple_zero_plus_zero_is_zero]

What now if the calculator class looks more like this :

[view]
[calculator]

Writing unit tests becomes a bit more tedious and requires some boiler-plate code, for instance :

[my_view]
[zero_plus_zero_is_zero_without_mock_object]

Mock objects main purpose is to alleviate the user from the burden of writing all this boiler-plate code.

Here is how the last test can be rewritten using a mock object :

[mock_view]
[zero_plus_zero_is_zero_with_mock_object]

and all the checks are automatically handled by the library.

[endsect]
