aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/test-qapi-util.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/test-qapi-util.c b/tests/test-qapi-util.c
index 39db8bfa14..e8697577a5 100644
--- a/tests/test-qapi-util.c
+++ b/tests/test-qapi-util.c
@@ -42,10 +42,44 @@ static void test_qapi_enum_parse(void)
g_assert_cmpint(ret, ==, QTYPE__MAX - 1);
}
+static void test_parse_qapi_name(void)
+{
+ int ret;
+
+ /* Must start with a letter */
+ ret = parse_qapi_name("a", true);
+ g_assert(ret == 1);
+ ret = parse_qapi_name("a$", false);
+ g_assert(ret == 1);
+ ret = parse_qapi_name("", false);
+ g_assert(ret == -1);
+ ret = parse_qapi_name("1", false);
+ g_assert(ret == -1);
+
+ /* Only letters, digits, hyphen, underscore */
+ ret = parse_qapi_name("A-Za-z0-9_", true);
+ g_assert(ret == 10);
+ ret = parse_qapi_name("A-Za-z0-9_$", false);
+ g_assert(ret == 10);
+ ret = parse_qapi_name("A-Za-z0-9_$", true);
+ g_assert(ret == -1);
+
+ /* __RFQDN_ */
+ ret = parse_qapi_name("__com.redhat_supports", true);
+ g_assert(ret == 21);
+ ret = parse_qapi_name("_com.example_", false);
+ g_assert(ret == -1);
+ ret = parse_qapi_name("__com.example", false);
+ g_assert(ret == -1);
+ ret = parse_qapi_name("__com.example_", false);
+ g_assert(ret == -1);
+}
+
int main(int argc, char *argv[])
{
g_test_init(&argc, &argv, NULL);
g_test_add_func("/qapi/util/qapi_enum_parse", test_qapi_enum_parse);
+ g_test_add_func("/qapi/util/parse_qapi_name", test_parse_qapi_name);
g_test_run();
return 0;
}