aboutsummaryrefslogtreecommitdiff
path: root/src/armnnDeserializer/test/DeserializeSlice.cpp
blob: e0bfb217fc896940bcbf2c7267defe3b047e38cb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
//
// Copyright © 2019 Arm Ltd. All rights reserved.
// SPDX-License-Identifier: MIT
//

#include "ParserFlatbuffersSerializeFixture.hpp"

#include <armnnDeserializer/IDeserializer.hpp>

#include <string>

TEST_SUITE("Deserializer_Slice")
{
struct SliceFixture : public ParserFlatbuffersSerializeFixture
{
    explicit SliceFixture(const std::string& inputShape,
                          const std::string& outputShape,
                          const std::string& begin,
                          const std::string& size,
                          const std::string& dataType)
    {
        m_JsonString = R"(
            {
                inputIds: [0],
                outputIds: [2],
                layers: [
                    {
                        layer_type: "InputLayer",
                        layer: {
                            base: {
                                layerBindingId: 0,
                                base: {
                                    index: 0,
                                    layerName: "InputLayer",
                                    layerType: "Input",
                                    inputSlots: [{
                                        index: 0,
                                        connection: {sourceLayerIndex:0, outputSlotIndex:0 },
                                    }],
                                    outputSlots: [{
                                        index: 0,
                                        tensorInfo: {
                                            dimensions: )" + inputShape + R"(,
                                            dataType: )" + dataType + R"(
                                        }
                                    }]
                                }
                            }
                        }
                    },
                    {
                        layer_type: "SliceLayer",
                        layer: {
                            base: {
                                index: 1,
                                layerName: "SliceLayer",
                                layerType: "Slice",
                                inputSlots: [{
                                    index: 0,
                                    connection: {sourceLayerIndex:0, outputSlotIndex:0 },
                                }],
                                outputSlots: [{
                                    index: 0,
                                    tensorInfo: {
                                        dimensions: )" + outputShape + R"(,
                                        dataType: )" + dataType + R"(
                                    }
                                }]
                            },
                            descriptor: {
                                begin: )" + begin + R"(,
                                size: )" + size + R"(,
                            }
                        }
                    },
                    {
                        layer_type: "OutputLayer",
                        layer: {
                            base:{
                                layerBindingId: 2,
                                base: {
                                    index: 2,
                                    layerName: "OutputLayer",
                                    layerType: "Output",
                                    inputSlots: [{
                                        index: 0,
                                        connection: {sourceLayerIndex:1, outputSlotIndex:0 },
                                    }],
                                    outputSlots: [{
                                        index: 0,
                                        tensorInfo: {
                                            dimensions: )" + outputShape + R"(,
                                            dataType: )" + dataType + R"(
                                        },
                                    }],
                                }
                            }
                        },
                    }
                ]
            }
        )";
        SetupSingleInputSingleOutput("InputLayer", "OutputLayer");
    }
};

struct SimpleSliceFixture : SliceFixture
{
    SimpleSliceFixture() : SliceFixture("[ 3, 2, 3, 5 ]", // input shape
                                        "[ 2, 1, 2, 3 ]", // output shape
                                        "[ 1, 0, 1, 2 ]", // begin
                                        "[ 2, 1, 2, 3 ]", // size
                                        "Float32") {}     // data type
};

TEST_CASE_FIXTURE(SimpleSliceFixture, "SimpleSliceFloat32")
{
    RunTest<4, armnn::DataType::Float32>(
        0,
        {
            0.f,  1.f,  2.f,  3.f,  4.f,
            5.f,  6.f,  7.f,  8.f,  9.f,
            10.f, 11.f, 12.f, 13.f, 14.f,

            15.f, 16.f, 17.f, 18.f, 19.f,
            20.f, 21.f, 22.f, 23.f, 24.f,
            25.f, 26.f, 27.f, 28.f, 29.f,


            30.f, 31.f, 32.f, 33.f, 34.f,
            35.f, 36.f, 37.f, 38.f, 39.f,
            40.f, 41.f, 42.f, 43.f, 44.f,

            45.f, 46.f, 47.f, 48.f, 49.f,
            50.f, 51.f, 52.f, 53.f, 54.f,
            55.f, 56.f, 57.f, 58.f, 59.f,


            60.f, 61.f, 62.f, 63.f, 64.f,
            65.f, 66.f, 67.f, 68.f, 69.f,
            70.f, 71.f, 72.f, 73.f, 74.f,

            75.f, 76.f, 77.f, 78.f, 79.f,
            80.f, 81.f, 82.f, 83.f, 84.f,
            85.f, 86.f, 87.f, 88.f, 89.f
        },
        {
            37.f, 38.f, 39.f,
            42.f, 43.f, 44.f,

            67.f, 68.f, 69.f,
            72.f, 73.f, 74.f
        });
}

}