IVGCVSW-2705 Add Serializer and Deserializer for ResizeBilinear

Change-Id: Ibc5689a2e00d38dc98ef39e50ed5dc3b91791e16
Signed-off-by: Nattapat Chaimanowong <nattapat.chaimanowong@arm.com>
diff --git a/src/armnnDeserializer/test/DeserializeResizeBilinear.cpp b/src/armnnDeserializer/test/DeserializeResizeBilinear.cpp
new file mode 100644
index 0000000..b018324
--- /dev/null
+++ b/src/armnnDeserializer/test/DeserializeResizeBilinear.cpp
@@ -0,0 +1,131 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include <boost/test/unit_test.hpp>
+#include "ParserFlatbuffersSerializeFixture.hpp"
+#include "../Deserializer.hpp"
+
+#include <string>
+
+BOOST_AUTO_TEST_SUITE(Deserializer)
+
+struct ResizeBilinearFixture : public ParserFlatbuffersSerializeFixture
+{
+    explicit ResizeBilinearFixture(const std::string& inputShape,
+                                   const std::string& targetWidth,
+                                   const std::string& targetHeight,
+                                   const std::string& dataLayout,
+                                   const std::string& outputShape,
+                                   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: "ResizeBilinearLayer",
+                        layer: {
+                            base: {
+                                index: 1,
+                                layerName: "ResizeBilinearLayer",
+                                layerType: "ResizeBilinear",
+                                inputSlots: [{
+                                    index: 0,
+                                    connection: {sourceLayerIndex:0, outputSlotIndex:0 },
+                                }],
+                                outputSlots: [{
+                                    index: 0,
+                                    tensorInfo: {
+                                        dimensions: )" + outputShape + R"(,
+                                        dataType: )" + dataType + R"(
+                                    }
+                                }]
+                            },
+                            descriptor: {
+                                targetWidth: )" + targetWidth + R"(,
+                                targetHeight: )" + targetHeight + R"(,
+                                dataLayout: )" + dataLayout + 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 SimpleResizeBilinearFixture : ResizeBilinearFixture
+{
+    SimpleResizeBilinearFixture() : ResizeBilinearFixture("[1, 2, 2, 2]",
+                                                          "1",
+                                                          "1",
+                                                          "NCHW",
+                                                          "[1, 2, 1, 1]",
+                                                          "Float32") {}
+};
+
+BOOST_FIXTURE_TEST_CASE(SimpleResizeBilinearFloat32, SimpleResizeBilinearFixture)
+{
+    RunTest<4, armnn::DataType::Float32>(0,
+                                         {
+                                              1.0f, 255.0f, 200.0f, 250.0f,
+                                            250.0f, 200.0f, 250.0f,   1.0f
+                                         },
+                                         {
+                                              1.0f, 250.0f
+                                         });
+}
+
+BOOST_AUTO_TEST_SUITE_END()