aboutsummaryrefslogtreecommitdiff
path: root/src/backends/reference/test/RefTensorHandleTests.cpp
diff options
context:
space:
mode:
authorFerran Balaguer <ferran.balaguer@arm.com>2019-08-07 15:14:56 +0100
committerFerran Balaguer Arm <ferran.balaguer@arm.com>2019-08-20 14:31:07 +0000
commitbfeb2711da172b26931c58af7b15d434ef49e24e (patch)
tree3516b24857effe4c98737f48026dabf75d1f360a /src/backends/reference/test/RefTensorHandleTests.cpp
parentaec942c3f258db46e0fb8054d39c0e7c3c411728 (diff)
downloadarmnn-bfeb2711da172b26931c58af7b15d434ef49e24e.tar.gz
IVGCVSW-3606 Support memory import for Reference backend
Signed-off-by: Ferran Balaguer <ferran.balaguer@arm.com> Change-Id: I94bd191f88e0911ad4e4727610e81cd7afa95512
Diffstat (limited to 'src/backends/reference/test/RefTensorHandleTests.cpp')
-rw-r--r--src/backends/reference/test/RefTensorHandleTests.cpp52
1 files changed, 52 insertions, 0 deletions
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<RefMemoryManager> memoryManager = std::make_shared<RefMemoryManager>();
+
+ TensorInfo info({1}, DataType::Float32);
+ RefTensorHandle handle(info, memoryManager, static_cast<unsigned int>(MemorySource::Malloc));
+
+ // This pointer will be deleted in the handle destructor
+ int* testPtr = new int(4);
+
+ // Not supported
+ BOOST_CHECK(!handle.Import(static_cast<void *>(testPtr), MemorySource::DmaBuf));
+
+ // Not supported
+ BOOST_CHECK(!handle.Import(static_cast<void *>(testPtr), MemorySource::DmaBufProtected));
+
+ // Supported
+ BOOST_CHECK(handle.Import(static_cast<void *>(testPtr), MemorySource::Malloc));
+}
+
+BOOST_AUTO_TEST_CASE(ReusePointer)
+{
+ std::shared_ptr<RefMemoryManager> memoryManager = std::make_shared<RefMemoryManager>();
+
+ TensorInfo info({1}, DataType::Float32);
+ RefTensorHandle handle(info, memoryManager, static_cast<unsigned int>(MemorySource::Malloc));
+
+ // This pointer will be deleted in the handle destructor
+ int* testPtr = new int(4);
+
+ handle.Import(static_cast<void *>(testPtr), MemorySource::Malloc);
+
+ // Reusing previously Imported pointer
+ BOOST_CHECK(handle.Import(static_cast<void *>(testPtr), MemorySource::Malloc));
+}
+
+BOOST_AUTO_TEST_CASE(MisalignedPointer)
+{
+ std::shared_ptr<RefMemoryManager> memoryManager = std::make_shared<RefMemoryManager>();
+
+ TensorInfo info({2}, DataType::Float32);
+ RefTensorHandle handle(info, memoryManager, static_cast<unsigned int>(MemorySource::Malloc));
+
+ // Allocates a 2 int array
+ int* testPtr = new int[2];
+ int* misalignedPtr = testPtr + 1;
+
+ BOOST_CHECK(!handle.Import(static_cast<void *>(misalignedPtr), MemorySource::Malloc));
+
+ delete[] testPtr;
+}
+
BOOST_AUTO_TEST_SUITE_END() \ No newline at end of file