Add myself to credits.
[tapir.git] / lib / Tapir / Stream.pir
blob0e8ab190a218d4f64becedaaacecce4f4763f707
1 # Copyright (C) 2009, Jonathan "Duke" Leto <jonathan@leto.net>
3 .namespace [ 'Tapir'; 'Stream' ]
5 # 06:28:33 <@chromatic> :load executes only when loading from bytecode.
6 # 06:28:48 <@chromatic> :init executes right after compilation.
7 # 06:29:17 <@chromatic> The effects of :init should be frozen into PBC.
8 # 06:37:26 <@chromatic> :anon :init trips the "Do something special with bytecode" magic.
10 .sub _initialize :load :anon
11     .local pmc klass
13     klass  = newclass [ 'Tapir'; 'Stream' ]
14     klass.'add_attribute'('ordered')
15     klass.'add_attribute'('pass')
16     klass.'add_attribute'('fail')
17     klass.'add_attribute'('skip')
18     klass.'add_attribute'('todo')
19     klass.'add_attribute'('plan')
20     klass.'add_attribute'('exit_code')
21 .end
23 .sub is_pass :method
24     .local pmc fail
25     fail = getattribute self, "fail"
26     if fail goto failz
28     .local pmc exit_code
29     exit_code = self."get_exit_code"()
30     if exit_code goto failz
32     .local pmc skip, pass, todo, plan, ordered
33     ordered = self."get_ordered"()
34     unless ordered goto disorder
36     skip  = self."get_skip"()
37     pass  = self."get_pass"()
38     todo  = self."get_todo"()
39     plan  = self."get_plan"()
40     $P0   = pass + todo
41     $P0  += skip
43     $I1  = plan == $P0
44     .return( $I1 )
45   disorder:
46   failz:
47     .return( 0 )
48 .end
50 .sub set_exit_code :method
51     .param pmc exit_code
52     setattribute self, "exit_code", exit_code
53 .end
55 .sub set_ordered :method
56     .param pmc ordered
57     setattribute self, "ordered", ordered
58 .end
60 .sub set_pass :method
61     .param pmc pass
62     setattribute self, "pass", pass
63 .end
65 .sub set_fail :method
66     .param pmc fail
67     setattribute self, "fail", fail
68 .end
70 .sub set_todo :method
71     .param pmc todo
72     setattribute self, "todo", todo
73 .end
75 .sub set_skip :method
76     .param pmc skip
77     setattribute self, "skip", skip
78 .end
80 .sub set_plan :method
81     .param pmc plan
82     setattribute self, "plan", plan
83 .end
85 .sub get_exit_code :method
86     .local pmc exit_code
87     exit_code = getattribute self, "exit_code"
88     .return( exit_code )
89 .end
91 .sub get_ordered :method
92     .local pmc ordered
93     ordered = getattribute self, "ordered"
94     .return( ordered )
95 .end
97 .sub get_pass :method
98     .local pmc pass
99     pass = getattribute self, "pass"
100     .return( pass )
101 .end
103 .sub get_fail :method
104     .local pmc fail
105     fail = getattribute self, "fail"
106     .return( fail )
107 .end
109 .sub get_todo :method
110     .local pmc todo
111     todo = getattribute self, "todo"
112     .return( todo )
113 .end
115 .sub get_skip :method
116     .local pmc skip
117     skip = getattribute self, "skip"
118     .return( skip )
119 .end
121 .sub get_plan :method
122     .local pmc plan
123     plan = getattribute self, "plan"
124     .return( plan )
125 .end
127 .sub total :method
128     .local pmc skip, pass, fail, todo
129     skip = getattribute self, "skip"
130     pass = getattribute self, "pass"
131     fail = getattribute self, "fail"
132     todo = getattribute self, "todo"
133     $P0  = pass + fail
134     $P0 += todo
135     $P0 += skip
136     .return( $P0 )
137 .end
140 # Local Variables:
141 #   mode: pir
142 #   fill-column: 100
143 # End:
144 # vim: expandtab shiftwidth=4 ft=pir: