summaryrefslogtreecommitdiff
path: root/test-suite/standalone/test-scm-c-bind-keyword-arguments.c
diff options
context:
space:
mode:
Diffstat (limited to 'test-suite/standalone/test-scm-c-bind-keyword-arguments.c')
-rw-r--r--test-suite/standalone/test-scm-c-bind-keyword-arguments.c65
1 files changed, 48 insertions, 17 deletions
diff --git a/test-suite/standalone/test-scm-c-bind-keyword-arguments.c b/test-suite/standalone/test-scm-c-bind-keyword-arguments.c
index 6fcf82180..ad0722ce8 100644
--- a/test-suite/standalone/test-scm-c-bind-keyword-arguments.c
+++ b/test-suite/standalone/test-scm-c-bind-keyword-arguments.c
@@ -25,20 +25,6 @@
#include <assert.h>
static SCM
-error_handler (void *data, SCM key, SCM args)
-{
- SCM expected_args = scm_list_n (scm_from_utf8_string ("test"),
- scm_from_utf8_string ((char *) data),
- SCM_EOL, SCM_BOOL_F,
- SCM_UNDEFINED);
-
- assert (scm_is_eq (key, scm_from_utf8_symbol ("keyword-argument-error")));
- assert (scm_is_true (scm_equal_p (args, expected_args)));
-
- return SCM_BOOL_T;
-}
-
-static SCM
test_unrecognized_keyword (void *data)
{
SCM k_foo = scm_from_utf8_keyword ("foo");
@@ -58,6 +44,21 @@ test_unrecognized_keyword (void *data)
}
static SCM
+unrecognized_keyword_error_handler (void *data, SCM key, SCM args)
+{
+ SCM expected_args = scm_list_n
+ (scm_from_utf8_string ("test"),
+ scm_from_utf8_string ("Unrecognized keyword"),
+ SCM_EOL, scm_list_1 (scm_from_utf8_keyword ("baz")),
+ SCM_UNDEFINED);
+
+ assert (scm_is_eq (key, scm_from_utf8_symbol ("keyword-argument-error")));
+ assert (scm_is_true (scm_equal_p (args, expected_args)));
+
+ return SCM_BOOL_T;
+}
+
+static SCM
test_invalid_keyword (void *data)
{
SCM k_foo = scm_from_utf8_keyword ("foo");
@@ -76,6 +77,21 @@ test_invalid_keyword (void *data)
}
static SCM
+invalid_keyword_error_handler (void *data, SCM key, SCM args)
+{
+ SCM expected_args = scm_list_n
+ (scm_from_utf8_string ("test"),
+ scm_from_utf8_string ("Invalid keyword"),
+ SCM_EOL, scm_list_1 (SCM_INUM0),
+ SCM_UNDEFINED);
+
+ assert (scm_is_eq (key, scm_from_utf8_symbol ("keyword-argument-error")));
+ assert (scm_is_true (scm_equal_p (args, expected_args)));
+
+ return SCM_BOOL_T;
+}
+
+static SCM
test_odd_length (void *data)
{
SCM k_foo = scm_from_utf8_keyword ("foo");
@@ -93,6 +109,21 @@ test_odd_length (void *data)
assert (0);
}
+static SCM
+odd_length_error_handler (void *data, SCM key, SCM args)
+{
+ SCM expected_args = scm_list_n
+ (scm_from_utf8_string ("test"),
+ scm_from_utf8_string ("Odd length of keyword argument list"),
+ SCM_EOL, SCM_BOOL_F,
+ SCM_UNDEFINED);
+
+ assert (scm_is_eq (key, scm_from_utf8_symbol ("keyword-argument-error")));
+ assert (scm_is_true (scm_equal_p (args, expected_args)));
+
+ return SCM_BOOL_T;
+}
+
static void
test_scm_c_bind_keyword_arguments ()
{
@@ -174,17 +205,17 @@ test_scm_c_bind_keyword_arguments ()
/* Test unrecognized keyword error. */
scm_internal_catch (SCM_BOOL_T,
test_unrecognized_keyword, NULL,
- error_handler, "Unrecognized keyword");
+ unrecognized_keyword_error_handler, NULL);
/* Test invalid keyword error. */
scm_internal_catch (SCM_BOOL_T,
test_invalid_keyword, NULL,
- error_handler, "Invalid keyword");
+ invalid_keyword_error_handler, NULL);
/* Test odd length error. */
scm_internal_catch (SCM_BOOL_T,
test_odd_length, NULL,
- error_handler, "Odd length of keyword argument list");
+ odd_length_error_handler, NULL);
}
static void