[svn:parrot] r39392 - branches/pmc_pct/compilers/vtdumper/t

cotto at svn.parrot.org cotto at svn.parrot.org
Thu Jun 4 17:59:50 UTC 2009


Author: cotto
Date: Thu Jun  4 17:59:49 2009
New Revision: 39392
URL: https://trac.parrot.org/parrot/changeset/39392

Log:
[vtdumper] start writing some tests

Added:
   branches/pmc_pct/compilers/vtdumper/t/01-functions.t
   branches/pmc_pct/compilers/vtdumper/t/common.pir
   branches/pmc_pct/compilers/vtdumper/t/harness

Added: branches/pmc_pct/compilers/vtdumper/t/01-functions.t
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/vtdumper/t/01-functions.t	Thu Jun  4 17:59:49 2009	(r39392)
@@ -0,0 +1,137 @@
+#! ../../parrot
+
+.include 't/common.pir'
+
+.sub 'main' :main
+    .include 'test_more.pir'
+    load_bytecode 'vtdumper.pbc'
+
+    plan(19)
+    valid_functions()
+    invalid_functions()
+.end
+
+.sub valid_functions
+    .local pmc parse_tests
+
+    parse_tests = new ['Hash']
+
+    parse_tests['valid: void retval, no args'] =<<"VTABLE"
+void do_foo()
+VTABLE
+
+    parse_tests['valid: void retval, 1 simple arg'] =<<"VTABLE"
+void do_foo(INTVAL i)
+VTABLE
+
+    parse_tests['valid: void retval, 2 simple args'] =<<"VTABLE"
+void do_foo(INTVAL i, FLOATVAL j)
+VTABLE
+
+    parse_tests['valid: void retval, 3 simple args'] =<<"VTABLE"
+void do_foo(FLOATVAL f, INTVAL i, INTVAL j)
+VTABLE
+
+    parse_tests['valid: simple retval, no args'] =<<"VTABLE"
+INTVAL do_foo()
+VTABLE
+
+    parse_tests['valid: pointer retval, no args'] =<<"VTABLE"
+PMC* do_foo()
+VTABLE
+
+    parse_tests['valid: void pointer retval, no args'] =<<"VTABLE"
+void* do_foo()
+VTABLE
+
+    parse_tests['valid: alt. pointer retval, no args'] =<<"VTABLE"
+PMC *do_foo()
+VTABLE
+
+    parse_tests['valid: void retval, 1 pointer arg'] =<<"VTABLE"
+void do_foo(PMC *p)
+VTABLE
+
+    parse_tests['valid: void retval, 2 pointer args'] =<<"VTABLE"
+void do_foo(PMC *p, STRING* s)
+VTABLE
+
+    parse_tests['valid: void retval, 3 pointer args'] =<<"VTABLE"
+void do_foo(PMC *p, STRING *s, void *s)
+VTABLE
+
+    parse_tests['valid: pointer retval, mixed args 1'] =<<"VTABLE"
+PMC* do_foo(INTVAL i, PMC* p, STRING* s)
+VTABLE
+
+    .local pmc it, key
+    .local string vtable, test_result
+
+    it = iter parse_tests
+  iter_loop:
+    unless it goto iter_done
+    key = shift it
+    vtable = parse_tests[key]
+    test_result = 'test_parse_one'(vtable)
+    is(test_result, '', key)
+    goto iter_loop
+  iter_done:
+
+.end
+
+.sub invalid_functions
+    .local pmc parse_tests
+
+    parse_tests = new ['Hash']
+
+    parse_tests['invalid: void void retval'] =<<"VTABLE"
+void void do_foo()
+VTABLE
+
+    parse_tests['invalid: bad pointer retval 1'] =<<"VTABLE"
+*PMC do_foo(INTVAL i)
+VTABLE
+
+    parse_tests['invalid: bad pointer retval 2'] =<<"VTABLE"
+PMC *PMC do_foo()
+VTABLE
+
+    parse_tests['invalid: unicorns'] =<<"VTABLE"
+PMC* do_foo(unicorns)
+VTABLE
+
+    parse_tests['invalid: bad first arg'] =<<"VTABLE"
+PMC *do_foo(PMC*)
+VTABLE
+
+    parse_tests['invalid: bad second arg'] =<<"VTABLE"
+PMC *do_foo(INTVAL i, k, INTVAL q)
+VTABLE
+
+    parse_tests['invalid: space in function name'] =<<"VTABLE"
+PMC *do foo()
+VTABLE
+
+    .local pmc it, key
+    .local string vtable, test_result
+
+    it = iter parse_tests
+  iter_loop:
+    unless it goto iter_done
+    key = shift it
+    vtable = parse_tests[key]
+    test_result = 'test_parse_one'(vtable)
+    isnt(test_result, '', key)
+    goto iter_loop
+  iter_done:
+
+.end
+
+# Don't forget to update plan!
+
+# Local Variables:
+#   mode: cperl
+#   cperl-indent-level: 4
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Added: branches/pmc_pct/compilers/vtdumper/t/common.pir
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/vtdumper/t/common.pir	Thu Jun  4 17:59:49 2009	(r39392)
@@ -0,0 +1,55 @@
+=head1 COMMON FUNCTIONS FOR TESTING
+
+=cut
+
+.sub 'test_parse_one'
+    .param string vtable
+    .local pmc compiler
+    compiler = compreg 'VTable'
+    push_eh fail
+    compiler.'parse'(vtable, 'target'=>'parse')
+    pop_eh
+    .return ('')
+
+  fail:
+    .local pmc ex
+    .local string ex_type, ex_msg, ret_val
+    .get_results(ex)
+    pop_eh
+    ex_type = typeof ex
+    ex_msg = ex
+    ret_val = concat ex_type, ': '
+    ret_val = concat ret_val, ex_msg
+    .return (ret_val)
+.end
+
+
+.sub get_emitter_and_capture
+    .param string name
+    .param string source
+    .param string target
+
+    .local pmc compiler, emitter, capture
+    compiler = compreg 'VTable'
+    capture = compiler.'compile'(source, 'target'=> target)
+
+    emitter = new ['PMC'; 'Emitter']
+    emitter.'set_filename'(name)
+    .return (emitter, capture)
+.end
+
+
+.sub '_slurp'
+    .param string file
+    .local pmc pio
+    pio  = open file
+    $S0  = pio.'readall'()
+    close pio
+    .return ($S0)
+.end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:

Added: branches/pmc_pct/compilers/vtdumper/t/harness
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ branches/pmc_pct/compilers/vtdumper/t/harness	Thu Jun  4 17:59:49 2009	(r39392)
@@ -0,0 +1,8 @@
+#!/usr/bin/perl
+
+# $Id$
+
+use FindBin;
+use lib qw( . lib ../lib ../../lib ../../lib );
+use Parrot::Test::Harness language => 'vtable', verbosity => 0;
+


More information about the parrot-commits mailing list