• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //  (C) Copyright Raffi Enficiaud 2017.
2 //  Distributed under the Boost Software License, Version 1.0.
3 //  (See accompanying file LICENSE_1_0.txt or copy at
4 //  http://www.boost.org/LICENSE_1_0.txt)
5 
6 //  See http://www.boost.org/libs/test for the library home page.
7 
8 #define BOOST_TEST_MODULE message in dataset
9 
10 #include <boost/test/unit_test.hpp>
11 
12 #include <boost/test/unit_test_suite.hpp>
13 #include <boost/test/unit_test_log.hpp>
14 #include <boost/test/results_collector.hpp>
15 #include <boost/test/data/monomorphic.hpp>
16 #include <boost/test/data/test_case.hpp>
17 
18 #include <boost/test/framework.hpp>
19 #include <boost/test/unit_test_parameters.hpp>
20 #include <boost/test/utils/nullstream.hpp>
21 
22 #include "logger-for-tests.hpp"
23 
24 // STL
25 #include <iostream>
26 #include <ios>
27 
28 
29 using boost::test_tools::output_test_stream;
30 using namespace boost::unit_test;
31 
32 
33 
34 #line 34
35 std::string filenames[] = { "util/test_image1.jpg", "util/test_image2.jpg" };
BOOST_DATA_TEST_CASE(test_update,boost::unit_test::data::make (filenames))36 BOOST_DATA_TEST_CASE(test_update,
37                      boost::unit_test::data::make(filenames))
38 {
39     std::string field_name = "Volume";
40     int         value = 100;
41 
42     BOOST_TEST_MESSAGE("Testing update :");
43     BOOST_TEST_MESSAGE("Update " << field_name << " with " << value);
44 }
45 
check_pattern_loggers(output_test_stream & output,output_format log_format,test_unit_id id,bool bt_module_failed=false,log_level ll=log_successful_tests)46 void check_pattern_loggers(
47     output_test_stream& output,
48     output_format log_format,
49     test_unit_id id,
50     bool bt_module_failed = false,
51     log_level ll = log_successful_tests )
52 {
53     {
54       log_setup_teardown holder(output, log_format, ll);
55 
56       // output before fixture registration
57       output << "* " << log_format << "-format  *******************************************************************";
58       output << std::endl;
59 
60       framework::finalize_setup_phase( id );
61 
62       bool setup_error_caught = false;
63       try {
64           framework::run( id, false ); // do not continue the test tree to have the test_log_start/end
65       }
66       catch (framework::setup_error&) {
67           BOOST_TEST_MESSAGE("Framework setup_error caught");
68           setup_error_caught = true;
69       }
70 
71       output << std::endl;
72     }
73 
74     BOOST_TEST( bt_module_failed == (( results_collector.results( id ).result_code() != 0 ) ));
75     BOOST_TEST( output.match_pattern(true) ); // flushes the stream at the end of the comparison.
76 }
77 
check_pattern_loggers(output_test_stream & output,test_suite * ts,bool bt_module_failed=false)78 void check_pattern_loggers(
79     output_test_stream& output,
80     test_suite* ts,
81     bool bt_module_failed = false)
82 {
83     ts->p_default_status.value = test_unit::RS_ENABLED;
84 
85     check_pattern_loggers( output, OF_CLF, ts->p_id, bt_module_failed );
86     check_pattern_loggers( output, OF_XML, ts->p_id, bt_module_failed );
87     check_pattern_loggers( output, OF_JUNIT, ts->p_id, bt_module_failed, log_successful_tests );
88     check_pattern_loggers( output, OF_JUNIT, ts->p_id, bt_module_failed, log_cpp_exception_errors ); // should branch to the log log_all_errors
89 }
90 
91 struct guard {
~guardguard92     ~guard()
93     {
94         boost::unit_test::unit_test_log.set_format( runtime_config::get<output_format>( runtime_config::btrt_log_format ) );
95         boost::unit_test::unit_test_log.set_stream( std::cout );
96     }
97 };
98 
99 
100 //____________________________________________________________________________//
101 
102 
BOOST_AUTO_TEST_CASE(messages_in_datasets)103 BOOST_AUTO_TEST_CASE( messages_in_datasets )
104 {
105     guard G;
106     boost::ignore_unused( G );
107 
108 #define PATTERN_FILE_NAME "messages-in-datasets-test.pattern"
109 
110     std::string pattern_file_name(
111         framework::master_test_suite().argc == 1
112             ? (runtime_config::save_pattern() ? PATTERN_FILE_NAME : "./baseline-outputs/" PATTERN_FILE_NAME )
113             : framework::master_test_suite().argv[1] );
114 
115     output_test_stream_for_loggers test_output( pattern_file_name,
116                                                 !runtime_config::save_pattern(),
117                                                 true,
118                                                 __FILE__ );
119 
120     auto dataset = boost::unit_test::data::make(filenames);
121 
122     test_unit_generator const& generator = boost::unit_test::data::ds_detail::test_case_gen<test_updatecase, decltype(dataset)>(
123         "fake_name",
124         __FILE__,
125         200,
126         std::forward<decltype(dataset)>(dataset) );
127     test_suite* ts = BOOST_TEST_SUITE( "fake_datatest_case" );
128     while(test_unit *tu = generator.next()) {
129         ts->add(tu);
130     }
131 
132     check_pattern_loggers(test_output, ts);
133 }
134