@@ -133,4 +133,103 @@ mod tests {
133
133
134
134
instrumented_state. split_segment ( true , OUTPUT ) ;
135
135
}
136
+
137
+ #[ test]
138
+ fn test_execute_app ( ) {
139
+ let path = PathBuf :: from ( "./test-vectors/test_local_app" ) ;
140
+ let data = fs:: read ( path) . expect ( "could not read file" ) ;
141
+ let file =
142
+ ElfBytes :: < AnyEndian > :: minimal_parse ( data. as_slice ( ) ) . expect ( "opening elf file failed" ) ;
143
+ let ( mut state, _) = State :: load_elf ( & file) ;
144
+
145
+ state. patch_go ( & file) ;
146
+ state. patch_stack ( "" ) ;
147
+
148
+ let mut instrumented_state = InstrumentedState :: new ( state, String :: from ( "" ) ) ;
149
+
150
+ let mut step_number = 0 ;
151
+ loop {
152
+ if instrumented_state. state . exited {
153
+ break ;
154
+ }
155
+ instrumented_state. step ( ) ;
156
+ step_number += 1 ;
157
+ }
158
+ println ! ( "total steps {}" , step_number) ;
159
+ }
160
+
161
+ #[ test]
162
+ fn test_execute_nested_fib ( ) {
163
+ let path = PathBuf :: from ( "./test-vectors/fib" ) ;
164
+ let data = fs:: read ( path) . expect ( "could not read file" ) ;
165
+ let file =
166
+ ElfBytes :: < AnyEndian > :: minimal_parse ( data. as_slice ( ) ) . expect ( "opening elf file failed" ) ;
167
+ let ( mut state, _) = State :: load_elf ( & file) ;
168
+
169
+ state. patch_go ( & file) ;
170
+ state. patch_stack ( "" ) ;
171
+
172
+ let mut instrumented_state = InstrumentedState :: new ( state, String :: from ( "" ) ) ;
173
+
174
+ let mut step_number = 0usize ;
175
+ loop {
176
+ if instrumented_state. state . exited {
177
+ break ;
178
+ }
179
+ instrumented_state. step ( ) ;
180
+ step_number += 1 ;
181
+ }
182
+
183
+ println ! ( "total steps {}" , step_number) ;
184
+ }
185
+
186
+ #[ test]
187
+ fn test_execute_fib ( ) {
188
+ let path = PathBuf :: from ( "./test-vectors/fib2" ) ;
189
+ let data = fs:: read ( path) . expect ( "could not read file" ) ;
190
+ let file =
191
+ ElfBytes :: < AnyEndian > :: minimal_parse ( data. as_slice ( ) ) . expect ( "opening elf file failed" ) ;
192
+ let ( mut state, _) = State :: load_elf ( & file) ;
193
+
194
+ state. patch_go ( & file) ;
195
+ state. patch_stack ( "" ) ;
196
+
197
+ let mut instrumented_state = InstrumentedState :: new ( state, String :: from ( "" ) ) ;
198
+
199
+ let mut step_number = 0usize ;
200
+ loop {
201
+ if instrumented_state. state . exited {
202
+ break ;
203
+ }
204
+ instrumented_state. step ( ) ;
205
+ step_number += 1 ;
206
+ }
207
+
208
+ println ! ( "total steps {}" , step_number) ;
209
+ }
210
+
211
+ #[ test]
212
+ fn test_execute_simple_add ( ) {
213
+ let path = PathBuf :: from ( "./test-vectors/simpleArith" ) ;
214
+ let data = fs:: read ( path) . expect ( "could not read file" ) ;
215
+ let file =
216
+ ElfBytes :: < AnyEndian > :: minimal_parse ( data. as_slice ( ) ) . expect ( "opening elf file failed" ) ;
217
+ let ( mut state, _) = State :: load_elf ( & file) ;
218
+
219
+ state. patch_go ( & file) ;
220
+ state. patch_stack ( "" ) ;
221
+
222
+ let mut instrumented_state = InstrumentedState :: new ( state, String :: from ( "" ) ) ;
223
+
224
+ let mut step_number = 0usize ;
225
+ loop {
226
+ if instrumented_state. state . exited {
227
+ break ;
228
+ }
229
+ instrumented_state. step ( ) ;
230
+ step_number += 1 ;
231
+ }
232
+
233
+ println ! ( "total steps {}" , step_number) ;
234
+ }
136
235
}
0 commit comments