fix codetest failure - ASSERT_ARGS does not have a ; after and
[parrot.git] / t / pmc / lexinfo.t
bloba65ec236fe7e4ca60c612c78b82fa2f85c83f337
1 #!./parrot
2 # Copyright (C) 2006-2010, Parrot Foundation.
3 # $Id$
5 =head1 NAME
7 t/pmc/lexinfo.t - test LexInfo PMC
10 =head1 SYNOPSIS
12     % prove t/pmc/lexinfo.t
14 =head1 DESCRIPTION
16 Tests the LexInfo PMC.
18 =cut
20 .include 'except_types.pasm'
22 .sub main :main
23     .include 'test_more.pir'
24     plan(5)
26     inspect_test()
27     inspect_invalid_test()
28     declare_lex_preg_test()
29 .end
31 .sub inspect_test
32     .lex "$a", $P0
33     .lex "$b", $P1
35     $P2 = new 'ParrotInterpreter'
36     $P2 = $P2['sub']
37     $P2 = $P2.'get_lexinfo'()
38     $P2 = inspect $P2, 'symbols'
39     $I0 = elements $P2
40     is($I0, 2, "correct number of symbol in introspection hash")
42     .local int have_a, have_b
43     have_a = 0
44     have_b = 0
45     $S0 = $P2[0]
46     if $S0 != "$a" goto not_a_1
47     inc have_a
48   not_a_1:
49     if $S0 != "$b" goto not_b_1
50     inc have_b
51   not_b_1:
53     $S0 = $P2[1]
54     if $S0 != "$a" goto not_a_2
55     inc have_a
56   not_a_2:
57     if $S0 != "$b" goto not_b_2
58     inc have_b
59   not_b_2:
61     is(have_a, 1, "$a symbol was in list")
62     is(have_b, 1, "$b symbol was in list")
63 .end
65 .sub inspect_invalid_test
66     .local pmc li, in, ex
67     .local int r, type
68     li = new ['LexInfo']
69     r = 0
70     push_eh catch
71     in = inspect li, 'fubar'
72     goto done
73   catch:
74     .get_results(ex)
75     type = ex['type']
76     r = iseq type, .EXCEPTION_INVALID_OPERATION
77   done:
78     ok(r, 'invalid introspection key throws as expected')
79 .end
81 .sub declare_lex_preg_test
82     .const string preg_name = 'foo'
83     .const int preg_value = 42
84     .local pmc li
85     li = new ['LexInfo']
86     li.'declare_lex_preg'(preg_name, preg_value)
87     .local int r
88     r = li[preg_name]
89     is(r, preg_value, 'declare_lex_preg method')
90 .end
92 # Local Variables:
93 #   mode: pir
94 #   fill-column: 100
95 # End:
96 # vim: expandtab shiftwidth=4 ft=pir: