Compile and run a script.
| 229 | |
| 230 | // Compile and run a script. |
| 231 | static void check_script(int is_file, const char* source) { |
| 232 | int ret; |
| 233 | |
| 234 | AVDictionary *metadata = NULL; |
| 235 | |
| 236 | struct VGSEvalState state; |
| 237 | struct VGSParser parser; |
| 238 | struct VGSProgram program; |
| 239 | |
| 240 | struct _cairo cairo_ctx = { 0, 0 }; |
| 241 | |
| 242 | if (is_file) { |
| 243 | uint8_t *s = NULL; |
| 244 | |
| 245 | printf("\n--- %s: %s\n", __func__, av_basename(source)); |
| 246 | |
| 247 | ret = ff_load_textfile(NULL, source, &s, NULL); |
| 248 | if (ret != 0) { |
| 249 | printf("Failed to read %s: %d\n", source, ret); |
| 250 | return; |
| 251 | } |
| 252 | |
| 253 | source = s; |
| 254 | } else { |
| 255 | printf("\n--- %s: %s\n", __func__, source); |
| 256 | } |
| 257 | |
| 258 | ret = av_dict_parse_string(&metadata, "m.a=1:m.b=2", "=", ":", 0); |
| 259 | av_assert0(ret == 0); |
| 260 | |
| 261 | vgs_parser_init(&parser, source); |
| 262 | |
| 263 | ret = vgs_parse(NULL, &parser, &program, 0); |
| 264 | |
| 265 | int init_ret = vgs_eval_state_init(&state, &program, NULL, NULL); |
| 266 | av_assert0(init_ret == 0); |
| 267 | |
| 268 | for (int i = 0; i < VAR_COUNT; i++) |
| 269 | state.vars[i] = 1 << i; |
| 270 | |
| 271 | vgs_parser_free(&parser); |
| 272 | |
| 273 | if (ret != 0) { |
| 274 | printf("%s: vgs_parse = %d\n", __func__, ret); |
| 275 | goto exit; |
| 276 | } |
| 277 | |
| 278 | state.metadata = metadata; |
| 279 | state.cairo_ctx = &cairo_ctx; |
| 280 | |
| 281 | ret = vgs_eval(&state, &program, 0); |
| 282 | vgs_eval_state_free(&state); |
| 283 | |
| 284 | if (ret != 0) |
| 285 | printf("%s: vgs_eval = %d\n", __func__, ret); |
| 286 | |
| 287 | exit: |
| 288 | av_dict_free(&metadata); |
no test coverage detected