| 23 | #include "fl/stl/vector.h" |
| 24 | |
| 25 | FL_TEST_FILE(FL_FILEPATH) { |
| 26 | |
| 27 | using namespace fl::spi; |
| 28 | using fl::SPIError; |
| 29 | using fl::DMABuffer; |
| 30 | |
| 31 | // ============================================================================ |
| 32 | // Test Fixture - Reset SPIBusManager before each test |
| 33 | // ============================================================================ |
| 34 | // NOTE: Fixture temporarily disabled to investigate crash issues |
| 35 | // The Device destructors should handle all cleanup automatically via unregisterDevice() |
| 36 | // struct SPITestFixture { |
| 37 | // SPITestFixture() { |
| 38 | // fl::getSPIBusManager().reset(); |
| 39 | // } |
| 40 | // }; |
| 41 | |
| 42 | // ============================================================================ |
| 43 | // Lazy Initialization Verification Tests |
| 44 | // ============================================================================ |
| 45 | |
| 46 | FL_TEST_CASE("Lazy Init - SPI stub instances are registered") { |
| 47 | // Verify that lazy initialization successfully registers all SPI stub instances |
| 48 | // This confirms the platform::initSpiHwNInstances() mechanism works correctly |
| 49 | |
| 50 | auto spi1_instances = fl::SpiHw1::getAll(); |
| 51 | auto spi2_instances = fl::SpiHw2::getAll(); |
| 52 | auto spi4_instances = fl::SpiHw4::getAll(); |
| 53 | auto spi8_instances = fl::SpiHw8::getAll(); |
| 54 | auto spi16_instances = fl::SpiHw16::getAll(); |
| 55 | |
| 56 | FL_CHECK(spi1_instances.size() == 2); |
| 57 | FL_CHECK(spi2_instances.size() == 2); |
| 58 | FL_CHECK(spi4_instances.size() == 2); |
| 59 | FL_CHECK(spi8_instances.size() == 2); |
| 60 | FL_CHECK(spi16_instances.size() == 2); |
| 61 | } |
| 62 | |
| 63 | // ============================================================================ |
| 64 | // fl::result<T> Tests |
| 65 | // ============================================================================ |
| 66 | |
| 67 | FL_TEST_CASE("fl::result<void, SPIError> basic operations") { |
| 68 | FL_SUBCASE("Default construction creates failure state") { |
| 69 | fl::result<void, SPIError> r; |
| 70 | FL_CHECK(!r.ok()); |
| 71 | FL_CHECK(r.error() == SPIError::NOT_INITIALIZED); |
| 72 | } |
| 73 | |
| 74 | FL_SUBCASE("Success creation") { |
| 75 | fl::result<void, SPIError> r = fl::result<void, SPIError>::success(); |
| 76 | FL_CHECK(r.ok()); |
| 77 | FL_CHECK(static_cast<bool>(r)); // Explicit bool conversion |
| 78 | } |
| 79 | |
| 80 | FL_SUBCASE("Failure creation with error code") { |
| 81 | fl::result<void, SPIError> r = fl::result<void, SPIError>::failure(SPIError::BUFFER_TOO_LARGE); |
| 82 | FL_CHECK(!r.ok()); |
nothing calls this directly
no test coverage detected