diff --git a/src/armnnTfLiteParser/test/Multiplication.cpp b/src/armnnTfLiteParser/test/Multiplication.cpp
new file mode 100644
index 0000000..802799c
--- /dev/null
+++ b/src/armnnTfLiteParser/test/Multiplication.cpp
@@ -0,0 +1,112 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include <boost/test/unit_test.hpp>
+#include "ParserFlatbuffersFixture.hpp"
+#include "../TfLiteParser.hpp"
+
+#include <string>
+#include <iostream>
+
+BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
+
+struct MultiplicationFixture : public ParserFlatbuffersFixture
+{
+    explicit MultiplicationFixture(const std::string & inputShape1,
+                                            const std::string & inputShape2,
+                                            const std::string & outputShape,
+                                            const std::string & activation="NONE")
+    {
+        m_JsonString = R"(
+            {
+                "version": 3,
+                "operator_codes": [ { "builtin_code": "MUL" } ],
+                "subgraphs": [ {
+                    "tensors": [
+                        {
+                            "shape": )" + inputShape1 + R"(,
+                            "type": "FLOAT32",
+                            "buffer": 0,
+                            "name": "inputTensor1",
+                            "quantization": {
+                                "min": [ 0.0 ],
+                                "max": [ 255.0 ],
+                                "scale": [ 1.0 ],
+                                "zero_point": [ 0 ],
+                            }
+                        },
+                        {
+                            "shape": )" + inputShape2 + R"(,
+                            "type": "FLOAT32",
+                            "buffer": 1,
+                            "name": "inputTensor2",
+                            "quantization": {
+                                "min": [ 0.0 ],
+                                "max": [ 255.0 ],
+                                "scale": [ 1.0 ],
+                                "zero_point": [ 0 ],
+                            }
+                        },
+                        {
+                            "shape": )" + outputShape + R"( ,
+                            "type": "FLOAT32",
+                            "buffer": 2,
+                            "name": "outputTensor",
+                            "quantization": {
+                                "min": [ 0.0 ],
+                                "max": [ 255.0 ],
+                                "scale": [ 1.0 ],
+                                "zero_point": [ 0 ],
+                            }
+                        }
+                    ],
+                    "inputs": [ 0, 1 ],
+                    "outputs": [ 2 ],
+                    "operators": [
+                        {
+                            "opcode_index": 0,
+                            "inputs": [ 0, 1 ],
+                            "outputs": [ 2 ],
+                            "builtin_options_type": "MulOptions",
+                            "builtin_options": {
+                                "fused_activation_function": )" + activation + R"(
+                            },
+                            "custom_options_format": "FLEXBUFFERS"
+                        }
+                    ],
+                } ],
+                "buffers" : [
+                    { },
+                    { }
+                ]
+            }
+        )";
+        Setup();
+    }
+};
+
+struct SimpleMultiplicationFixture : public MultiplicationFixture
+{
+    SimpleMultiplicationFixture() : MultiplicationFixture("[ 1, 2, 2, 3 ]", "[ 1, 2, 2, 3 ]", "[ 1, 2, 2, 3 ]") {}
+};
+
+BOOST_FIXTURE_TEST_CASE(ParseMultiplication, SimpleMultiplicationFixture)
+{
+    RunTest<4, float>(0, {{ "inputTensor1", { 0.0f,  1.0f,  2.0f,
+                                              3.0f,  4.0f,  5.0f,
+                                              6.0f,  7.0f,  8.0f,
+                                              9.0f, 10.0f, 11.0f } },
+                         { "inputTensor2", { 1.0f,  1.0f,  1.0f,
+                                             5.0f,  5.0f,  5.0f,
+                                             1.0f,  1.0f,  1.0f,
+                                             5.0f,  5.0f,  5.0f} } },
+                         {{ "outputTensor", { 0.0f,  1.0f,  2.0f,
+                                             15.0f, 20.0f, 25.0f,
+                                              6.0f,  7.0f,  8.0f,
+                                             45.0f, 50.0f, 55.0f } } });
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
