Use value_string for ctrl_type

Use value_string for enum ctrl_type instead of custom code. Add
corresponding unit tests.

Related: OS#1615
Change-Id: Icd4e96dd9f00876cb70b43cfcf42ab4f10311b28
diff --git a/tests/ctrl/ctrl_test.c b/tests/ctrl/ctrl_test.c
new file mode 100644
index 0000000..3bbab76
--- /dev/null
+++ b/tests/ctrl/ctrl_test.c
@@ -0,0 +1,36 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include <stdbool.h>
+
+#include <osmocom/core/utils.h>
+#include <osmocom/ctrl/control_cmd.h>
+
+inline void check_type(enum ctrl_type c)
+{
+	const char *t = get_value_string(ctrl_type_vals, c);
+	int v = get_string_value(ctrl_type_vals, t);
+
+	printf("ctrl type %d is %s ", c, t);
+	if (v < 0)
+		printf("[PARSE FAILED]\n");
+	else
+		printf("-> %d %s\n", v, c != v ? "FAIL" : "OK");
+}
+
+int main(int argc, char **argv)
+{
+	printf("Checking ctrl types...\n");
+
+	check_type(CTRL_TYPE_UNKNOWN);
+	check_type(CTRL_TYPE_GET);
+	check_type(CTRL_TYPE_SET);
+	check_type(CTRL_TYPE_GET_REPLY);
+	check_type(CTRL_TYPE_SET_REPLY);
+	check_type(CTRL_TYPE_TRAP);
+	check_type(CTRL_TYPE_ERROR);
+	check_type(64);
+
+	return 0;
+}