FileTests.cpp 1.6 KB

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