Files
Diagon/src/input_output_test.cpp
T

46 lines
1.5 KiB
C++
Raw Normal View History

2018-02-03 19:59:56 +01:00
#include <experimental/filesystem>
#include <fstream>
#include <iostream>
#include <string>
#include "environment.h"
#include "translator/Translator.h"
int main(int, const char**) {
int result = 0;
2018-02-05 21:54:42 +01:00
std::string path = test_directory;
2018-03-25 14:48:28 +02:00
std::cout << "test_directory = " << test_directory;
2018-02-03 19:59:56 +01:00
for (auto& dir : std::experimental::filesystem::directory_iterator(path)) {
std::string type = dir.path().filename();
std::cout << "Testing " << type << std::endl;
for (auto& test :
std::experimental::filesystem::directory_iterator(dir.path())) {
2018-02-08 23:16:24 +01:00
auto translator = TranslatorFromName(type);
2018-02-03 19:59:56 +01:00
std::ifstream input(test.path() / "input");
std::ifstream output(test.path() / "output");
std::string input_string((std::istreambuf_iterator<char>(input)),
std::istreambuf_iterator<char>());
std::string output_string((std::istreambuf_iterator<char>(output)),
std::istreambuf_iterator<char>());
2018-02-08 23:16:24 +01:00
translator->Process(input_string);
2018-02-03 19:59:56 +01:00
2018-02-08 23:16:24 +01:00
if (translator->Output() == output_string) {
2018-02-03 22:27:21 +01:00
std::cout << " [PASS] " << test << std::endl;
2018-02-03 19:59:56 +01:00
} else {
2018-02-03 22:27:21 +01:00
std::cout << " [FAIL] " << test << std::endl;
2018-02-03 19:59:56 +01:00
std::cout << "---[Output]------------------" << std::endl;
2018-02-08 23:16:24 +01:00
std::cout << translator->Output() << std::endl;
2018-02-03 19:59:56 +01:00
std::cout << "---[Expected]----------------" << std::endl;
std::cout << output_string << std::endl;
2018-03-25 14:48:28 +02:00
std::cout << "---------------------" << std::endl;
2018-02-03 19:59:56 +01:00
}
}
}
return result;
}