diff --git a/src/armnnTfLiteParser/test/Minimum.cpp b/src/armnnTfLiteParser/test/Minimum.cpp
new file mode 100644
index 0000000..70b249f
--- /dev/null
+++ b/src/armnnTfLiteParser/test/Minimum.cpp
@@ -0,0 +1,176 @@
+//
+// 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 MinimumFixture : public ParserFlatbuffersFixture
+{
+    explicit MinimumFixture(const std::string & inputShape1,
+                            const std::string & inputShape2,
+                            const std::string & outputShape)
+    {
+        m_JsonString = R"(
+            {
+                "version": 3,
+                "operator_codes": [ { "builtin_code": "MINIMUM" } ],
+                "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 ],
+                            "custom_options_format": "FLEXBUFFERS"
+                        }
+                    ],
+                } ],
+                "buffers" : [
+                    { },
+                    { }
+                ]
+            }
+        )";
+        Setup();
+    }
+};
+
+
+struct MinimumFixture4D : MinimumFixture
+{
+    MinimumFixture4D() : MinimumFixture("[ 1, 2, 2, 3 ]",
+                                        "[ 1, 2, 2, 3 ]",
+                                        "[ 1, 2, 2, 3 ]") {}
+};
+
+BOOST_FIXTURE_TEST_CASE(ParseMinimum4D, MinimumFixture4D)
+{
+  RunTest<4, armnn::DataType::Float32>(
+      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",  { 0.0f, 0.0f, 0.0f,
+                          5.0f, 5.0f, 5.0f,
+                          7.0f, 7.0f, 7.0f,
+                          9.0f, 9.0f, 9.0f }}},
+      {{"outputTensor", { 0.0f, 0.0f, 0.0f,
+                          3.0f, 4.0f, 5.0f,
+                          6.0f, 7.0f, 7.0f,
+                          9.0f, 9.0f, 9.0f }}});
+}
+
+struct MinimumBroadcastFixture4D : MinimumFixture
+{
+    MinimumBroadcastFixture4D() : MinimumFixture("[ 1, 1, 2, 1 ]",
+                                                 "[ 1, 2, 1, 3 ]",
+                                                 "[ 1, 2, 2, 3 ]") {}
+};
+
+BOOST_FIXTURE_TEST_CASE(ParseMinimumBroadcast4D, MinimumBroadcastFixture4D)
+{
+  RunTest<4, armnn::DataType::Float32>(
+      0,
+      {{"inputTensor1", { 2.0f,
+                          4.0f }},
+      {"inputTensor2",  { 1.0f, 2.0f, 3.0f,
+                          4.0f, 5.0f, 6.0f }}},
+      {{"outputTensor", { 1.0f, 2.0f, 2.0f,
+                          1.0f, 2.0f, 3.0f,
+                          2.0f, 2.0f, 2.0f,
+                          4.0f, 4.0f, 4.0f }}});
+}
+
+struct MinimumBroadcastFixture4D1D : MinimumFixture
+{
+    MinimumBroadcastFixture4D1D() : MinimumFixture("[ 1, 2, 2, 3 ]",
+                                                   "[ 1 ]",
+                                                   "[ 1, 2, 2, 3 ]") {}
+};
+
+BOOST_FIXTURE_TEST_CASE(ParseMinimumBroadcast4D1D, MinimumBroadcastFixture4D1D)
+{
+  RunTest<4, armnn::DataType::Float32>(
+      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",  { 5.0f }}},
+      {{"outputTensor", {  0.0f, 1.0f, 2.0f,
+                           3.0f, 4.0f, 5.0f,
+                           5.0f, 5.0f, 5.0f,
+                           5.0f, 5.0f, 5.0f }}});
+}
+
+struct MinimumBroadcastFixture1D4D : MinimumFixture
+{
+    MinimumBroadcastFixture1D4D() : MinimumFixture("[ 3 ]",
+                                                   "[ 1, 2, 2, 3 ]",
+                                                   "[ 1, 2, 2, 3 ]") {}
+};
+
+BOOST_FIXTURE_TEST_CASE(ParseMinimumBroadcast1D4D, MinimumBroadcastFixture1D4D)
+{
+  RunTest<4, armnn::DataType::Float32>(
+      0,
+      {{"inputTensor1", { 5.0f,  6.0f,  7.0f }},
+      {"inputTensor2",  { 0.0f,  1.0f,  2.0f,
+                          3.0f,  4.0f,  5.0f,
+                          6.0f,  7.0f,  8.0f,
+                          9.0f, 10.0f, 11.0f }}},
+      {{"outputTensor", { 0.0f, 1.0f, 2.0f,
+                          3.0f, 4.0f, 5.0f,
+                          5.0f, 6.0f, 7.0f,
+                          5.0f, 6.0f, 7.0f }}});
+}
+
+BOOST_AUTO_TEST_SUITE_END()
