• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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