IVGCVSW-3116 Fix failing NN Driver Tests on Android Q

	* Refactor Convolution2d Unit test for fp16Enabled
	* Disable GpuAcc for Unit tests in Android Q

Signed-off-by: Kevin May <kevin.may@arm.com>
Change-Id: I9613eb325841bdf7d25abf51259fe2f5d973c929
diff --git a/test/1.1/Mean.cpp b/test/1.1/Mean.cpp
index 7d48243..cf9ddcb 100644
--- a/test/1.1/Mean.cpp
+++ b/test/1.1/Mean.cpp
@@ -18,7 +18,11 @@
 namespace
 {
 
-static const boost::array<armnn::Compute, 2> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }};
+#ifndef ARMCOMPUTECL_ENABLED
+    static const boost::array<armnn::Compute, 1> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef }};
+#else
+    static const boost::array<armnn::Compute, 2> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }};
+#endif
 
 void MeanTestImpl(const TestTensor& input,
                   const hidl_vec<uint32_t>& axisDimensions,
diff --git a/test/1.1/Transpose.cpp b/test/1.1/Transpose.cpp
index 6dc3e0e..e32a25f 100644
--- a/test/1.1/Transpose.cpp
+++ b/test/1.1/Transpose.cpp
@@ -21,7 +21,11 @@
 namespace
 {
 
-static const boost::array<armnn::Compute, 2> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }};
+#ifndef ARMCOMPUTECL_ENABLED
+    static const boost::array<armnn::Compute, 1> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef }};
+#else
+    static const boost::array<armnn::Compute, 2> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }};
+#endif
 
 void TransposeTestImpl(const TestTensor & inputs, int32_t perm[],
                        const TestTensor & expectedOutputTensor, armnn::Compute computeDevice)
diff --git a/test/Convolution2D.hpp b/test/Convolution2D.hpp
index 3fda29b..c8d573d 100644
--- a/test/Convolution2D.hpp
+++ b/test/Convolution2D.hpp
@@ -20,6 +20,15 @@
 
 namespace driverTestHelpers
 {
+#define ARMNN_ANDROID_FP16_TEST(result, fp16Expectation, fp32Expectation, fp16Enabled) \
+   if (fp16Enabled) \
+   { \
+       BOOST_TEST((result == fp16Expectation || result == fp32Expectation), result << \
+       " does not match either " << fp16Expectation << "[fp16] or " << fp32Expectation << "[fp32]"); \
+   } else \
+   { \
+      BOOST_TEST(result == fp32Expectation); \
+   }
 
 void SetModelFp16Flag(V1_0::Model& model, bool fp16Enabled);
 
@@ -33,7 +42,13 @@
     using HalModel         = typename HalPolicy::Model;
     using HalOperationType = typename HalPolicy::OperationType;
 
-    auto driver = std::make_unique<ArmnnDriver>(DriverOptions(armnn::Compute::GpuAcc, fp16Enabled));
+    armnn::Compute computeDevice = armnn::Compute::GpuAcc;
+
+#ifndef ARMCOMPUTECL_ENABLED
+    computeDevice = armnn::Compute::CpuRef;
+#endif
+
+    auto driver = std::make_unique<ArmnnDriver>(DriverOptions(computeDevice, fp16Enabled));
     HalModel model = {};
 
     uint32_t outSize = paddingScheme == android::nn::kPaddingSame ? 2 : 1;
@@ -97,26 +112,11 @@
     switch (paddingScheme)
     {
     case android::nn::kPaddingValid:
-        if (fp16Enabled)
-        {
-            BOOST_TEST(outdata[0] == 1022.f);
-        }
-        else
-        {
-            BOOST_TEST(outdata[0] == 1022.25f);
-        }
+        ARMNN_ANDROID_FP16_TEST(outdata[0], 1022.f, 1022.25f, fp16Enabled)
         break;
     case android::nn::kPaddingSame:
-        if (fp16Enabled)
-        {
-            BOOST_TEST(outdata[0] == 1022.f);
-            BOOST_TEST(outdata[1] == 0.f);
-        }
-        else
-        {
-            BOOST_TEST(outdata[0] == 1022.25f);
-            BOOST_TEST(outdata[1] == 0.f);
-        }
+        ARMNN_ANDROID_FP16_TEST(outdata[0], 1022.f, 1022.25f, fp16Enabled)
+        BOOST_TEST(outdata[1] == 0.f);
         break;
     default:
         BOOST_TEST(false);
diff --git a/test/Lstm.cpp b/test/Lstm.cpp
index b1b7c9d..5681232 100644
--- a/test/Lstm.cpp
+++ b/test/Lstm.cpp
@@ -1491,8 +1491,11 @@
                  outputDimensions,                      outputValue,
                  compute);
 }
-
-static const boost::array<armnn::Compute, 2> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }};
+#ifndef ARMCOMPUTECL_ENABLED
+    static const boost::array<armnn::Compute, 1> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef }};
+#else
+    static const boost::array<armnn::Compute, 2> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }};
+#endif
 
 BOOST_DATA_TEST_CASE(LstmNoCifgNoPeepholeNoProjectionTest, COMPUTE_DEVICES)
 {
diff --git a/test/Merger.cpp b/test/Merger.cpp
index 16ac451..9b3d847 100644
--- a/test/Merger.cpp
+++ b/test/Merger.cpp
@@ -19,7 +19,11 @@
 namespace
 {
 
-static const boost::array<armnn::Compute, 2> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }};
+#ifndef ARMCOMPUTECL_ENABLED
+    static const boost::array<armnn::Compute, 1> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef }};
+#else
+    static const boost::array<armnn::Compute, 2> COMPUTE_DEVICES = {{ armnn::Compute::CpuRef, armnn::Compute::GpuAcc }};
+#endif
 
 void
 MergerTestImpl(const std::vector<const TestTensor*> & inputs,