[svn:parrot] r39394 - branches/pmc_pct/compilers/vtdumper/t
cotto at svn.parrot.org
cotto at svn.parrot.org
Thu Jun 4 20:57:46 UTC 2009
Author: cotto
Date: Thu Jun 4 20:57:45 2009
New Revision: 39394
URL: https://trac.parrot.org/parrot/changeset/39394
Log:
[vtdumper] add tests for sections, factor out some repeated code
Added:
branches/pmc_pct/compilers/vtdumper/t/02-sections.t
Modified:
branches/pmc_pct/compilers/vtdumper/t/01-functions.t
branches/pmc_pct/compilers/vtdumper/t/common.pir
Modified: branches/pmc_pct/compilers/vtdumper/t/01-functions.t
==============================================================================
--- branches/pmc_pct/compilers/vtdumper/t/01-functions.t Thu Jun 4 20:23:05 2009 (r39393)
+++ branches/pmc_pct/compilers/vtdumper/t/01-functions.t Thu Jun 4 20:57:45 2009 (r39394)
@@ -18,32 +18,21 @@
parse_tests = new ['Hash']
- parse_tests['comments: before function'] =<<"VTABLE"
+ parse_tests['comments: before function'] = <<"VTABLE"
#HAVE A NICE DAY
void do_foo()
VTABLE
- parse_tests['comments: after function'] =<<"VTABLE"
+ parse_tests['comments: after function'] = <<"VTABLE"
void do_foo()
#I've got a lovely bunch of coconuts.
VTABLE
- parse_tests['comments: with function'] =<<"VTABLE"
+ parse_tests['comments: with function'] = <<"VTABLE"
void do_foo() #This is an important function that does important things.
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:
+ test_parse_loop(parse_tests, 0)
.end
@@ -53,66 +42,55 @@
parse_tests = new ['Hash']
- parse_tests['valid: void retval, no args'] =<<"VTABLE"
+ parse_tests['valid: void retval, no args'] = <<"VTABLE"
void do_foo()
VTABLE
- parse_tests['valid: void retval, 1 simple arg'] =<<"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"
+ 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"
+ 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"
+ parse_tests['valid: simple retval, no args'] = <<"VTABLE"
INTVAL do_foo()
VTABLE
- parse_tests['valid: pointer retval, no args'] =<<"VTABLE"
+ parse_tests['valid: pointer retval, no args'] = <<"VTABLE"
PMC* do_foo()
VTABLE
- parse_tests['valid: void pointer retval, no args'] =<<"VTABLE"
+ parse_tests['valid: void pointer retval, no args'] = <<"VTABLE"
void* do_foo()
VTABLE
- parse_tests['valid: alt. pointer retval, no args'] =<<"VTABLE"
+ parse_tests['valid: alt. pointer retval, no args'] = <<"VTABLE"
PMC *do_foo()
VTABLE
- parse_tests['valid: void retval, 1 pointer arg'] =<<"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"
+ 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"
+ 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"
+ 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:
+ test_parse_loop(parse_tests, 0)
.end
@@ -121,49 +99,39 @@
parse_tests = new ['Hash']
- parse_tests['invalid: void void retval'] =<<"VTABLE"
+ parse_tests['invalid: void void retval'] = <<"VTABLE"
void void do_foo()
VTABLE
- parse_tests['invalid: bad pointer retval 1'] =<<"VTABLE"
+ parse_tests['invalid: bad pointer retval 1'] = <<"VTABLE"
*PMC do_foo(INTVAL i)
VTABLE
- parse_tests['invalid: bad pointer retval 2'] =<<"VTABLE"
+ parse_tests['invalid: bad pointer retval 2'] = <<"VTABLE"
PMC *PMC do_foo()
VTABLE
- parse_tests['invalid: unicorns'] =<<"VTABLE"
+ parse_tests['invalid: unicorns'] = <<"VTABLE"
PMC* do_foo(unicorns)
VTABLE
- parse_tests['invalid: bad first arg'] =<<"VTABLE"
+ parse_tests['invalid: bad first arg'] = <<"VTABLE"
PMC *do_foo(PMC*)
VTABLE
- parse_tests['invalid: bad second arg'] =<<"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"
+ 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:
+ test_parse_loop(parse_tests, 1)
.end
+
.sub function_parsing
.local pmc parse_test
@@ -239,7 +207,7 @@
$S0 = do_bar['arguments';1;'identifier']
is($S0, "p2", "do_bar second arg name")
-
+
#test quuxle
#INTVAL1 quuxle(PMC3* p3, PMC4* p4)
@@ -264,9 +232,9 @@
$S0 = quuxle['arguments';1;'identifier']
is($S0, "p4", "quuxle second arg name")
+.end
-.end
# Don't forget to update plan!
# Local Variables:
Added: branches/pmc_pct/compilers/vtdumper/t/02-sections.t
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ branches/pmc_pct/compilers/vtdumper/t/02-sections.t Thu Jun 4 20:57:45 2009 (r39394)
@@ -0,0 +1,112 @@
+#! ../../parrot
+
+.include 't/common.pir'
+
+.sub 'main' :main
+ .include 'test_more.pir'
+ load_bytecode 'vtdumper.pbc'
+
+ plan(13)
+ comments()
+ invalid_sections()
+ section_assignment()
+.end
+
+.sub comments
+ .local pmc parse_tests
+
+ parse_tests = new ['Hash']
+
+ parse_tests['comments: before section'] = <<"VTABLE"
+#HAVE A NICE DAY
+[NICE_DAY]
+VTABLE
+
+ parse_tests['comments: after section'] = <<"VTABLE"
+[COCONUTS]
+#I've got a lovely bunch of coconuts.
+VTABLE
+
+parse_tests['comments: with section'] = <<"VTABLE"
+[VERY_IMPORTANT] #This is an important function that does important things.
+VTABLE
+
+ test_parse_loop(parse_tests, 0)
+
+.end
+
+
+.sub invalid_sections
+ .local pmc parse_tests
+
+ parse_tests = new ['Hash']
+
+ parse_tests['invalid: empty name'] = <<"VTABLE"
+[]
+VTABLE
+
+ parse_tests['invalid: space in name'] = <<"VTABLE"
+[FOO BAR]
+VTABLE
+
+ parse_tests['invalid: non-identifier characters in name'] = <<"VTABLE"
+[FOO*BAR]
+VTABLE
+
+ parse_tests['invalid: non-identifier name'] = <<"VTABLE"
+[???]
+VTABLE
+
+ test_parse_loop(parse_tests, 1)
+
+.end
+
+
+.sub section_assignment
+
+ .local pmc parse_test
+
+ parse_test = new ['String']
+
+ parse_test = <<"VTABLE"
+void in_main()
+[BOGUS]
+[HAPPY]
+INTVAL pants(PMC* p)
+[STRANGE]
+INTVAL attraction()
+VTABLE
+
+ .local pmc emitter, past, node
+ .local string section, name
+ (emitter, past) = get_emitter_and_capture(parse_test, "past")
+
+ node = past[0]
+ name = node['name']
+ section = node['section']
+ is(name, 'in_main', 'in_main has expected name')
+ is(section, 'MAIN', 'in_main is in MAIN section by default')
+
+ node = past[1]
+ name = node['name']
+ section = node['section']
+ is(name, 'pants', 'pants has expected name')
+ is(section, 'HAPPY', 'pants are HAPPY')
+
+ node = past[2]
+ name = node['name']
+ section = node['section']
+ is(name, 'attraction', 'attraction has expected name')
+ is(section, 'STRANGE', 'attraction is in STRANGE section')
+
+
+.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:
Modified: branches/pmc_pct/compilers/vtdumper/t/common.pir
==============================================================================
--- branches/pmc_pct/compilers/vtdumper/t/common.pir Thu Jun 4 20:23:05 2009 (r39393)
+++ branches/pmc_pct/compilers/vtdumper/t/common.pir Thu Jun 4 20:57:45 2009 (r39394)
@@ -2,6 +2,29 @@
=cut
+.sub test_parse_loop
+ .param pmc hash
+ .param int expect_fail
+
+ .local pmc it, key
+ .local string vtable, test_result
+
+ it = iter hash
+ iter_loop:
+ unless it goto iter_done
+ key = shift it
+ vtable = hash[key]
+ test_result = 'test_parse_one'(vtable)
+ if expect_fail == 1 goto test_isnt
+ is(test_result, '', key)
+ goto iter_loop
+ test_isnt:
+ isnt(test_result, '', key)
+ goto iter_loop
+ iter_done:
+.end
+
+
.sub test_parse_one
.param string vtable
.local pmc compiler
More information about the parrot-commits
mailing list