diff options
Diffstat (limited to 'test/driver.c')
| -rw-r--r-- | test/driver.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/test/driver.c b/test/driver.c index a55e1180f..8105dca73 100644 --- a/test/driver.c +++ b/test/driver.c @@ -14,6 +14,7 @@ #include <mruby/proc.h> #include <mruby/data.h> #include <mruby/compile.h> +#include <mruby/string.h> #include <mruby/variable.h> void @@ -59,6 +60,32 @@ eval_test(mrb_state *mrb) return EXIT_SUCCESS; } +static void +t_printstr(mrb_state *mrb, mrb_value obj) +{ + struct RString *str; + char *s; + int len; + + if (mrb_string_p(obj)) { + str = mrb_str_ptr(obj); + s = str->ptr; + len = str->len; + fwrite(s, len, 1, stdout); + } +} + +mrb_value +mrb_t_printstr(mrb_state *mrb, mrb_value self) +{ + mrb_value argv; + + mrb_get_args(mrb, "o", &argv); + t_printstr(mrb, argv); + + return argv; +} + int main(int argc, char **argv) { @@ -79,6 +106,10 @@ main(int argc, char **argv) mrb_gv_set(mrb, mrb_intern(mrb, "$mrbtest_verbose"), mrb_true_value()); } + struct RClass *krn; + krn = mrb->kernel_module; + mrb_define_method(mrb, krn, "__t_printstr__", mrb_t_printstr, MRB_ARGS_REQ(1)); + mrb_init_mrbtest(mrb); ret = eval_test(mrb); mrb_close(mrb); |
