blob: 960e7ccad510288d016b71e1106787fceacdba8c [file] [log] [blame]
Matthew Bentham7c1603a2019-06-21 17:22:23 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include <reference/RefMemoryManager.hpp>
7
Sadik Armagan1625efc2021-06-10 18:24:34 +01008#include <doctest/doctest.h>
Matthew Bentham7c1603a2019-06-21 17:22:23 +01009
Sadik Armagan1625efc2021-06-10 18:24:34 +010010TEST_SUITE("RefMemoryManagerTests")
11{
Matthew Bentham7c1603a2019-06-21 17:22:23 +010012using namespace armnn;
13using Pool = RefMemoryManager::Pool;
14
Sadik Armagan1625efc2021-06-10 18:24:34 +010015TEST_CASE("ManageOneThing")
Matthew Bentham7c1603a2019-06-21 17:22:23 +010016{
17 RefMemoryManager memoryManager;
18
19 Pool* pool = memoryManager.Manage(10);
20
Sadik Armagan1625efc2021-06-10 18:24:34 +010021 CHECK(pool);
Matthew Bentham7c1603a2019-06-21 17:22:23 +010022
23 memoryManager.Acquire();
24
Sadik Armagan1625efc2021-06-10 18:24:34 +010025 CHECK(memoryManager.GetPointer(pool) != nullptr); // Yields a valid pointer
Matthew Bentham7c1603a2019-06-21 17:22:23 +010026
27 memoryManager.Release();
28}
29
Sadik Armagan1625efc2021-06-10 18:24:34 +010030TEST_CASE("ManageTwoThings")
Matthew Bentham7c1603a2019-06-21 17:22:23 +010031{
32 RefMemoryManager memoryManager;
33
34 Pool* pool1 = memoryManager.Manage(10);
35 Pool* pool2 = memoryManager.Manage(5);
36
Sadik Armagan1625efc2021-06-10 18:24:34 +010037 CHECK(pool1);
38 CHECK(pool2);
Matthew Bentham7c1603a2019-06-21 17:22:23 +010039
40 memoryManager.Acquire();
41
42 void *p1 = memoryManager.GetPointer(pool1);
43 void *p2 = memoryManager.GetPointer(pool2);
44
Sadik Armagan1625efc2021-06-10 18:24:34 +010045 CHECK(p1);
46 CHECK(p2);
47 CHECK(p1 != p2);
Matthew Bentham7c1603a2019-06-21 17:22:23 +010048
49 memoryManager.Release();
50}
51
Sadik Armagan1625efc2021-06-10 18:24:34 +010052}