1 //
2 // Copyright © 2020 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5
6 #include <boost/test/unit_test.hpp>
7 #include "armnnOnnxParser/IOnnxParser.hpp"
8 #include "ParserPrototxtFixture.hpp"
9
10 BOOST_AUTO_TEST_SUITE(OnnxParser)
11
12 struct ClipMainFixture : public armnnUtils::ParserPrototxtFixture<armnnOnnxParser::IOnnxParser>
13 {
ClipMainFixtureClipMainFixture14 ClipMainFixture(std::string min, std::string max)
15 {
16 m_Prototext = R"(
17 ir_version: 3
18 producer_name: "CNTK"
19 producer_version: "2.5.1"
20 domain: "ai.cntk"
21 model_version: 1
22 graph {
23 name: "CNTKGraph"
24 input {
25 name: "Input"
26 type {
27 tensor_type {
28 elem_type: 1
29 shape {
30 dim {
31 dim_value: 5
32 }
33 }
34 }
35 }
36 }
37 node {
38 input: "Input"
39 input:")" + min + R"("
40 input:")" + max + R"("
41 output: "Output"
42 name: "ActivationLayer"
43 op_type: "Clip"
44 }
45 output {
46 name: "Output"
47 type {
48 tensor_type {
49 elem_type: 1
50 shape {
51 dim {
52 dim_value: 5
53 }
54 }
55 }
56 }
57 }
58 }
59 opset_import {
60 version: 7
61 })";
62 Setup();
63 }
64 };
65
66 struct ClipFixture : ClipMainFixture
67 {
ClipFixtureClipFixture68 ClipFixture() : ClipMainFixture("2", "3.5") {}
69 };
70
BOOST_FIXTURE_TEST_CASE(ValidClipTest,ClipFixture)71 BOOST_FIXTURE_TEST_CASE(ValidClipTest, ClipFixture)
72 {
73 RunTest<1>({{"Input", { -1.5f, 1.25f, 3.5f, 8.0, 2.5}}},
74 {{ "Output", { 2.0f, 2.0f, 3.5f, 3.5, 2.5}}});
75 }
76
77 struct ClipNoMaxInputFixture : ClipMainFixture
78 {
ClipNoMaxInputFixtureClipNoMaxInputFixture79 ClipNoMaxInputFixture() : ClipMainFixture("0", std::string()) {}
80 };
81
BOOST_FIXTURE_TEST_CASE(ValidNoMaxInputClipTest,ClipNoMaxInputFixture)82 BOOST_FIXTURE_TEST_CASE(ValidNoMaxInputClipTest, ClipNoMaxInputFixture)
83 {
84 RunTest<1>({{"Input", { -1.5f, -5.25f, -0.5f, 8.0f, std::numeric_limits<float>::max() }}},
85 {{ "Output", { 0.0f, 0.0f, 0.0f, 8.0f, std::numeric_limits<float>::max() }}});
86 }
87
88 struct ClipNoMinInputFixture : ClipMainFixture
89 {
ClipNoMinInputFixtureClipNoMinInputFixture90 ClipNoMinInputFixture() : ClipMainFixture(std::string(), "6") {}
91 };
92
BOOST_FIXTURE_TEST_CASE(ValidNoMinInputClipTest,ClipNoMinInputFixture)93 BOOST_FIXTURE_TEST_CASE(ValidNoMinInputClipTest, ClipNoMinInputFixture)
94 {
95 RunTest<1>({{"Input", { std::numeric_limits<float>::lowest(), -5.25f, -0.5f, 8.0f, 200.0f }}},
96 {{ "Output", { std::numeric_limits<float>::lowest(), -5.25f, -0.5f, 6.0f, 6.0f }}});
97 }
98
99 struct ClipNoInputFixture : ClipMainFixture
100 {
ClipNoInputFixtureClipNoInputFixture101 ClipNoInputFixture() : ClipMainFixture(std::string(), std::string()) {}
102 };
103
BOOST_FIXTURE_TEST_CASE(ValidNoInputClipTest,ClipNoInputFixture)104 BOOST_FIXTURE_TEST_CASE(ValidNoInputClipTest, ClipNoInputFixture)
105 {
106 RunTest<1>({{"Input", { std::numeric_limits<float>::lowest(), -1.25f, 3.5f, 8.0f,
107 std::numeric_limits<float>::max()}}},
108 {{ "Output", { std::numeric_limits<float>::lowest(), -1.25f, 3.5f, 8.0f,
109 std::numeric_limits<float>::max()}}});
110 }
111
112 BOOST_AUTO_TEST_SUITE_END()
113