#include #include #include #include #include #include TEST_CASE( "PlacementFactory Tests", "[TestPlacementFactory]") { INFO("PlacementFactory Tests"); const uint16_t element_sizes[3] = {sizeof(uint16_t), sizeof(uint32_t), sizeof(uint64_t)}; const uint16_t n_elements[3] = {1, 1, 1}; LocalPool<3> storagePool(0x1, element_sizes, n_elements, false, true); PlacementFactory factory(&storagePool); SECTION("Pool overload"){ store_address_t address; uint8_t* ptr = nullptr; REQUIRE(storagePool.getFreeElement(&address, sizeof(ArrayList), &ptr) == static_cast(StorageManagerIF::DATA_TOO_LARGE)); ArrayList* list2 = factory.generate >(80); REQUIRE(list2 == nullptr); } SECTION("Test generate and destroy"){ uint64_t* number = factory.generate(32000); REQUIRE(number != nullptr); REQUIRE(*number == 32000); store_address_t address; uint8_t* ptr = nullptr; REQUIRE(storagePool.getFreeElement(&address, sizeof(uint64_t), &ptr) == static_cast(StorageManagerIF::DATA_TOO_LARGE)); uint64_t* number2 = factory.generate(12345); REQUIRE(number2 == nullptr); REQUIRE(factory.destroy(number) == static_cast(HasReturnvaluesIF::RETURN_OK)); REQUIRE(storagePool.getFreeElement(&address, sizeof(uint64_t), &ptr) == static_cast(HasReturnvaluesIF::RETURN_OK)); REQUIRE(storagePool.deleteData(address) == static_cast(HasReturnvaluesIF::RETURN_OK)); //Check that PlacementFactory checks for nullptr ptr = nullptr; REQUIRE(factory.destroy(ptr) == static_cast(HasReturnvaluesIF::RETURN_FAILED)); } }