IVGCVSW-2993: Investigate TfLite Parser test output shape validation

 * Get outputTensorInfo from runtime outputs to ensure that
the results are from the running network

Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: Ib35afeaf5f6121df7f6379cfc557ae77e5214d69
diff --git a/src/armnnTfLiteParser/test/ParserFlatbuffersFixture.hpp b/src/armnnTfLiteParser/test/ParserFlatbuffersFixture.hpp
index 9b443c3..69c5ec1 100644
--- a/src/armnnTfLiteParser/test/ParserFlatbuffersFixture.hpp
+++ b/src/armnnTfLiteParser/test/ParserFlatbuffersFixture.hpp
@@ -271,30 +271,25 @@
     armnn::OutputTensors outputTensors;
     for (auto&& it : expectedOutputData)
     {
-        BindingPointInfo bindingInfo = m_Parser->GetNetworkOutputBindingInfo(subgraphId, it.first);
-        armnn::VerifyTensorInfoDataType(bindingInfo.second, armnnType2);
-        outputStorage.emplace(it.first, MakeTensor<DataType2, NumOutputDimensions>(bindingInfo.second));
+        armnn::LayerBindingId outputBindingId = m_Parser->GetNetworkOutputBindingInfo(subgraphId, it.first).first;
+        armnn::TensorInfo outputTensorInfo = m_Runtime->GetOutputTensorInfo(m_NetworkIdentifier, outputBindingId);
+
+        // Check that output tensors have correct number of dimensions (NumOutputDimensions specified in test)
+        auto outputNumDimensions = outputTensorInfo.GetNumDimensions();
+        BOOST_CHECK_MESSAGE((outputNumDimensions == NumOutputDimensions),
+            boost::str(boost::format("Number of dimensions expected %1%, but got %2% for output layer %3%")
+                                       % NumOutputDimensions
+                                       % outputNumDimensions
+                                       % it.first));
+
+        armnn::VerifyTensorInfoDataType(outputTensorInfo, armnnType2);
+        outputStorage.emplace(it.first, MakeTensor<DataType2, NumOutputDimensions>(outputTensorInfo));
         outputTensors.push_back(
-                { bindingInfo.first, armnn::Tensor(bindingInfo.second, outputStorage.at(it.first).data()) });
+                { outputBindingId, armnn::Tensor(outputTensorInfo, outputStorage.at(it.first).data()) });
     }
 
     m_Runtime->EnqueueWorkload(m_NetworkIdentifier, inputTensors, outputTensors);
 
-    // Check that output tensors have correct number of dimensions (NumOutputDimensions specified in test)
-    // after running the workload
-    for (auto&& it : expectedOutputData)
-    {
-        armnn::LayerBindingId outputBindingId = m_Parser->GetNetworkOutputBindingInfo(subgraphId, it.first).first;
-        auto outputNumDimensions = m_Runtime->GetOutputTensorInfo(
-            m_NetworkIdentifier, outputBindingId).GetNumDimensions();
-
-        BOOST_CHECK_MESSAGE((outputNumDimensions == NumOutputDimensions),
-            boost::str(boost::format("Number of dimensions expected %1%, but got %2% for output layer %3%")
-                                     % NumOutputDimensions
-                                     % outputNumDimensions
-                                     % it.first));
-    }
-
     // Compare each output tensor to the expected values
     for (auto&& it : expectedOutputData)
     {