FileReaderTests.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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 testReadChars() {
  18. Core::FileReader r;
  19. CORE_TEST_ERROR(r.open(TEST_FILE));
  20. char buffer[128];
  21. CORE_TEST_EQUAL(Core::Error::END_OF_FILE,
  22. r.readChars(buffer, sizeof(buffer)));
  23. CORE_TEST_STRING("abc\nBaum\n", buffer);
  24. }
  25. static void testReadCharsOverflow() {
  26. Core::FileReader r;
  27. CORE_TEST_ERROR(r.open(TEST_FILE));
  28. char buffer[6];
  29. CORE_TEST_ERROR(r.readChars(buffer, sizeof(buffer)));
  30. CORE_TEST_STRING("abc\nB", buffer);
  31. }
  32. static void testMoveConstruct() {
  33. Core::FileReader r;
  34. CORE_TEST_ERROR(r.open(TEST_FILE));
  35. Core::FileReader r2 = Core::move(r);
  36. CORE_TEST_STRING("", r.getPath());
  37. CORE_TEST_STRING(TEST_FILE, r2.getPath());
  38. int c = 0;
  39. CORE_TEST_EQUAL(Core::Error::INVALID_STATE, r.readChar(c));
  40. CORE_TEST_ERROR(r2.readChar(c));
  41. CORE_TEST_EQUAL('a', c);
  42. }
  43. static void testMoveAssignment() {
  44. Core::FileReader r;
  45. CORE_TEST_ERROR(r.open(TEST_FILE));
  46. Core::FileReader r2;
  47. r2 = Core::move(r);
  48. CORE_TEST_STRING("", r.getPath());
  49. CORE_TEST_STRING(TEST_FILE, r2.getPath());
  50. int c = 0;
  51. CORE_TEST_EQUAL(Core::Error::INVALID_STATE, r.readChar(c));
  52. CORE_TEST_ERROR(r2.readChar(c));
  53. CORE_TEST_EQUAL('a', c);
  54. }
  55. void Core::testFileReader() {
  56. testReadChar();
  57. testReadChars();
  58. testReadCharsOverflow();
  59. testMoveConstruct();
  60. testMoveAssignment();
  61. }