Conscience Core
unit-test.h
Go to the documentation of this file.
1 
2 #include <boost/test/execution_monitor.hpp>
3 #include <boost/test/framework.hpp>
4 #include <boost/test/results_collector.hpp>
5 #include <boost/test/tree/observer.hpp>
6 #include <boost/test/unit_test.hpp>
7 
8 #include "./fakeit.hpp"
9 #include <memory>
10 
11 #include "Util/conscience_log.h"
12 
13 using std::string, std::vector, std::to_string;
14 using namespace conscience_utils;
15 using namespace fakeit;
16 
17 namespace {
18 
19  class ConscienceTestObserver : public boost::unit_test::test_observer {
20  public:
22  logger = std::move(CscLogger::getForCategory(string(boost::unit_test::framework::current_test_case().p_name)));
23  }
24 
25  void exception_caught(boost::execution_exception const &error) override {
26  string errorLocation =
27  "" + to_string(error.where().m_file_name) + "(" + to_string(error.where().m_function) + " - line " + to_string(error.where().m_line_num) +
28  ")";
29  logger->info("⚠️ exception caught (see error below) " + errorLocation + " ⚠️");
30 
31  logger->info(string(">>>> ") + error.what());
32 
33  exceptionCaught = true;
34  }
35 
36  bool wasAnExceptionCaught() {
37  return exceptionCaught;
38  }
39 
40  private:
41  bool exceptionCaught;
42  std::unique_ptr<CscLogger> logger;
43  };
44 
45  class FixtureBase {
46  public:
47  static ConscienceTestObserver *observer;
48 
49  std::unique_ptr<CscLogger> logger;
50 
51  FixtureBase() {
52  logger = std::move(CscLogger::getForCategory(string(boost::unit_test::framework::current_test_case().p_name)));
53  logger->setLevel(LogLevel_TRACE);
54  logger->info("starting test =============================================================");
55 
57  boost::unit_test::framework::register_observer(*FixtureBase::observer);
58  }
59 
60  ~FixtureBase() {
61  if (FixtureBase::observer != NULL) {
62  logger->info("unregister previous observer");
63  boost::unit_test::framework::deregister_observer(*FixtureBase::observer);
64 
65  logger->info("release observer");
66  delete FixtureBase::observer;
67  }
68  logger->info("ending test ====");
69  }
70  };
71 
73 
74  template<class MockedType>
75  MockedType *mockToPointer(Mock<MockedType> &mock) {
76  Fake(Dtor(mock));
77 
78  MockedType &instanceReference = mock.get();
79  std::shared_ptr<MockedType> sharedPtr(&instanceReference);
80  MockedType *pointer = sharedPtr.get();
81  return pointer;
82  }
83 }
conscience_log.h
nlohmann::to_string
NLOHMANN_BASIC_JSON_TPL_DECLARATION std::string to_string(const NLOHMANN_BASIC_JSON_TPL &j)
user-defined to_string function for JSON values
Definition: json.hpp:26470
mockToPointer
MockedType * mockToPointer(Mock< MockedType > &mock)
Definition: unit-test.h:73
FixtureBase::observer
static ConscienceTestObserver * observer
Definition: unit-test.h:51
ConscienceTestObserver
Definition: unit-test.h:34
nlohmann::detail::cbor_tag_handler_t::error
@ error
throw a parse_error exception in case of a tag
logger
static std::unique_ptr< CscLogger > logger
Definition: gltfHelpers.cpp:6
FixtureBase
Definition: unit-test.h:49
conscience_utils
Definition: CscEntityReflexion.h:50