FileTests.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. module;
  2. #include <cstring>
  3. #include <source_location>
  4. #include "../../src/ErrorSimulator.hpp"
  5. module Tests;
  6. import Core.File;
  7. import Core.Logger;
  8. import Core.Test;
  9. static int failIndex = 0;
  10. static const char* fails[] = {
  11. "cannot read file 'gdfgdfg'",
  12. "cannot seek file end of 'testData/someFile'",
  13. "cannot tell file position of 'testData/someFile'",
  14. "cannot seek file start of 'testData/someFile'",
  15. "expected to read 20 bytes from 'testData/someFile' but read 20",
  16. "cannot close file 'testData/someFile'"};
  17. static void printReport(
  18. Core::LogLevel l, const std::source_location&, void*, const char* message) {
  19. Core::test(static_cast<int>(Core::LogLevel::ERROR), static_cast<int>(l));
  20. if(!Core::testTrue(strstr(message, fails[failIndex]) != nullptr)) {
  21. Core::logError("'#' does not contain '#'", message, fails[failIndex]);
  22. }
  23. }
  24. static void testExistingFile() {
  25. Core::List<char> f;
  26. if(!Core::testFalse(readFile(f, "testData/someFile"))) {
  27. return;
  28. }
  29. Core::test(21lu, f.getLength());
  30. Core::testString("Just\nSome\nTest File\n", &f[0]);
  31. }
  32. static void testNotExistingFile() {
  33. Core::List<char> f;
  34. Core::testTrue(readFile(f, "gdfgdfg"));
  35. }
  36. static void testFails(int steps) {
  37. (void)steps;
  38. #ifdef ERROR_SIMULATOR
  39. failStep = steps;
  40. failIndex = steps;
  41. Core::List<char> f;
  42. Core::testTrue(readFile(f, "testData/someFile"));
  43. failStep = -1;
  44. #endif
  45. }
  46. void testFile() {
  47. Core::setReportHandler(printReport, nullptr);
  48. testExistingFile();
  49. testNotExistingFile();
  50. for(int i = 1; i < 6; i++) {
  51. testFails(i);
  52. }
  53. Core::setReportHandler(nullptr, nullptr);
  54. }