8#include <gtest/gtest.h>
10#include "arcane/utils/DependencyInjection.h"
12#include "arcane/utils/ITraceMng.h"
21using namespace Arcane::DependencyInjection;
26 virtual ~IA() =
default;
27 virtual int value()
const = 0;
33 virtual ~IB() =
default;
34 virtual int value()
const = 0;
40 virtual ~IA2() =
default;
41 virtual int value()
const = 0;
42 virtual IB* bValue()
const = 0;
48 virtual ~IB2() =
default;
49 virtual int value()
const = 0;
50 virtual String stringValue()
const = 0;
56 virtual ~IC() =
default;
57 virtual int value()
const = 0;
63 virtual ~ID() =
default;
69 virtual ~IE() =
default;
70 virtual int intValue()
const = 0;
71 virtual String stringValue()
const = 0;
79 int value()
const override {
return 5; }
87 int value()
const override {
return 12; }
97 int value()
const override {
return 32; }
98 String stringValue()
const override {
return m_test; }
113 int intValue()
const override {
return m_int_value; }
114 String stringValue()
const override {
return m_string_value; }
126 CDImpl(
int a,
double b) : m_int_value(a+(
int)
b){}
127 CDImpl(
int a) : m_int_value(a){}
128 CDImpl() : m_int_value(2){}
129 int value()
const override {
return m_int_value; }
145 int value()
const override {
return m_a; }
146 IB* bValue()
const override {
return m_ib; }
153ARCANE_DI_REGISTER_PROVIDER(
AImpl,
155 ARCANE_DI_INTERFACES(
IA),
156 ARCANE_DI_EMPTY_CONSTRUCTOR());
158ARCANE_DI_REGISTER_PROVIDER(
BImpl,
160 ARCANE_DI_INTERFACES(
IB),
161 ARCANE_DI_EMPTY_CONSTRUCTOR());
163ARCANE_DI_REGISTER_PROVIDER(
B2Impl,
165 ARCANE_DI_INTERFACES(
IB2),
166 ARCANE_DI_CONSTRUCTOR(
String));
168ARCANE_DI_REGISTER_PROVIDER(
EImpl,
170 ARCANE_DI_INTERFACES(
IE),
173ARCANE_DI_REGISTER_PROVIDER(
A2Impl,
175 ARCANE_DI_INTERFACES(
IA2),
176 ARCANE_DI_CONSTRUCTOR(
int,
IB*));
178ARCANE_DI_REGISTER_PROVIDER(
CDImpl,
180 ARCANE_DI_INTERFACES(
IC,
ID),
181 ARCANE_DI_CONSTRUCTOR(
int));
183ARCANE_DI_REGISTER_PROVIDER(
CDImpl,
185 ARCANE_DI_INTERFACES(
IC),
186 ARCANE_DI_EMPTY_CONSTRUCTOR());
188ARCANE_DI_REGISTER_PROVIDER(
CDImpl,
190 ARCANE_DI_INTERFACES(
IC,
ID),
191 ARCANE_DI_CONSTRUCTOR(
int),
192 ARCANE_DI_CONSTRUCTOR(
int,
double),
193 ARCANE_DI_EMPTY_CONSTRUCTOR());
198 using namespace Arcane::DependencyInjection;
202 std::cout <<
"FACTORIES=" <<
injector.printFactories() <<
"\n";
207 using namespace Arcane::DependencyInjection;
208 std::cout <<
"INJECTOR TEST\n";
210 ITraceMng*
tm = Arccore::arccoreCreateDefaultTraceMng();
214 std::cout <<
"TM=" <<
tm <<
"TM2=" <<
tm2.get() <<
"\n";
220 using namespace Arcane::DependencyInjection;
221 using namespace DI_Test;
241 using namespace Arcane::DependencyInjection;
242 using namespace DI_Test;
285 std::cerr <<
"ERROR=" <<
ex <<
"\n";
292 using namespace DI_Test;
293 namespace di = Arcane::DependencyInjection;
296 di::impl::ConcreteFactory<IA2, A2Impl, ConstructorType>
c2f;
311 std::cerr <<
"ERROR=" <<
ex <<
"\n";
316TEST(DependencyInjection,Impl2)
318 using namespace DI_Test;
319 namespace di = Arcane::DependencyInjection;
356 std::cerr <<
"ERROR=" <<
ex <<
"\n";
#define ARCANE_CHECK_POINTER(ptr)
Macro retournant le pointeur ptr s'il est non nul ou lancant une exception s'il est nul.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Classe de base d'une exception.
Interface du gestionnaire de traces.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-