FileReaderTests.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #include "../Tests.hpp"
  2. #include "core/io/FileReader.hpp"
  3. static constexpr const char* TEST_FILE = "../test/modules/resources/test";
  4. static void testReadChar() {
  5. Core::FileReader r;
  6. CORE_TEST_ERROR(r.open(TEST_FILE));
  7. Core::String8<128> s;
  8. while(true) {
  9. int c = 0;
  10. if(r.readChar(c) != Core::Error::NONE) {
  11. break;
  12. }
  13. CORE_TEST_ERROR(s.append(static_cast<c32>(c)));
  14. }
  15. CORE_TEST_STRING("abc\nBaum\n", s);
  16. }
  17. static void testReadCharPath() {
  18. Core::FileReader r;
  19. Core::Path path;
  20. CORE_TEST_ERROR(path.append(TEST_FILE));
  21. CORE_TEST_ERROR(r.open(path));
  22. Core::String8<128> s;
  23. while(true) {
  24. int c = 0;
  25. if(r.readChar(c) != Core::Error::NONE) {
  26. break;
  27. }
  28. CORE_TEST_ERROR(s.append(static_cast<c32>(c)));
  29. }
  30. CORE_TEST_STRING("abc\nBaum\n", s);
  31. }
  32. static void testReadChars() {
  33. Core::FileReader r;
  34. CORE_TEST_ERROR(r.open(TEST_FILE));
  35. char buffer[128];
  36. CORE_TEST_EQUAL(Core::Error::END_OF_FILE,
  37. r.readChars(buffer, sizeof(buffer)));
  38. CORE_TEST_STRING("abc\nBaum\n", buffer);
  39. }
  40. static void testReadCharsOverflow() {
  41. Core::FileReader r;
  42. CORE_TEST_ERROR(r.open(TEST_FILE));
  43. char buffer[6];
  44. CORE_TEST_ERROR(r.readChars(buffer, sizeof(buffer)));
  45. CORE_TEST_STRING("abc\nB", buffer);
  46. }
  47. static void testMoveConstruct() {
  48. Core::FileReader r;
  49. CORE_TEST_ERROR(r.open(TEST_FILE));
  50. Core::FileReader r2 = Core::move(r);
  51. CORE_TEST_STRING("", r.getPath());
  52. CORE_TEST_STRING(TEST_FILE, r2.getPath());
  53. int c = 0;
  54. CORE_TEST_EQUAL(Core::Error::INVALID_STATE, r.readChar(c));
  55. CORE_TEST_ERROR(r2.readChar(c));
  56. CORE_TEST_EQUAL('a', c);
  57. }
  58. static void testMoveAssignment() {
  59. Core::FileReader r;
  60. CORE_TEST_ERROR(r.open(TEST_FILE));
  61. Core::FileReader r2;
  62. r2 = Core::move(r);
  63. CORE_TEST_STRING("", r.getPath());
  64. CORE_TEST_STRING(TEST_FILE, r2.getPath());
  65. int c = 0;
  66. CORE_TEST_EQUAL(Core::Error::INVALID_STATE, r.readChar(c));
  67. CORE_TEST_ERROR(r2.readChar(c));
  68. CORE_TEST_EQUAL('a', c);
  69. }
  70. static void testInvalidAccess() {
  71. char buffer[4];
  72. Core::FileReader r;
  73. CORE_TEST_EQUAL(Core::Error::INVALID_STATE,
  74. r.readChars(buffer, sizeof(buffer)));
  75. CORE_TEST_ERROR(r.open(TEST_FILE));
  76. CORE_TEST_EQUAL(Core::Error::INVALID_ARGUMENT, r.readChars(buffer, -1));
  77. CORE_TEST_EQUAL(Core::Error::INVALID_STATE, r.open(TEST_FILE));
  78. }
  79. static void testInvalidAccessPath() {
  80. Core::FileReader r;
  81. Core::Path path;
  82. CORE_TEST_ERROR(path.append(TEST_FILE));
  83. CORE_TEST_ERROR(r.open(path));
  84. CORE_TEST_EQUAL(Core::Error::INVALID_STATE, r.open(path));
  85. }
  86. void Core::testFileReader() {
  87. testReadChar();
  88. testReadCharPath();
  89. testReadChars();
  90. testReadCharsOverflow();
  91. testMoveConstruct();
  92. testMoveAssignment();
  93. testInvalidAccess();
  94. testInvalidAccessPath();
  95. }