# UnitTest
```
#include <cstdio>
#include <iomanip>
#include <fstream>
#include <string>
#include <vector>
#include "Guard.cpp"
#include "Guard.h"
// #define inputCD "TestingData//409r//test//"
// #define inputCD "TestingData//1000r//test//"
#define inputCD "TestingData//2000r//test//"
#define outputCD ""
using namespace std;
fstream inputFile;
const std::vector<std::string> split(const std::string& str, const std::string& pattern) {
std::vector<std::string> result;
std::string::size_type begin, end;
end = str.find(pattern);
begin = 0;
while (end != std::string::npos) {
if (end - begin != 0) {
result.push_back(str.substr(begin, end-begin));
}
begin = end + pattern.size();
end = str.find(pattern, begin);
}
if (begin != str.length()) {
result.push_back(str.substr(begin));
}
return result;
}
int main()
{
const string I_CD = inputCD;
const string O_CD = outputCD;
string filename1 = "round_";
string filename2 = "0";
string filetype = ".command";
vector<pair<string, short>> Result;
inputFile.open(I_CD + filename1 + filename2 + filetype, ios::in);
while (inputFile.is_open()) //檢查檔案是否成功開啟
{
string str;
while (getline(inputFile, str))
{
memset(command_title, 0, 20 * sizeof(char)); //sting.h only for memset
memset(command_contxt, 0, 70 * sizeof(char));
command_title[0] = ' ', command_contxt[0] = ' ';
bool is_title = true;
char inputchar;
for (short title_size = 0, contxt_size = 0, i = 0;
i < str.size(); i++)
{
inputchar = str[i];
if (!is_title)
{
command_contxt[contxt_size++] = inputchar;
continue;
}
else if (is_title && inputchar == ' ')
{
is_title = false;
continue;
}
else
command_title[title_size++] = inputchar;
}
// cout << "Recieved: [" << command_title << ' ' << command_contxt << ']' << endl;
Guard();
}
memset(command_title, 0, 20 * sizeof(char));
memset(command_contxt, 0, 70 * sizeof(char));
command_title[0] = '/';
command_title[1] = 'a';
command_contxt[0] = 't';
Guard();
Result.push_back(make_pair(filename2, tothrow));
inputFile.close();
int filenum = stoi(filename2) + 1;
filename2 = to_string(filenum);
inputFile.open(I_CD + filename1 + filename2 + filetype, ios::in);
}
vector<vector<short>> Answer;
inputFile.open(I_CD + "answer.txt", ios::in);
if (!inputFile.is_open())
{
cerr << "Can't open file " << "Answer.txt" << endl;
system("pause");
}
else
{
string str;
while (getline(inputFile, str))
{
vector<short> ans;
vector<string> subs = split(str, " ");
for (auto sub : subs)
{
ans.push_back((short)stoi(sub));
}
Answer.push_back(ans);
}
inputFile.close();
}
// system("CLS");
cout << "\ntotal tests: " << Result.size() << "\n\n";
int Xcnt = 0;
for (int v = 0; v < Result.size(); v++)
{
cout << left << setw(4) << Result[v].first << " ";
change_output(Result[v].second);
if (v < Answer.size())
{
bool flag = false;
for (auto ans : Answer[v])
{
// cout << ans << " ";
if (RemoveID(Result[v].second) == ans)
{
flag = true;
break;
}
}
if (!flag) Xcnt++, cout << " X";
}
cout << endl;
}
cout << "total Xs: " << Xcnt << endl;
cout << "\nCan't open file " << I_CD + filename1 + filename2 + filetype << endl;
// system("pause");
}