[1/2] cl: make use of subtest for clGetKernelArgInfo

Submitted by Serge Martin on Nov. 27, 2016, 1:54 p.m.

Details

Message ID 1480254864-14570-1-git-send-email-edb+piglit@sigluy.net
State New
Headers show
Series "Series without cover letter" ( rev: 1 ) in Piglit

Not browsing as part of any series.

Commit Message

Serge Martin Nov. 27, 2016, 1:54 p.m.
also fix wording and remove a comment
---
 tests/cl/api/get-kernel-arg-info.c | 49 ++++++++++++++++++++++----------------
 1 file changed, 29 insertions(+), 20 deletions(-)

Patch hide | download patch | download mbox

diff --git a/tests/cl/api/get-kernel-arg-info.c b/tests/cl/api/get-kernel-arg-info.c
index 7b34724..7b336e4 100644
--- a/tests/cl/api/get-kernel-arg-info.c
+++ b/tests/cl/api/get-kernel-arg-info.c
@@ -53,6 +53,12 @@  PIGLIT_CL_API_TEST_CONFIG_BEGIN
 
 PIGLIT_CL_API_TEST_CONFIG_END
 
+static void
+set_failure(enum piglit_result *result, const char* sub_name)
+{
+	piglit_merge_result(result, PIGLIT_FAIL);
+	piglit_report_subtest_result(PIGLIT_FAIL, "%s", sub_name);
+}
 
 enum piglit_result
 piglit_cl_test(const int argc,
@@ -88,7 +94,8 @@  piglit_cl_test(const int argc,
 
 	/*** Normal usage ***/
 	for(i = 0; i < num_kernel_arg_infos; ++i) {
-		printf("%s\n", piglit_cl_get_enum_name(kernel_arg_infos[i]));
+		const char* enum_name = piglit_cl_get_enum_name(kernel_arg_infos[i]);
+		printf("%s\n", enum_name);
 
 		param_value_size = 0;
 		ret_value_size = 0;
@@ -102,16 +109,15 @@  piglit_cl_test(const int argc,
 		if(!piglit_cl_check_error(errNo, CL_SUCCESS)) {
 			fprintf(stderr,
 			        "Failed (error code: %s): Get size of %s.\n",
-			        piglit_cl_get_error_name(errNo),
-			        piglit_cl_get_enum_name(kernel_arg_infos[i]));
-			piglit_merge_result(&result, PIGLIT_FAIL);
+			        piglit_cl_get_error_name(errNo), enum_name);
+			set_failure(&result, enum_name);
 			continue;
 		}
 
 		if (param_value_size > BUFFER_SIZE) {
 			fprintf(stderr,
-			        "Failed: BUFFER_SIZE is too low\n");
-			piglit_merge_result(&result, PIGLIT_FAIL);
+			        "Failed: BUFFER_SIZE is too small\n");
+			set_failure(&result, enum_name);
 			continue;
 		}
 
@@ -124,16 +130,15 @@  piglit_cl_test(const int argc,
 		if(!piglit_cl_check_error(errNo, CL_SUCCESS)) {
 			fprintf(stderr,
 			        "Failed (error code: %s): Get value of %s.\n",
-			        piglit_cl_get_error_name(errNo),
-			        piglit_cl_get_enum_name(kernel_arg_infos[i]));
-			piglit_merge_result(&result, PIGLIT_FAIL);
+			        piglit_cl_get_error_name(errNo), enum_name);
+			set_failure(&result, enum_name);
 			continue;
 		}
 
 		if (param_value_size != ret_value_size) {
 			fprintf(stderr,
 			        "Failed: the returned size doesn't matches the queried one\n");
-			piglit_merge_result(&result, PIGLIT_FAIL);
+			set_failure(&result, enum_name);
 			continue;
 		}
 
@@ -160,13 +165,17 @@  piglit_cl_test(const int argc,
 			fprintf(stderr,
 			        "Failed: the returned size doesn't matches. Expected %lu, got %lu\n",
 			        expected_size, ret_value_size);
-		piglit_merge_result(&result, PIGLIT_FAIL);
+			set_failure(&result, enum_name);
+			continue;
 		}
 
-	//TODO: test returned values
+		//TODO: test returned values
+
+		piglit_report_subtest_result(PIGLIT_PASS, "%s", enum_name);
 	}
 
 	/*** Errors ***/
+	enum piglit_result input_check_result = PIGLIT_PASS;
 
 	/*
 	* CL_INVALID_ARG_INDEX if arg_indx is not a valid argument index.
@@ -181,7 +190,7 @@  piglit_cl_test(const int argc,
 		fprintf(stderr,
 		        "Failed (error code: %s): Trigger CL_INVALID_ARG_INDEX if arg_indx is not a valid argument index.\n",
 		        piglit_cl_get_error_name(errNo));
-	piglit_merge_result(&result, PIGLIT_FAIL);
+		piglit_merge_result(&input_check_result, PIGLIT_FAIL);
 	}
 
 	/*
@@ -200,7 +209,7 @@  piglit_cl_test(const int argc,
 		fprintf(stderr,
 		        "Failed (error code: %s): Trigger CL_INVALID_VALUE if param_name is not one of the supported values.\n",
 		        piglit_cl_get_error_name(errNo));
-	piglit_merge_result(&result, PIGLIT_FAIL);
+		piglit_merge_result(&input_check_result, PIGLIT_FAIL);
 	}
 
 	errNo = clGetKernelArgInfo(kernel,
@@ -213,16 +222,13 @@  piglit_cl_test(const int argc,
 		fprintf(stderr,
 		        "Failed (error code: %s): Trigger CL_INVALID_VALUE if size in bytes specified by param_value is less than size of return type and param_value is not a NULL value.\n",
 	           piglit_cl_get_error_name(errNo));
-	piglit_merge_result(&result, PIGLIT_FAIL);
+		piglit_merge_result(&input_check_result, PIGLIT_FAIL);
 	}
 
 	/*
 	* CL_KERNEL_ARG_INFO_NOT_AVAILABLE
 	* if the argument information is not available for kernel.
 	*/
-	/*
-	* Note that PoCL, AMD and Intel libs always return arg info.
-	*/
 	{
 	char* strings[] = { "kernel void dummy_kernel(int param_a) {}" };
 
@@ -242,7 +248,7 @@  piglit_cl_test(const int argc,
 		fprintf(stderr,
 	           "Failed (error code: %s): Trigger CL_KERNEL_ARG_INFO_NOT_AVAILABLE if the argument information is not available for kernel.\n",
 	           piglit_cl_get_error_name(errNo));
-	piglit_merge_result(&result, PIGLIT_FAIL);
+		piglit_merge_result(&input_check_result, PIGLIT_FAIL);
 	}
 
 	clReleaseKernel(kern);
@@ -262,9 +268,12 @@  piglit_cl_test(const int argc,
 		fprintf(stderr,
 		        "Failed (error code: %s): Trigger CL_INVALID_KERNEL if kernel is not a valid kernel object.\n",
 		        piglit_cl_get_error_name(errNo));
-	piglit_merge_result(&result, PIGLIT_FAIL);
+		piglit_merge_result(&input_check_result, PIGLIT_FAIL);
 	}
 
+	piglit_report_subtest_result(input_check_result, "Input checks");
+	piglit_merge_result(&result, input_check_result);
+
 	clReleaseKernel(kernel);
 
 	return result;