FileTests.cpp 1.7 KB

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