IVGCVSW-3738 Add end-to-end layer test for DepthToSpace

* Added end-to-end layer test implementation for DepthToSpace
* Added test to reference, CL and NEON backends for all supported
  data types and data layouts
* Extracted common data permutation code into new utility file and
  refactored some existing tests to reduce code duplication
* Fixed EndToEndLayerTestImpl template to work with Float16 data

Signed-off-by: Aron Virginas-Tar <Aron.Virginas-Tar@arm.com>
Change-Id: Iaf7a0012c520451052b20c37e36dc05fa8314ff6
diff --git a/src/backends/cl/test/ClEndToEndTests.cpp b/src/backends/cl/test/ClEndToEndTests.cpp
index b1e51c6..d5d1ad5 100644
--- a/src/backends/cl/test/ClEndToEndTests.cpp
+++ b/src/backends/cl/test/ClEndToEndTests.cpp
@@ -8,6 +8,7 @@
 #include <backendsCommon/test/AbsEndToEndTestImpl.hpp>
 #include <backendsCommon/test/ArithmeticTestImpl.hpp>
 #include <backendsCommon/test/ConcatEndToEndTestImpl.hpp>
+#include <backendsCommon/test/DepthToSpaceEndToEndTestImpl.hpp>
 #include <backendsCommon/test/DequantizeEndToEndTestImpl.hpp>
 #include <backendsCommon/test/PreluEndToEndTestImpl.hpp>
 #include <backendsCommon/test/QuantizedLstmEndToEndTestImpl.hpp>
@@ -63,6 +64,48 @@
     ConcatDim3EndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends);
 }
 
+// DepthToSpace
+BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat32)
+{
+    DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NCHW);
+}
+
+BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwFloat16)
+{
+    DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NCHW);
+}
+
+BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwUint8)
+{
+    DepthToSpaceEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NCHW);
+}
+
+BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNchwInt16)
+{
+    DepthToSpaceEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NCHW);
+}
+
+BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat32)
+{
+    DepthToSpaceEndToEnd<armnn::DataType::Float32>(defaultBackends, armnn::DataLayout::NHWC);
+}
+
+BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcFloat16)
+{
+    DepthToSpaceEndToEnd<armnn::DataType::Float16>(defaultBackends, armnn::DataLayout::NHWC);
+}
+
+BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcUint8)
+{
+    DepthToSpaceEndToEnd<armnn::DataType::QuantisedAsymm8>(defaultBackends, armnn::DataLayout::NHWC);
+}
+
+BOOST_AUTO_TEST_CASE(DephtToSpaceEndToEndNhwcInt16)
+{
+    DepthToSpaceEndToEnd<armnn::DataType::QuantisedSymm16>(defaultBackends, armnn::DataLayout::NHWC);
+}
+
+// Dequantize
 BOOST_AUTO_TEST_CASE(DequantizeEndToEndSimpleTest)
 {
     DequantizeEndToEndSimple<armnn::DataType::QuantisedAsymm8>(defaultBackends);
@@ -123,24 +166,24 @@
     PreluEndToEndPositiveTest<armnn::DataType::QuantisedAsymm8>(defaultBackends);
 }
 
-BOOST_AUTO_TEST_CASE(ClSpaceToDepthNHWCEndToEndTest1)
+BOOST_AUTO_TEST_CASE(ClSpaceToDepthNhwcEndToEndTest1)
 {
-    SpaceToDepthNHWCEndToEndTest1(defaultBackends);
+    SpaceToDepthNhwcEndToEndTest1(defaultBackends);
 }
 
-BOOST_AUTO_TEST_CASE(ClSpaceToDepthNCHWEndToEndTest1)
+BOOST_AUTO_TEST_CASE(ClSpaceToDepthNchwEndToEndTest1)
 {
-    SpaceToDepthNCHWEndToEndTest1(defaultBackends);
+    SpaceToDepthNchwEndToEndTest1(defaultBackends);
 }
 
-BOOST_AUTO_TEST_CASE(ClSpaceToDepthNHWCEndToEndTest2)
+BOOST_AUTO_TEST_CASE(ClSpaceToDepthNhwcEndToEndTest2)
 {
-    SpaceToDepthNHWCEndToEndTest2(defaultBackends);
+    SpaceToDepthNhwcEndToEndTest2(defaultBackends);
 }
 
-BOOST_AUTO_TEST_CASE(ClSpaceToDepthNCHWEndToEndTest2)
+BOOST_AUTO_TEST_CASE(ClSpaceToDepthNchwEndToEndTest2)
 {
-    SpaceToDepthNCHWEndToEndTest2(defaultBackends);
+    SpaceToDepthNchwEndToEndTest2(defaultBackends);
 }
 
 BOOST_AUTO_TEST_CASE(ClSplitter1dEndToEndTest)