IVGCVSW-3880 Add deserialization test for SLICE

Signed-off-by: Aron Virginas-Tar <Aron.Virginas-Tar@arm.com>
Change-Id: I513a6c02d77c1fd99c7d6571ee8333eae3e1e290
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 300ef31..a5c63e4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -734,6 +734,7 @@
             src/armnnDeserializer/test/DeserializeReshape.cpp
             src/armnnDeserializer/test/DeserializeResizeBilinear.cpp
             src/armnnDeserializer/test/DeserializeRsqrt.cpp
+            src/armnnDeserializer/test/DeserializeSlice.cpp
             src/armnnDeserializer/test/DeserializeSpaceToBatchNd.cpp
             src/armnnDeserializer/test/DeserializeStridedSlice.cpp
             src/armnnDeserializer/test/DeserializeSubtraction.cpp
diff --git a/src/armnnDeserializer/test/DeserializeSlice.cpp b/src/armnnDeserializer/test/DeserializeSlice.cpp
new file mode 100644
index 0000000..44c66d3
--- /dev/null
+++ b/src/armnnDeserializer/test/DeserializeSlice.cpp
@@ -0,0 +1,158 @@
+//
+// Copyright © 2019 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "ParserFlatbuffersSerializeFixture.hpp"
+
+#include "../Deserializer.hpp"
+
+#include <boost/test/unit_test.hpp>
+
+#include <string>
+
+BOOST_AUTO_TEST_SUITE(Deserializer)
+
+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
+};
+
+BOOST_FIXTURE_TEST_CASE(SimpleSliceFloat32, SimpleSliceFixture)
+{
+    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
+        });
+}
+
+BOOST_AUTO_TEST_SUITE_END()