Add OperationValidationTest for ROI_POOLING and ROI_ALIGN.

Bug: 119401916
Bug: 113560033
Test: NeuralNetworksTest_static
Change-Id: If9066fbcd3a5676e7ce785101c2db45daf4b020a
Merged-In: If9066fbcd3a5676e7ce785101c2db45daf4b020a
(cherry picked from commit 24bd00f59fff887e79fd5ef7d89863af19ac50fa)
diff --git a/nn/runtime/test/TestValidateOperations.cpp b/nn/runtime/test/TestValidateOperations.cpp
index 741d001..14c3c76 100644
--- a/nn/runtime/test/TestValidateOperations.cpp
+++ b/nn/runtime/test/TestValidateOperations.cpp
@@ -1383,16 +1383,15 @@
     stridedSliceOpTest(ANEURALNETWORKS_TENSOR_QUANT8_ASYMM);
 }
 
-TEST(OperationValidationTest, ROI_ALIGN_float32) {
+void roiAlignOpTest(int32_t operandCode) {
     uint32_t inDim[] = {1, 4, 4, 1}, roiDim[] = {4, 4}, outShapeDim[] = {2};
     uint32_t outDim[] = {4, 2, 2, 1};
     OperationTestBase roiAlignTest(
             ANEURALNETWORKS_ROI_ALIGN,
-            {getOpType(ANEURALNETWORKS_TENSOR_FLOAT32, 4, inDim),
-             getOpType(ANEURALNETWORKS_TENSOR_FLOAT32, 2, roiDim),
+            {getOpType(operandCode, 4, inDim), getOpType(ANEURALNETWORKS_TENSOR_FLOAT32, 2, roiDim),
              getOpType(ANEURALNETWORKS_TENSOR_INT32, 1, outShapeDim),
              getOpType(ANEURALNETWORKS_FLOAT32), getOpType(ANEURALNETWORKS_INT32)},
-            {getOpType(ANEURALNETWORKS_TENSOR_FLOAT32, 4, outDim)});
+            {getOpType(operandCode, 4, outDim)});
 
     EXPECT_TRUE(roiAlignTest.testMutatingInputOperandCode());
     EXPECT_TRUE(roiAlignTest.testMutatingInputOperandCounts());
@@ -1400,6 +1399,38 @@
     EXPECT_TRUE(roiAlignTest.testMutatingOutputOperandCounts());
 }
 
+TEST(OperationValidationTest, ROI_ALIGN_float32) {
+    roiAlignOpTest(ANEURALNETWORKS_TENSOR_FLOAT32);
+}
+
+TEST(OperationValidationTest, ROI_ALIGN_quant8) {
+    roiAlignOpTest(ANEURALNETWORKS_TENSOR_QUANT8_ASYMM);
+}
+
+void roiPoolingOpTest(int32_t operandCode) {
+    uint32_t inDim[] = {1, 4, 4, 1}, roiDim[] = {4, 4}, outShapeDim[] = {2};
+    uint32_t outDim[] = {4, 2, 2, 1};
+    OperationTestBase roiPoolingTest(
+            ANEURALNETWORKS_ROI_POOLING,
+            {getOpType(operandCode, 4, inDim), getOpType(ANEURALNETWORKS_TENSOR_FLOAT32, 2, roiDim),
+             getOpType(ANEURALNETWORKS_TENSOR_INT32, 1, outShapeDim),
+             getOpType(ANEURALNETWORKS_FLOAT32)},
+            {getOpType(operandCode, 4, outDim)});
+
+    EXPECT_TRUE(roiPoolingTest.testMutatingInputOperandCode());
+    EXPECT_TRUE(roiPoolingTest.testMutatingInputOperandCounts());
+    EXPECT_TRUE(roiPoolingTest.testMutatingOutputOperandCode());
+    EXPECT_TRUE(roiPoolingTest.testMutatingOutputOperandCounts());
+}
+
+TEST(OperationValidationTest, ROI_POOLING_float32) {
+    roiPoolingOpTest(ANEURALNETWORKS_TENSOR_FLOAT32);
+}
+
+TEST(OperationValidationTest, ROI_POOLING_quant8) {
+    roiPoolingOpTest(ANEURALNETWORKS_TENSOR_QUANT8_ASYMM);
+}
+
 TEST(OperationValidationTest, HEATMAP_MAX_KEYPOINT_float32) {
     uint32_t heatmapDim[] = {6, 4, 4, 1}, boxDim[] = {6, 4}, outDim[] = {6, 3, 1};
     OperationTestBase heatmapMaxKeypointTest(