reflex2q3/ReflexToQ3/test/catch-parser.cpp
2017-07-15 01:26:03 -07:00

52 lines
1.5 KiB
C++

#include "oopless-parser.hpp"
#include "catch.hpp"
#include <iostream>
#include <algorithm>
#include <iterator>
#include <sstream>
std::vector<std::string> readin(const std::string &filename, const int ln = 0) {
std::ifstream fin;
fin.open(filename);
if (!fin.good()) {
std::cerr << "error: can not open file with test cases." << std::endl;
}
std::vector<std::string> output;
std::string data;
while (getline(fin, data)) {
output.push_back(data);
}
return output;
}
bool test_parseface(const std::string &filename, const int &cnt_indices) {
std::vector<std::string> test = readin(filename);
std::stringstream ss;
copy(test.begin(), test.end(), std::ostream_iterator<std::string>(ss, "\n"));
std::vector<TFace> x = parse_face<std::stringstream>(ss);
bool is_ok = true;
for (struct TFace face : x) {
if (face.m_Indices.size() != cnt_indices) {
is_ok = false;
break;
}
}
return is_ok;
}
TEST_CASE ("face parsing case: faces with 3 indices", "[Parser]" ) {
bool k = test_parseface("ReflexToQ3/test/cases-face/parser-face-3indices.txt", 3);
REQUIRE (k == true);
}
TEST_CASE ("face parsing case: faces with 4 indices", "[Parser]") {
bool k = test_parseface("ReflexToQ3/test/cases-face/parser-face-4indices.txt", 4);
REQUIRE (k == true);
}
TEST_CASE ("face parsing case: faces with 5 indices", "[Parser]") {
bool k = test_parseface("ReflexToQ3/test/cases-face/parser-face-5indices.txt", 5);
REQUIRE (k == true);
}