1 //
2 // Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include <backendsCommon/memoryOptimizerStrategyLibrary/strategies/SingleAxisPriorityList.hpp>
7 #include <backendsCommon/memoryOptimizerStrategyLibrary/strategies/StrategyValidator.hpp>
8 #include "TestMemBlocks.hpp"
9 
10 #include <doctest/doctest.h>
11 #include <vector>
12 
13 using namespace armnn;
14 
15 TEST_SUITE("SingleAxisPriorityListTestSuite")
16 {
17     TEST_CASE("SingleAxisPriorityListTest")
18     {
19         std::vector<MemBlock> memBlocks = fsrcnn;
20 
21         auto singleAxisPriorityList = std::make_shared<SingleAxisPriorityList>();
22 
23         CHECK_EQ(singleAxisPriorityList->GetName(), std::string("SingleAxisPriorityList"));
24         CHECK_EQ(singleAxisPriorityList->GetMemBlockStrategyType(), MemBlockStrategyType::SingleAxisPacking);
25 
26         StrategyValidator validator;
27         validator.SetStrategy(singleAxisPriorityList);
28 
29         std::vector<MemBin> memBins;
30 
31         CHECK_NOTHROW(memBins = validator.Optimize(memBlocks));
32 
33         size_t minMemSize = GetMinPossibleMemorySize(memBlocks);
34         size_t actualSize = 0;
35         for (auto memBin : memBins)
36         {
37             actualSize += memBin.m_MemSize;
38         }
39 
40         CHECK(minMemSize == actualSize);
41     }
42 }
43