test_spiffs.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include <unity.h>
  2. #include <iostream>
  3. #include <fstream>
  4. #include "kbf/spiffs.h"
  5. using std::ifstream;
  6. using std::ofstream;
  7. using std::cout;
  8. using std::endl;
  9. // TODO maybe use Kconfig? or set from CMake for DRY?
  10. #define MOUNT_POINT "/spiffs_test"
  11. #define READ_TEST_FILE MOUNT_POINT "/read_test.txt"
  12. #define READ_TEST_STR "read_test_success"
  13. #define WRITE_TEST_FILE MOUNT_POINT "/write_test.txt"
  14. #define WRITE_TEST_STR "write_test_success"
  15. TEST_CASE("SPIFFS read / write", "[kbf_spiffs]") {
  16. auto spiffs = kbf::SPIFFS(MOUNT_POINT);
  17. TEST_ASSERT_TRUE_MESSAGE(spiffs.mount(), "test configuration error: SPIFFS mount failed")
  18. auto readTest = ifstream(READ_TEST_FILE);
  19. TEST_ASSERT_MESSAGE(readTest, "read_test.txt not readable")
  20. string buffer;
  21. readTest >> buffer;
  22. readTest.close();
  23. TEST_ASSERT_EQUAL_STRING_MESSAGE(READ_TEST_STR, buffer.c_str(), "read test failed");
  24. auto writeTestOut = ofstream(WRITE_TEST_FILE);
  25. TEST_ASSERT_MESSAGE(writeTestOut, "write_test.txt not writable")
  26. writeTestOut << WRITE_TEST_STR;
  27. writeTestOut.close();
  28. auto writeTestIn = ifstream(WRITE_TEST_FILE);
  29. TEST_ASSERT_MESSAGE(writeTestIn, "write_test.txt not readable")
  30. writeTestIn >> buffer;
  31. writeTestIn.close();
  32. TEST_ASSERT_EQUAL_STRING_MESSAGE(WRITE_TEST_STR, buffer.c_str(), "write test failed");
  33. }
  34. TEST_CASE("SPIFFS get filesystem info", "[kbf_spiffs]") {
  35. auto spiffs = kbf::SPIFFS(MOUNT_POINT);
  36. TEST_ASSERT_TRUE_MESSAGE(spiffs.mount(), "test configuration error: SPIFFS mount failed")
  37. auto info = spiffs.info();
  38. TEST_ASSERT_GREATER_THAN(0, info.used);
  39. TEST_ASSERT_GREATER_THAN(0, info.free);
  40. TEST_ASSERT_EQUAL(info.used + info.free, info.total);
  41. cout << "SPIFFS info: " << endl
  42. << "\ttotal: " << info.total << endl
  43. << "\tused: " << info.used << endl
  44. << "\tfree: " << info.free << endl;
  45. }
  46. TEST_CASE("SPIFFS partition not found", "[kbf_spiffs]") {
  47. auto spiffs = kbf::SPIFFS(MOUNT_POINT, "non_existent_partition");
  48. TEST_ASSERT_FALSE(spiffs.mount())
  49. TEST_ASSERT_EQUAL(ESP_ERR_NOT_FOUND, spiffs.error);
  50. }