[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