git repos / PlatformFolders

blame: test/tester.cpp

normal view · raw

452e64cc sum01 2018-04-26 21:25 1
#include "tester.hpp"
452e64cc sum01 2018-04-26 21:25 2
452e64cc sum01 2018-04-26 21:25 3
#include <cstdlib>
452e64cc sum01 2018-04-26 21:25 4
#include <iostream>
452e64cc sum01 2018-04-26 21:25 5
#include <stdexcept>
452e64cc sum01 2018-04-26 21:25 6
#include <string>
452e64cc sum01 2018-04-26 21:25 7
#include <vector>
452e64cc sum01 2018-04-26 21:25 8
452e64cc sum01 2018-04-26 21:25 9
// This should be passed either be char* or std::string for this to work
452e64cc sum01 2018-04-26 21:25 10
static void test_internal(const std::string& data) {
452e64cc sum01 2018-04-26 21:25 11
	try {
452e64cc sum01 2018-04-26 21:25 12
		// Check that it actually got anything
452e64cc sum01 2018-04-26 21:25 13
		if (data.empty()) {
452e64cc sum01 2018-04-26 21:25 14
			throw std::logic_error("Got empty data");
452e64cc sum01 2018-04-26 21:25 15
		}
452e64cc sum01 2018-04-26 21:25 16
	}
452e64cc sum01 2018-04-26 21:25 17
	catch (const std::exception& e)   {
452e64cc sum01 2018-04-26 21:25 18
		// Take any standard exception & output its message
452e64cc sum01 2018-04-26 21:25 19
		std::cerr << e.what() << std::endl;
452e64cc sum01 2018-04-26 21:25 20
		std::exit(EXIT_FAILURE);
452e64cc sum01 2018-04-26 21:25 21
	}
452e64cc sum01 2018-04-26 21:25 22
	catch (...)   {
452e64cc sum01 2018-04-26 21:25 23
		// If any non-std exception is thrown, also fail
452e64cc sum01 2018-04-26 21:25 24
		std::cerr << "Unknown exception!" << std::endl;
452e64cc sum01 2018-04-26 21:25 25
		std::exit(EXIT_FAILURE);
452e64cc sum01 2018-04-26 21:25 26
	}
452e64cc sum01 2018-04-26 21:25 27
}
452e64cc sum01 2018-04-26 21:25 28
452e64cc sum01 2018-04-26 21:25 29
// std::string is expected input
452e64cc sum01 2018-04-26 21:25 30
void run_test(const std::string& input) {
452e64cc sum01 2018-04-26 21:25 31
	test_internal(input);
452e64cc sum01 2018-04-26 21:25 32
}
452e64cc sum01 2018-04-26 21:25 33
452e64cc sum01 2018-04-26 21:25 34
// A special overload for the two funcs that take a vector
452e64cc sum01 2018-04-26 21:25 35
void run_test(const std::vector<std::string>& vec) {
452e64cc sum01 2018-04-26 21:25 36
	// Check each value for validity
452e64cc sum01 2018-04-26 21:25 37
	for (const std::string& elem : vec) {
452e64cc sum01 2018-04-26 21:25 38
		test_internal(elem);
452e64cc sum01 2018-04-26 21:25 39
	}
452e64cc sum01 2018-04-26 21:25 40
}
1970-01-01 00:00 41