IVGCVSW-IVGCVSW-4772 Fixes for android-nn-driver unit tests on Android R

 * Added missing operand parameter numberOfConsumers to DriverTestHelpers
 * Added nullptr checks to unit tests
 * Disabling QuantizedLstmTest when ARMCOMPUTECL_ENABLED is undefined

Signed-off-by: David Monahan <david.monahan@arm.com>
Change-Id: I46dc413d3bb1805eb0e7c982177b6d60d0b297f5
diff --git a/test/DriverTestHelpers.hpp b/test/DriverTestHelpers.hpp
index 7a35b23..66d6ac5 100644
--- a/test/DriverTestHelpers.hpp
+++ b/test/DriverTestHelpers.hpp
@@ -142,7 +142,7 @@
 }
 
 template<typename HalPolicy, typename HalModel = typename HalPolicy::Model>
-void AddIntOperand(HalModel& model, int32_t value)
+void AddIntOperand(HalModel& model, int32_t value, uint32_t numberOfConsumers = 1)
 {
     using HalOperand         = typename HalPolicy::Operand;
     using HalOperandType     = typename HalPolicy::OperandType;
@@ -152,11 +152,12 @@
     location.offset = model.operandValues.size();
     location.length = sizeof(int32_t);
 
-    HalOperand op    = {};
-    op.type          = HalOperandType::INT32;
-    op.dimensions    = hidl_vec<uint32_t>{};
-    op.lifetime      = HalOperandLifeTime::CONSTANT_COPY;
-    op.location      = location;
+    HalOperand op           = {};
+    op.type                 = HalOperandType::INT32;
+    op.dimensions           = hidl_vec<uint32_t>{};
+    op.lifetime             = HalOperandLifeTime::CONSTANT_COPY;
+    op.location             = location;
+    op.numberOfConsumers    = numberOfConsumers;
 
     model.operandValues.resize(model.operandValues.size() + location.length);
     *reinterpret_cast<int32_t*>(&model.operandValues[location.offset]) = value;
@@ -165,7 +166,7 @@
 }
 
 template<typename HalPolicy, typename HalModel = typename HalPolicy::Model>
-void AddBoolOperand(HalModel& model, bool value)
+void AddBoolOperand(HalModel& model, bool value, uint32_t numberOfConsumers = 1)
 {
     using HalOperand         = typename HalPolicy::Operand;
     using HalOperandType     = typename HalPolicy::OperandType;
@@ -175,11 +176,12 @@
     location.offset = model.operandValues.size();
     location.length = sizeof(uint8_t);
 
-    HalOperand op    = {};
-    op.type          = HalOperandType::BOOL;
-    op.dimensions    = hidl_vec<uint32_t>{};
-    op.lifetime      = HalOperandLifeTime::CONSTANT_COPY;
-    op.location      = location;
+    HalOperand op           = {};
+    op.type                 = HalOperandType::BOOL;
+    op.dimensions           = hidl_vec<uint32_t>{};
+    op.lifetime             = HalOperandLifeTime::CONSTANT_COPY;
+    op.location             = location;
+    op.numberOfConsumers    = numberOfConsumers;
 
     model.operandValues.resize(model.operandValues.size() + location.length);
     *reinterpret_cast<uint8_t*>(&model.operandValues[location.offset]) = static_cast<uint8_t>(value);
@@ -207,7 +209,8 @@
                       HalOperandType operandType = HalOperandType::TENSOR_FLOAT32,
                       HalOperandLifeTime operandLifeTime = V1_0::OperandLifeTime::CONSTANT_COPY,
                       double scale = 0.f,
-                      int offset = 0)
+                      int offset = 0,
+                      uint32_t numberOfConsumers = 1)
 {
     using HalOperand = typename HalPolicy::Operand;
 
@@ -225,13 +228,14 @@
         location.offset = model.operandValues.size();
     }
 
-    HalOperand op    = {};
-    op.type          = operandType;
-    op.dimensions    = dimensions;
-    op.scale         = scale;
-    op.zeroPoint     = offset;
-    op.lifetime      = HalOperandLifeTime::CONSTANT_COPY;
-    op.location      = location;
+    HalOperand op           = {};
+    op.type                 = operandType;
+    op.dimensions           = dimensions;
+    op.scale                = scale;
+    op.zeroPoint            = offset;
+    op.lifetime             = HalOperandLifeTime::CONSTANT_COPY;
+    op.location             = location;
+    op.numberOfConsumers    = numberOfConsumers;
 
     model.operandValues.resize(model.operandValues.size() + location.length);
     for (uint32_t i = 0; i < totalElements; i++)
@@ -253,9 +257,17 @@
                       HalOperandType operandType = HalPolicy::OperandType::TENSOR_FLOAT32,
                       HalOperandLifeTime operandLifeTime = V1_0::OperandLifeTime::CONSTANT_COPY,
                       double scale = 0.f,
-                      int offset = 0)
+                      int offset = 0,
+                      uint32_t numberOfConsumers = 1)
 {
-    AddTensorOperand<HalPolicy, T>(model, dimensions, values.data(), operandType, operandLifeTime, scale, offset);
+    AddTensorOperand<HalPolicy, T>(model,
+                                   dimensions,
+                                   values.data(),
+                                   operandType,
+                                   operandLifeTime,
+                                   scale,
+                                   offset,
+                                   numberOfConsumers);
 }
 
 template<typename HalPolicy,
@@ -265,17 +277,19 @@
                      const hidl_vec<uint32_t>& dimensions,
                      HalOperandType operandType = HalOperandType::TENSOR_FLOAT32,
                      double scale = 0.f,
-                     int offset = 0)
+                     int offset = 0,
+                     uint32_t numberOfConsumers = 1)
 {
     using HalOperand         = typename HalPolicy::Operand;
     using HalOperandLifeTime = typename HalPolicy::OperandLifeTime;
 
-    HalOperand op    = {};
-    op.type          = operandType;
-    op.scale         = scale;
-    op.zeroPoint     = offset;
-    op.dimensions    = dimensions;
-    op.lifetime      = HalOperandLifeTime::MODEL_INPUT;
+    HalOperand op           = {};
+    op.type                 = operandType;
+    op.scale                = scale;
+    op.zeroPoint            = offset;
+    op.dimensions           = dimensions;
+    op.lifetime             = HalOperandLifeTime::MODEL_INPUT;
+    op.numberOfConsumers    = numberOfConsumers;
 
     AddOperand<HalPolicy>(model, op);
 
@@ -290,17 +304,19 @@
                       const hidl_vec<uint32_t>& dimensions,
                       HalOperandType operandType = HalOperandType::TENSOR_FLOAT32,
                       double scale = 0.f,
-                      int offset = 0)
+                      int offset = 0,
+                      uint32_t numberOfConsumers = 0)
 {
     using HalOperand         = typename HalPolicy::Operand;
     using HalOperandLifeTime = typename HalPolicy::OperandLifeTime;
 
-    HalOperand op    = {};
-    op.type          = operandType;
-    op.scale         = scale;
-    op.zeroPoint     = offset;
-    op.dimensions    = dimensions;
-    op.lifetime      = HalOperandLifeTime::MODEL_OUTPUT;
+    HalOperand op           = {};
+    op.type                 = operandType;
+    op.scale                = scale;
+    op.zeroPoint            = offset;
+    op.dimensions           = dimensions;
+    op.lifetime             = HalOperandLifeTime::MODEL_OUTPUT;
+    op.numberOfConsumers    = numberOfConsumers;
 
     AddOperand<HalPolicy>(model, op);