IVGCVSW-5433 Remove boost::transform_iterator and make_transform_iterator

Signed-off-by: Finn Williams <Finn.Williams@arm.com>
Change-Id: I28aace7092cff5743353df1b1de8e7a4691554d3
diff --git a/src/armnnUtils/test/TransformIteratorTest.cpp b/src/armnnUtils/test/TransformIteratorTest.cpp
new file mode 100644
index 0000000..c44e454
--- /dev/null
+++ b/src/armnnUtils/test/TransformIteratorTest.cpp
@@ -0,0 +1,102 @@
+//
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include <armnn/utility/TransformIterator.hpp>
+
+#include <boost/test/unit_test.hpp>
+#include <iostream>
+
+using namespace armnn;
+
+BOOST_AUTO_TEST_SUITE(TransformIteratorSuite)
+
+namespace
+{
+
+static int square(const int val)
+{
+    return val * val;
+}
+
+static std::string concat(const std::string val)
+{
+    return val + "a";
+}
+
+BOOST_AUTO_TEST_CASE(TransformIteratorTest)
+{
+    struct WrapperTestClass
+    {
+        TransformIterator<decltype(&square), std::vector<int>::const_iterator> begin() const
+        {
+            return { m_Vec.begin(), &square };
+        }
+
+        TransformIterator<decltype(&square), std::vector<int>::const_iterator>  end() const
+        {
+            return { m_Vec.end(), &square };
+        }
+
+        const std::vector<int> m_Vec{1, 2, 3, 4, 5};
+    };
+
+    struct WrapperStringClass
+    {
+        TransformIterator<decltype(&concat), std::vector<std::string>::const_iterator> begin() const
+        {
+            return { m_Vec.begin(), &concat };
+        }
+
+        TransformIterator<decltype(&concat), std::vector<std::string>::const_iterator>  end() const
+        {
+            return { m_Vec.end(), &concat };
+        }
+
+        const std::vector<std::string> m_Vec{"a", "b", "c"};
+    };
+
+    WrapperStringClass wrapperStringClass;
+    WrapperTestClass wrapperTestClass;
+    int i = 1;
+
+    for(auto val : wrapperStringClass)
+    {
+        BOOST_CHECK(val != "e");
+        i++;
+    }
+
+    i = 1;
+    for(auto val : wrapperTestClass)
+    {
+        BOOST_CHECK(val == square(i));
+        i++;
+    }
+
+    i = 1;
+    // Check original vector is unchanged
+    for(auto val : wrapperTestClass.m_Vec)
+    {
+        BOOST_CHECK(val == i);
+        i++;
+    }
+
+    std::vector<int> originalVec{1, 2, 3, 4, 5};
+
+    auto transformBegin = MakeTransformIterator(originalVec.begin(), &square);
+    auto transformEnd = MakeTransformIterator(originalVec.end(), &square);
+
+    std::vector<int> transformedVec(transformBegin, transformEnd);
+
+    i = 1;
+    for(auto val : transformedVec)
+    {
+        BOOST_CHECK(val == square(i));
+        i++;
+    }
+}
+
+}
+
+BOOST_AUTO_TEST_SUITE_END()