fix codetest failure - ASSERT_ARGS does not have a ; after and
[parrot.git] / t / pmc / packfilerawsegment.t
blobe902f48706416470b69936a9d112d673076a1a69
1 #!./parrot
2 # Copyright (C) 2009-2010, Parrot Foundation.
3 # $Id$
5 =head1 NAME
7 t/pmc/packfilerawsegment.t - test the PackfileRawSegment PMC
10 =head1 SYNOPSIS
12     % make test_prep
13     % prove t/pmc/packfilerawsegment.t
15 =head1 DESCRIPTION
17 Tests the PackfileRawSegment PMC.
19 =cut
21 # Having some known data would be helpful, here.  For now, just make sure
22 # the value returned by elements() is greater than zero, and that
23 # get_integer_keyed_int doesn't return all zeroes either.
25 .include 't/pmc/testlib/packfile_common.pir'
26 .include 'packfile_segments.pasm'
27 .sub 'main' :main
28 .include 'test_more.pir'
29     plan(7)
30     test_elements()
31     test_get_integer()
32     test_push_integer()
33     test_type()
34 .end
36 # PackfileRawSegment.elements
37 .sub 'test_elements'
38     .local pmc pf, pfdir, pfseg
39     push_eh load_error
40     pf    = _pbc()
41     pop_eh
42     pfdir = pf.'get_directory'()
43     pfseg = '_find_segment_by_prefix'(pf, 'BYTECODE')
44     $I0   = elements pfseg
45     ok($I0, 'PackfileRawSegment contains some data')
46     .return()
47 load_error:
48     .get_results($P0)
49     pop_eh
50     report_load_error($P0, 'PackfileRawSegment contains some data')
51     .return()
52 .end
54 # PackfileRawSegment.get_integer_keyed_int
55 .sub 'test_get_integer'
56     .local pmc pf, pfdir, pfseg
57     push_eh load_error
58     pf    = _pbc()
59     pop_eh
60     pfdir = pf.'get_directory'()
61     pfseg = '_find_segment_by_prefix'(pf, 'BYTECODE')
63     $I0   = 0
64     $I1   = pfseg[0]
65     $I0   = $I0 + $I1
66     $I1   = pfseg[1]
67     $I0   = $I0 + $I1
68     $I1   = pfseg[2]
69     $I0   = $I0 + $I1
70     $I1   = pfseg[3]
71     $I0   = $I0 + $I1
72     $I1   = pfseg[4]
73     $I0   = $I0 + $I1
74     ok($I0, "PackfileRawSegment.get_integer_keyed_int returns some data")
75     .return()
76 load_error:
77     .get_results($P0)
78     pop_eh
79     report_load_error($P0, "PackfileRawSegment.get_integer_keyed_int returns some data")
80     .return()
81 .end
83 # PackfileRawSegment.push_integer
84 .sub 'test_push_integer'
85     .local pmc pfseg
86     pfseg = new ['PackfileRawSegment']
88     push pfseg, 0x1d1
89     push pfseg, 0x002
90     $I0 = pfseg[0]
91     is($I0, 0x1d1, "PackfileRawSegment.push_integer (1)")
92     $I0 = pfseg[1]
93     is($I0, 0x002, "PackfileRawSegment.push_integer (2)")
94 .end
96 # PackfileRawSegment.type
97 .sub 'test_type'
98     .local pmc pf, pfdir, pfseg, hash, it
99     push_eh load_error
100     pf    = _pbc()
101     pop_eh
102     pfdir = pf.'get_directory'()
103     hash  = new ['Hash']
104     # annotations.pbc contains all available segments. -1 for directory and unknown.
105     # So, in hash we should have 5 elements.
106     it = iter pfdir
107   loop:
108     unless it goto done
109     $S0 = shift it
110     $P0 = pfdir[$S0]
111     $I0 = $P0.'type'()
112     hash[$I0] = 1
113     goto loop
115   done:
116     $I0 = elements hash
117     is($I0, 4, "Got all types of Packfile segments")
119     # Now create RawSegment and set type.
120     $P0 = new ['PackfileRawSegment']
121     $I0 = $P0.'type'()
122     is($I0, .PF_BYTEC_SEG, "Default type is PF_BYTEC_SEG")
124     $P0.'type'(.PF_DEBUG_SEG)
125     $I0 = $P0.'type'()
126     is($I0, .PF_DEBUG_SEG, "Type successfully changed")
127     .return()
128 load_error:
129     .get_results($P0)
130     pop_eh
131     report_load_error($P0, "can't run test_type tests")
132     skip(2, "can't run test_type tests")
133     .return()
134 .end
137 # Local Variables:
138 #   mode: pir
139 #   fill-column: 100
140 # End:
141 # vim: expandtab shiftwidth=4 ft=pir: