diff options
| author | Daniel Bovensiepen <[email protected]> | 2013-05-08 21:17:08 +0800 |
|---|---|---|
| committer | Daniel Bovensiepen <[email protected]> | 2013-05-08 21:17:08 +0800 |
| commit | 520b0f73bfa4c72aa3ef3f50edfec936d40d31a8 (patch) | |
| tree | 3eb950e81f517fdbb97bbed6e02ca30a60caee69 /test/driver.c | |
| parent | 8e45630896af83ad9ad938ef135f51cfe35f885e (diff) | |
| download | mruby-520b0f73bfa4c72aa3ef3f50edfec936d40d31a8.tar.gz mruby-520b0f73bfa4c72aa3ef3f50edfec936d40d31a8.zip | |
Implement fallback print method for testing environment in case mruby-print GEM wasn't included.
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); |
