1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
/* Copyright (C) 2012 - 2016, The libsigc++ Development Team
*
* This file is part of libsigc++.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
#include "testutilities.h"
#include <iostream>
#include <cstring>
TestUtilities* TestUtilities::instance_ = nullptr;
TestUtilities::TestUtilities() : verbose_(false), result_ok_(true), test_number_(0) {}
// static
TestUtilities*
TestUtilities::get_instance()
{
if (!instance_)
instance_ = new TestUtilities;
return instance_;
}
bool
TestUtilities::check_command_args(int argc, char* argv[])
{
bool go_on = true; // Whether the caller shall continue program execution.
bool print_help = false;
for (int argi = 1; argi < argc; ++argi)
{
if (std::strcmp(argv[argi], "-v") == 0 || std::strcmp(argv[argi], "--verbose") == 0)
{
verbose_ = true;
}
else
{
print_help = true;
go_on = false;
if (!(std::strcmp(argv[argi], "-h") == 0 || std::strcmp(argv[argi], "--help") == 0))
{
result_ok_ = false;
std::cout << "Unknown command argument: " << argv[argi] << std::endl;
}
}
}
if (print_help)
std::cout << "Usage: " << argv[0] << " [-h|--help] [-v|--verbose]" << std::endl;
return go_on;
}
void
TestUtilities::check_result(std::ostringstream& result_stream, const std::string& expected_result)
{
if (verbose_)
std::cout << result_stream.str() << std::endl;
++test_number_;
if (expected_result != result_stream.str())
{
std::cerr << " Test " << test_number_ << std::endl;
std::cerr << "Expected \"" << expected_result << "\"" << std::endl;
std::cerr << "Got \"" << result_stream.str() << "\"" << std::endl;
result_ok_ = false;
}
result_stream.str("");
}
// static
bool
TestUtilities::get_result_and_delete_instance()
{
const bool result = instance_ ? instance_->result_ok_ : true;
delete instance_;
instance_ = nullptr;
return result;
}
|