// // Copyright (c) 2012-2020 Kris Jusiak (kris at jusiak dot net) // // 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) // #include "boost/di/extension/providers/mocks_provider.hpp" #include namespace di = boost::di; struct i1 { virtual ~i1() noexcept = default; virtual int get() = 0; }; struct i2 { virtual ~i2() noexcept = default; virtual int get() = 0; }; struct c { c(std::shared_ptr sp, std::unique_ptr up, int i) { assert(sp->get() == 42); assert(up->get() == 123); assert(i == 87); } }; int main() { // clang-format off /*<>*/ { /*<>*/ auto mi = di::extension::mocks_injector(); /*<>*/ expect(mi, &i1::get).will_return(42); expect(mi, &i2::get).will_return(123); /*<>*/ c object{mi, mi, 87}; } /*<>*/ { struct impl1 : i1 { int get() override { return 42; } }; /*<>*/ // clang-format off auto mi = di::extension::mocks_injector( di::bind().to(87) // custom value , di::bind().to() // original implementation ); // clang-format on /*<>*/ expect(mi, &i2::get).will_return(123); // fake /*<>*/ mi.create(); } // clang-format on }