blob: 5b1f1034dba785f027c20377fcb442334f027136 [file] [log] [blame]
Colm Donelanc42a9872022-02-02 16:35:09 +00001//
2// Copyright © 2022 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include <reference/RefWorkloadFactory.hpp>
7#include <reference/RefBackend.hpp>
8#include <armnnTestUtils/LayerTestResult.hpp>
9#include <armnnTestUtils/MemCopyTestImpl.hpp>
10#include <armnnTestUtils/MockBackend.hpp>
11#include <doctest/doctest.h>
12
13namespace
14{
15
16template <>
17struct MemCopyTestHelper<armnn::RefWorkloadFactory>
18{
19 static armnn::IBackendInternal::IMemoryManagerSharedPtr GetMemoryManager()
20 {
21 armnn::RefBackend backend;
22 return backend.CreateMemoryManager();
23 }
24
25 static armnn::RefWorkloadFactory GetFactory(const armnn::IBackendInternal::IMemoryManagerSharedPtr&)
26 {
27 return armnn::RefWorkloadFactory();
28 }
29};
30} // namespace
31
32TEST_SUITE("RefMemCopy")
33{
34
Cathal Corbett3464ba12022-03-04 11:36:39 +000035 TEST_CASE("CopyBetweenMockAccAndRef")
Colm Donelanc42a9872022-02-02 16:35:09 +000036 {
37 LayerTestResult<float, 4> result =
38 MemCopyTest<armnn::MockWorkloadFactory, armnn::RefWorkloadFactory, armnn::DataType::Float32>(false);
39 auto predResult =
40 CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape);
41 CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
42 }
43
Cathal Corbett3464ba12022-03-04 11:36:39 +000044 TEST_CASE("CopyBetweenRefAndMockAcc")
Colm Donelanc42a9872022-02-02 16:35:09 +000045 {
46 LayerTestResult<float, 4> result =
47 MemCopyTest<armnn::RefWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(false);
48 auto predResult =
49 CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape);
50 CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
51 }
52
Cathal Corbett3464ba12022-03-04 11:36:39 +000053 TEST_CASE("CopyBetweenMockAccAndRefWithSubtensors")
Colm Donelanc42a9872022-02-02 16:35:09 +000054 {
55 LayerTestResult<float, 4> result =
56 MemCopyTest<armnn::MockWorkloadFactory, armnn::RefWorkloadFactory, armnn::DataType::Float32>(true);
57 auto predResult =
58 CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape);
59 CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
60 }
61
Cathal Corbett3464ba12022-03-04 11:36:39 +000062 TEST_CASE("CopyBetweenRefAndMockAccWithSubtensors")
Colm Donelanc42a9872022-02-02 16:35:09 +000063 {
64 LayerTestResult<float, 4> result =
65 MemCopyTest<armnn::RefWorkloadFactory, armnn::MockWorkloadFactory, armnn::DataType::Float32>(true);
66 auto predResult =
67 CompareTensors(result.m_ActualData, result.m_ExpectedData, result.m_ActualShape, result.m_ExpectedShape);
68 CHECK_MESSAGE(predResult.m_Result, predResult.m_Message.str());
69 }
70}