tests: vty: Extend test to do some numeric range validations

As per current status, the numeric tests are expected to fail due to a
couple bugs which will be fixed in next commits.

Change-Id: Id5b17bd96d7af4ed9a77ebbea0e6be4b0fcbde6c
diff --git a/tests/vty/vty_test.c b/tests/vty/vty_test.c
index 9627b6d..7146a1d 100644
--- a/tests/vty/vty_test.c
+++ b/tests/vty/vty_test.c
@@ -22,6 +22,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <errno.h>
+#include <limits.h>
 
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -438,6 +439,19 @@
 	return CMD_WARNING;
 }
 
+DEFUN(cfg_numeric_range, cfg_numeric_range_cmd,
+#if ULONG_MAX == 18446744073709551615UL
+	"numeric-range <0-18446744073709551615>",
+#else
+	"numeric-range <0-4294967295>",
+#endif
+	"testing numeric range\n"
+	"the numeric range\n")
+{
+	printf("Called: 'return-success'\n");
+	return CMD_SUCCESS;
+}
+
 void test_vty_add_cmds()
 {
 	install_element(CONFIG_NODE, &cfg_ret_warning_cmd);
@@ -461,6 +475,8 @@
 	install_element_ve(&cfg_ambiguous_nr_2_cmd);
 	install_element_ve(&cfg_ambiguous_str_1_cmd);
 	install_element_ve(&cfg_ambiguous_str_2_cmd);
+
+	install_element_ve(&cfg_numeric_range_cmd);
 }
 
 void test_is_cmd_ambiguous()
@@ -482,6 +498,21 @@
 	destroy_test_vty(&test, vty);
 }
 
+void test_numeric_range()
+{
+	struct vty *vty;
+	struct vty_test test;
+
+	printf("Going to test test_numeric_range()\n");
+	vty = create_test_vty(&test);
+
+	OSMO_ASSERT(do_vty_command(vty, "numeric-range 0") == CMD_ERR_NO_MATCH);
+	OSMO_ASSERT(do_vty_command(vty, "numeric-range 40000") == CMD_ERR_NO_MATCH);
+	OSMO_ASSERT(do_vty_command(vty, "numeric-range -400000") == CMD_ERR_NO_MATCH);
+
+	destroy_test_vty(&test, vty);
+}
+
 int main(int argc, char **argv)
 {
 	struct vty_app_info vty_info = {
@@ -535,6 +566,8 @@
 
 	test_is_cmd_ambiguous();
 
+	test_numeric_range();
+
 	/* Leak check */
 	OSMO_ASSERT(talloc_total_blocks(stats_ctx) == 1);