From bfeb2711da172b26931c58af7b15d434ef49e24e Mon Sep 17 00:00:00 2001 From: Ferran Balaguer Date: Wed, 7 Aug 2019 15:14:56 +0100 Subject: IVGCVSW-3606 Support memory import for Reference backend Signed-off-by: Ferran Balaguer Change-Id: I94bd191f88e0911ad4e4727610e81cd7afa95512 --- .../reference/test/RefTensorHandleTests.cpp | 52 ++++++++++++++++++++++ 1 file changed, 52 insertions(+) (limited to 'src/backends/reference/test/RefTensorHandleTests.cpp') diff --git a/src/backends/reference/test/RefTensorHandleTests.cpp b/src/backends/reference/test/RefTensorHandleTests.cpp index accf900975..19b669b42f 100644 --- a/src/backends/reference/test/RefTensorHandleTests.cpp +++ b/src/backends/reference/test/RefTensorHandleTests.cpp @@ -45,4 +45,56 @@ BOOST_AUTO_TEST_CASE(AcquireAndRelease) memoryManager->Release(); } +BOOST_AUTO_TEST_CASE(CheckSourceType) +{ + std::shared_ptr memoryManager = std::make_shared(); + + TensorInfo info({1}, DataType::Float32); + RefTensorHandle handle(info, memoryManager, static_cast(MemorySource::Malloc)); + + // This pointer will be deleted in the handle destructor + int* testPtr = new int(4); + + // Not supported + BOOST_CHECK(!handle.Import(static_cast(testPtr), MemorySource::DmaBuf)); + + // Not supported + BOOST_CHECK(!handle.Import(static_cast(testPtr), MemorySource::DmaBufProtected)); + + // Supported + BOOST_CHECK(handle.Import(static_cast(testPtr), MemorySource::Malloc)); +} + +BOOST_AUTO_TEST_CASE(ReusePointer) +{ + std::shared_ptr memoryManager = std::make_shared(); + + TensorInfo info({1}, DataType::Float32); + RefTensorHandle handle(info, memoryManager, static_cast(MemorySource::Malloc)); + + // This pointer will be deleted in the handle destructor + int* testPtr = new int(4); + + handle.Import(static_cast(testPtr), MemorySource::Malloc); + + // Reusing previously Imported pointer + BOOST_CHECK(handle.Import(static_cast(testPtr), MemorySource::Malloc)); +} + +BOOST_AUTO_TEST_CASE(MisalignedPointer) +{ + std::shared_ptr memoryManager = std::make_shared(); + + TensorInfo info({2}, DataType::Float32); + RefTensorHandle handle(info, memoryManager, static_cast(MemorySource::Malloc)); + + // Allocates a 2 int array + int* testPtr = new int[2]; + int* misalignedPtr = testPtr + 1; + + BOOST_CHECK(!handle.Import(static_cast(misalignedPtr), MemorySource::Malloc)); + + delete[] testPtr; +} + BOOST_AUTO_TEST_SUITE_END() \ No newline at end of file -- cgit v1.2.1