From 957e7ff54c55cce493ab80efba745f72cc75f0fa Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Mon, 19 Mar 2018 03:30:22 +0100 Subject: [PATCH] DI: extract testcode into new unit test --- research/try.cpp | 146 ---------- tests/15library.tests | 5 + .../library/dependency-configuration-test.cpp | 251 ++++++++++++++++++ 3 files changed, 256 insertions(+), 146 deletions(-) create mode 100644 tests/library/dependency-configuration-test.cpp diff --git a/research/try.cpp b/research/try.cpp index 4936767a7..71bed1d9d 100644 --- a/research/try.cpp +++ b/research/try.cpp @@ -382,155 +382,9 @@ typedef unsigned int uint; ///////////////////////////////////////////////////////Usage -struct Dum - : boost::noncopyable - { - virtual ~Dum() { } - virtual int probe() =0; - }; - - -int checksum = 0; - -template -struct Dummy - : Dum - { - Dummy() { checksum += N; } - ~Dummy() { checksum -= N; cout << "~Dummy<"<"<> dep11; - Depend> dep5; - Depend> dep12; - - cout << "Siz-DUM : " << lib::test::showSizeof(dep11) << " " << lib::test::showSizeof(dep5) << endl; - cout << "check-vor="<{}() ); - - Depend dumm; - DependInject::useSingleton>(); - SHOW_EXPR( dumm().probe() ); - SHOW_EXPR( checksum ); - VERIFY_ERROR (LIFECYCLE, DependInject::useSingleton>() ); - SHOW_EXPR( Depend{}().probe() ); - SHOW_EXPR( checksum ); - - struct SubDummy - : Dummy<3> - { - virtual int - probe() override - { - return -checksum + offset; - } - - int offset = 0; - }; - - Depend> dep3; - SHOW_EXPR( checksum ); - { - DependInject>::ServiceInstance service{}; - CHECK (service); - SHOW_EXPR( checksum ); - SHOW_EXPR( dep3().probe() ); - SHOW_EXPR( checksum ); - service->offset = 5; - SHOW_EXPR( dep3().probe() ); - SHOW_EXPR( checksum ); - } - SHOW_EXPR( checksum ); - VERIFY_ERROR (LIFECYCLE, dep3().probe() ); - VERIFY_ERROR (LIFECYCLE, DependInject::ServiceInstance{} ); - SHOW_EXPR( checksum ); - - { - DependInject::Local mockDum; - DependInject>::Local mockDummy3; - CHECK (!mockDum); - CHECK (!mockDummy3); - SHOW_EXPR( dumm().probe() ); - CHECK ( mockDum); - CHECK (!mockDummy3); - SHOW_EXPR( checksum ); - SHOW_EXPR( mockDum->probe() ); - SHOW_EXPR( checksum ); - mockDum->offset = -4; - SHOW_EXPR( dumm().probe() ); - - CHECK (!mockDummy3); - SHOW_EXPR( checksum ); - SHOW_EXPR( dep3().probe() ); - SHOW_EXPR( checksum ); - CHECK ( mockDummy3); - SHOW_EXPR( mockDummy3->probe() ); - SHOW_EXPR( checksum ); - mockDummy3->offset = 19; - SHOW_EXPR( dep3().probe() ); - mockDum->offset = -6; - SHOW_EXPR( dep3().probe() ); - SHOW_EXPR( dumm().probe() ); - SHOW_EXPR( checksum ); - } - SHOW_EXPR( checksum ); - SHOW_EXPR( dumm().probe() ); - VERIFY_ERROR (LIFECYCLE, dep3().probe() ); - SHOW_EXPR( checksum ); - { - DependInject>::ServiceInstance service{}; - SHOW_EXPR( checksum ); - SHOW_EXPR( dep3().probe() ); - service->offset = 5; - SHOW_EXPR( dep3().probe() ); - SHOW_EXPR( checksum ); - { - DependInject>::Local mockDummy31; - CHECK (!mockDummy31); - SHOW_EXPR( checksum ); - SHOW_EXPR( dep3().probe() ); - SHOW_EXPR( checksum ); - mockDummy31->offset = 10; - SHOW_EXPR( dep3().probe() ); - SHOW_EXPR( mockDummy31->probe() ); - SHOW_EXPR( service->probe() ); - CHECK (mockDummy31->offset != service->offset); - service->offset = 20; - SHOW_EXPR( dep3().probe() ); - SHOW_EXPR( mockDummy31->probe() ); - SHOW_EXPR( service->probe() ); - SHOW_EXPR( checksum ); - } - SHOW_EXPR( checksum ); - SHOW_EXPR( dep3().probe() ); - SHOW_EXPR( checksum ); - } - SHOW_EXPR( checksum ); - VERIFY_ERROR (LIFECYCLE, dep3().probe() ); - SHOW_EXPR( dumm().probe() ); - SHOW_EXPR( checksum ); cout << "\n.gulp.\n"; diff --git a/tests/15library.tests b/tests/15library.tests index b238a96b9..2b201b80b 100644 --- a/tests/15library.tests +++ b/tests/15library.tests @@ -148,6 +148,11 @@ return: 0 END +PLANNED "Dependency injection configuration" DependencyConfiguration_test < + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + +/** @file dependency-configuration-test.cpp + ** unit test \ref DependencyConfiguration_test + */ + + + +#include "lib/test/run.hpp" +#include "lib/format-cout.hpp" +#include "lib/test/test-helper.hpp" +#include "lib/util.hpp" + +#include "lib/depend2.hpp" +#include "lib/depend-inject.hpp" + +#define SHOW_TYPE(_TY_) \ + cout << "typeof( " << STRINGIFY(_TY_) << " )= " << lib::meta::typeStr<_TY_>() <"<> dep11; + Depend> dep5; + Depend> dep12; + + cout << "Siz-DUM : " << lib::test::showSizeof(dep11) << " " << lib::test::showSizeof(dep5) << endl; + cout << "check-vor="<{}() ); + + Depend dumm; + DependInject::useSingleton>(); + SHOW_EXPR( dumm().probe() ); + SHOW_EXPR( checksum ); + VERIFY_ERROR (LIFECYCLE, DependInject::useSingleton>() ); + SHOW_EXPR( Depend{}().probe() ); + SHOW_EXPR( checksum ); + + struct SubDummy + : Dummy<3> + { + virtual int + probe() override + { + return -checksum + offset; + } + + int offset = 0; + }; + + Depend> dep3; + SHOW_EXPR( checksum ); + { + DependInject>::ServiceInstance service{}; + CHECK (service); + SHOW_EXPR( checksum ); + SHOW_EXPR( dep3().probe() ); + SHOW_EXPR( checksum ); + service->offset = 5; + SHOW_EXPR( dep3().probe() ); + SHOW_EXPR( checksum ); + } + SHOW_EXPR( checksum ); + VERIFY_ERROR (LIFECYCLE, dep3().probe() ); + VERIFY_ERROR (LIFECYCLE, DependInject::ServiceInstance{} ); + SHOW_EXPR( checksum ); + + { + DependInject::Local mockDum; + DependInject>::Local mockDummy3; + CHECK (!mockDum); + CHECK (!mockDummy3); + SHOW_EXPR( dumm().probe() ); + CHECK ( mockDum); + CHECK (!mockDummy3); + SHOW_EXPR( checksum ); + SHOW_EXPR( mockDum->probe() ); + SHOW_EXPR( checksum ); + mockDum->offset = -4; + SHOW_EXPR( dumm().probe() ); + + CHECK (!mockDummy3); + SHOW_EXPR( checksum ); + SHOW_EXPR( dep3().probe() ); + SHOW_EXPR( checksum ); + CHECK ( mockDummy3); + SHOW_EXPR( mockDummy3->probe() ); + SHOW_EXPR( checksum ); + mockDummy3->offset = 19; + SHOW_EXPR( dep3().probe() ); + mockDum->offset = -6; + SHOW_EXPR( dep3().probe() ); + SHOW_EXPR( dumm().probe() ); + SHOW_EXPR( checksum ); + } + SHOW_EXPR( checksum ); + SHOW_EXPR( dumm().probe() ); + VERIFY_ERROR (LIFECYCLE, dep3().probe() ); + SHOW_EXPR( checksum ); + { + DependInject>::ServiceInstance service{}; + SHOW_EXPR( checksum ); + SHOW_EXPR( dep3().probe() ); + service->offset = 5; + SHOW_EXPR( dep3().probe() ); + SHOW_EXPR( checksum ); + { + DependInject>::Local mockDummy31; + CHECK (!mockDummy31); + SHOW_EXPR( checksum ); + SHOW_EXPR( dep3().probe() ); + SHOW_EXPR( checksum ); + mockDummy31->offset = 10; + SHOW_EXPR( dep3().probe() ); + SHOW_EXPR( mockDummy31->probe() ); + SHOW_EXPR( service->probe() ); + CHECK (mockDummy31->offset != service->offset); + service->offset = 20; + SHOW_EXPR( dep3().probe() ); + SHOW_EXPR( mockDummy31->probe() ); + SHOW_EXPR( service->probe() ); + SHOW_EXPR( checksum ); + } + SHOW_EXPR( checksum ); + SHOW_EXPR( dep3().probe() ); + SHOW_EXPR( checksum ); + } + SHOW_EXPR( checksum ); + VERIFY_ERROR (LIFECYCLE, dep3().probe() ); + SHOW_EXPR( dumm().probe() ); + SHOW_EXPR( checksum ); + } + + + void + verify_SubclassCreation() + { + } + + + void + verify_customFactory() + { + } + + + + void + verify_automaticReplacement() + { + } + }; + + + + LAUNCHER (DependencyConfiguration_test, "unit common"); + + +}} // namespace lib::test