TestLogger.cpp 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #include "TestLogger.h"
  2. TestLogger::TestLogger() {
  3. }
  4. TestLogger::~TestLogger() {
  5. }
  6. void TestLogger::print(const std::string* message, const std::exception* ex,
  7. const std::string* function, const std::string* scriptname, const Script* sc, int line) {
  8. (void) function;
  9. (void) scriptname;
  10. (void) sc;
  11. (void) line;
  12. if(ex == nullptr) {
  13. if(message != nullptr) {
  14. int start = 0;
  15. while(true) {
  16. int newLine = message->find('\n', start);
  17. if(newLine == -1) {
  18. output.push_back(message->substr(start, message->size() - start));
  19. break;
  20. }
  21. output.push_back(message->substr(start, newLine - start));
  22. start = newLine + 1;
  23. }
  24. }
  25. } else {
  26. output.push_back(ex->what());
  27. }
  28. }
  29. void TestLogger::reset() {
  30. output.clear();
  31. }
  32. bool TestLogger::check(const std::string& name, std::ifstream& check) {
  33. std::vector<std::string> file;
  34. while(!check.eof()) {
  35. std::string line;
  36. std::getline(check, line);
  37. if(!check.eof()) {
  38. file.push_back(line);
  39. }
  40. }
  41. if(file.size() != output.size()) {
  42. std::cout << file.size() << " " << output.size() << std::endl;
  43. printNoMatch(name, file, 0);
  44. return false;
  45. }
  46. for(size_t i = 0; i < file.size(); i++) {
  47. if(file[i] != output[i]) {
  48. printNoMatch(name, file, i + 1);
  49. return false;
  50. }
  51. }
  52. return true;
  53. }
  54. void TestLogger::printNoMatch(const std::string& name, std::vector<std::string>& file, unsigned int line) {
  55. std::cout << "error checking " << name << ", error starting at " << line << "\n";
  56. std::cout << "Expected ---------------------------------------------\n";
  57. for(unsigned int i = 0; i < file.size(); i++) {
  58. std::cout << file[i] << "\n";
  59. }
  60. std::cout << "Actual -----------------------------------------------\n";
  61. for(unsigned int i = 0; i < output.size(); i++) {
  62. std::cout << output[i] << "\n";
  63. }
  64. std::cout << "------------------------------------------------------\n";
  65. }