/* 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 .
*/
#include "testutilities.h"
#include
#include
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;
}