12 using namespace armnn;
14 TEST_CASE(
"AcquireAndRelease")
16 std::shared_ptr<RefMemoryManager> memoryManager = std::make_shared<RefMemoryManager>();
24 memoryManager->Acquire();
26 float* buffer =
reinterpret_cast<float*
>(handle.Map());
28 CHECK(buffer !=
nullptr);
32 CHECK(buffer[0] == 2.5f);
35 memoryManager->Release();
37 memoryManager->Acquire();
39 float* buffer =
reinterpret_cast<float*
>(handle.Map());
41 CHECK(buffer !=
nullptr);
45 CHECK(buffer[0] == 3.5f);
47 memoryManager->Release();
50 TEST_CASE(
"RefTensorHandleFactoryMemoryManaged")
52 std::shared_ptr<RefMemoryManager> memoryManager = std::make_shared<RefMemoryManager>();
57 auto handle = handleFactory.CreateTensorHandle(info,
true);
61 memoryManager->Acquire();
63 float* buffer =
reinterpret_cast<float*
>(handle->Map());
64 CHECK(buffer !=
nullptr);
67 CHECK(buffer[0] == 1.5f);
68 CHECK(buffer[1] == 2.5f);
70 memoryManager->Release();
72 memoryManager->Acquire();
74 float* buffer =
reinterpret_cast<float*
>(handle->Map());
75 CHECK(buffer !=
nullptr);
78 CHECK(buffer[0] == 3.5f);
79 CHECK(buffer[1] == 4.5f);
81 memoryManager->Release();
83 float testPtr[2] = { 2.5f, 5.5f };
88 TEST_CASE(
"RefTensorHandleFactoryImport")
90 std::shared_ptr<RefMemoryManager> memoryManager = std::make_shared<RefMemoryManager>();
95 auto handle = handleFactory.CreateTensorHandle(info,
false);
98 memoryManager->Acquire();
103 float testPtr[2] = { 2.5f, 5.5f };
106 float* buffer =
reinterpret_cast<float*
>(handle->Map());
107 CHECK(buffer !=
nullptr);
108 CHECK(buffer == testPtr);
110 CHECK(buffer[0] == 2.5f);
111 CHECK(buffer[1] == 5.5f);
114 CHECK(buffer[0] == 3.5f);
115 CHECK(buffer[1] == 10.0f);
116 memoryManager->Release();
119 TEST_CASE(
"RefTensorHandleImport")
130 float testPtr[2] = { 2.5f, 5.5f };
133 float* buffer =
reinterpret_cast<float*
>(handle.Map());
134 CHECK(buffer !=
nullptr);
135 CHECK(buffer == testPtr);
137 CHECK(buffer[0] == 2.5f);
138 CHECK(buffer[1] == 5.5f);
141 CHECK(buffer[0] == 3.5f);
142 CHECK(buffer[1] == 10.0f);
145 TEST_CASE(
"RefTensorHandleGetCapabilities")
147 std::shared_ptr<RefMemoryManager> memoryManager = std::make_shared<RefMemoryManager>();
156 std::vector<Capability> capabilities = handleFactory.GetCapabilities(input,
159 CHECK(capabilities.empty());
162 TEST_CASE(
"RefTensorHandleSupportsInPlaceComputation")
164 std::shared_ptr<RefMemoryManager> memoryManager = std::make_shared<RefMemoryManager>();
168 ARMNN_ASSERT(!(handleFactory.SupportsInPlaceComputation()));
171 TEST_CASE(
"TestManagedConstTensorHandle")
178 auto passThroughHandle = std::make_shared<PassthroughTensorHandle>(info, mem);
182 CHECK(!managedHandle.IsMapped());
184 CHECK(managedHandle.IsMapped());
187 managedHandle.Unmap();
188 CHECK(!managedHandle.IsMapped());
191 CHECK(managedHandle.GetTensorInfo() == info);
195 CHECK(!managedHandleNull.IsMapped());
197 CHECK(!managedHandleNull.IsMapped());
200 managedHandleNull.Unmap();
201 CHECK(!managedHandleNull.IsMapped());
204 #if !defined(__ANDROID__) 206 TEST_CASE(
"CheckSourceType")
211 int* testPtr =
new int(4);
225 TEST_CASE(
"ReusePointer")
230 int* testPtr =
new int(4);
240 TEST_CASE(
"MisalignedPointer")
246 int* testPtr =
new int[2];
249 void* misalignedPtr =
static_cast<void*
>(
reinterpret_cast<char*
>(testPtr) + 1);
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
Copyright (c) 2021 ARM Limited and Contributors.
#define ARMNN_ASSERT(COND)
Base class for all ArmNN exceptions so that users can filter to just those.
virtual const IInputSlot & GetInputSlot(unsigned int index) const =0
Get a const input slot handle by slot index.
virtual const IOutputSlot & GetOutputSlot(unsigned int index) const =0
Get the const output slot handle by slot index.
std::unique_ptr< INetwork, void(*)(INetwork *network)> INetworkPtr
virtual int Connect(IInputSlot &destination)=0
static INetworkPtr Create(NetworkOptions networkOptions={})