avutil/eval-test: Check av_expr_parse_and_eval() for failure and also check it in the fate test
Fixes CID1361940 Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
e0706e9cc8
commit
b50bd69516
@ -139,33 +139,42 @@ int main(int argc, char **argv)
|
|||||||
"clip(0, 0/0, 1)",
|
"clip(0, 0/0, 1)",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
int ret;
|
||||||
|
|
||||||
for (expr = exprs; *expr; expr++) {
|
for (expr = exprs; *expr; expr++) {
|
||||||
printf("Evaluating '%s'\n", *expr);
|
printf("Evaluating '%s'\n", *expr);
|
||||||
av_expr_parse_and_eval(&d, *expr,
|
ret = av_expr_parse_and_eval(&d, *expr,
|
||||||
const_names, const_values,
|
const_names, const_values,
|
||||||
NULL, NULL, NULL, NULL, NULL, 0, NULL);
|
NULL, NULL, NULL, NULL, NULL, 0, NULL);
|
||||||
if (isnan(d))
|
if (isnan(d))
|
||||||
printf("'%s' -> nan\n\n", *expr);
|
printf("'%s' -> nan\n\n", *expr);
|
||||||
else
|
else
|
||||||
printf("'%s' -> %f\n\n", *expr, d);
|
printf("'%s' -> %f\n\n", *expr, d);
|
||||||
|
if (ret < 0)
|
||||||
|
printf("av_expr_parse_and_eval failed\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
av_expr_parse_and_eval(&d, "1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)",
|
ret = av_expr_parse_and_eval(&d, "1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)",
|
||||||
const_names, const_values,
|
const_names, const_values,
|
||||||
NULL, NULL, NULL, NULL, NULL, 0, NULL);
|
NULL, NULL, NULL, NULL, NULL, 0, NULL);
|
||||||
printf("%f == 12.7\n", d);
|
printf("%f == 12.7\n", d);
|
||||||
av_expr_parse_and_eval(&d, "80G/80Gi",
|
if (ret < 0)
|
||||||
|
printf("av_expr_parse_and_eval failed\n");
|
||||||
|
ret = av_expr_parse_and_eval(&d, "80G/80Gi",
|
||||||
const_names, const_values,
|
const_names, const_values,
|
||||||
NULL, NULL, NULL, NULL, NULL, 0, NULL);
|
NULL, NULL, NULL, NULL, NULL, 0, NULL);
|
||||||
printf("%f == 0.931322575\n", d);
|
printf("%f == 0.931322575\n", d);
|
||||||
|
if (ret < 0)
|
||||||
|
printf("av_expr_parse_and_eval failed\n");
|
||||||
|
|
||||||
if (argc > 1 && !strcmp(argv[1], "-t")) {
|
if (argc > 1 && !strcmp(argv[1], "-t")) {
|
||||||
for (i = 0; i < 1050; i++) {
|
for (i = 0; i < 1050; i++) {
|
||||||
START_TIMER;
|
START_TIMER;
|
||||||
av_expr_parse_and_eval(&d, "1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)",
|
ret = av_expr_parse_and_eval(&d, "1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)",
|
||||||
const_names, const_values,
|
const_names, const_values,
|
||||||
NULL, NULL, NULL, NULL, NULL, 0, NULL);
|
NULL, NULL, NULL, NULL, NULL, 0, NULL);
|
||||||
|
if (ret < 0)
|
||||||
|
printf("av_expr_parse_and_eval failed\n");
|
||||||
STOP_TIMER("av_expr_parse_and_eval");
|
STOP_TIMER("av_expr_parse_and_eval");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
Evaluating ''
|
Evaluating ''
|
||||||
'' -> nan
|
'' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating '1;2'
|
Evaluating '1;2'
|
||||||
'1;2' -> 2.000000
|
'1;2' -> 2.000000
|
||||||
|
|
||||||
@ -28,45 +29,58 @@ Evaluating '1Gi'
|
|||||||
Evaluating '1gi'
|
Evaluating '1gi'
|
||||||
'1gi' -> nan
|
'1gi' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating '1GiFoo'
|
Evaluating '1GiFoo'
|
||||||
'1GiFoo' -> nan
|
'1GiFoo' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating '1k+1k'
|
Evaluating '1k+1k'
|
||||||
'1k+1k' -> 2000.000000
|
'1k+1k' -> 2000.000000
|
||||||
|
|
||||||
Evaluating '1Gi*3foo'
|
Evaluating '1Gi*3foo'
|
||||||
'1Gi*3foo' -> nan
|
'1Gi*3foo' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating 'foo'
|
Evaluating 'foo'
|
||||||
'foo' -> nan
|
'foo' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating 'foo('
|
Evaluating 'foo('
|
||||||
'foo(' -> nan
|
'foo(' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating 'foo()'
|
Evaluating 'foo()'
|
||||||
'foo()' -> nan
|
'foo()' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating 'foo)'
|
Evaluating 'foo)'
|
||||||
'foo)' -> nan
|
'foo)' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating 'sin'
|
Evaluating 'sin'
|
||||||
'sin' -> nan
|
'sin' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating 'sin('
|
Evaluating 'sin('
|
||||||
'sin(' -> nan
|
'sin(' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating 'sin()'
|
Evaluating 'sin()'
|
||||||
'sin()' -> nan
|
'sin()' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating 'sin)'
|
Evaluating 'sin)'
|
||||||
'sin)' -> nan
|
'sin)' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating 'sin 10'
|
Evaluating 'sin 10'
|
||||||
'sin 10' -> nan
|
'sin 10' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating 'sin(1,2,3)'
|
Evaluating 'sin(1,2,3)'
|
||||||
'sin(1,2,3)' -> nan
|
'sin(1,2,3)' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating 'sin(1 )'
|
Evaluating 'sin(1 )'
|
||||||
'sin(1 )' -> 0.841471
|
'sin(1 )' -> 0.841471
|
||||||
|
|
||||||
@ -76,15 +90,19 @@ Evaluating '1'
|
|||||||
Evaluating '1foo'
|
Evaluating '1foo'
|
||||||
'1foo' -> nan
|
'1foo' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating 'bar + PI + E + 100f*2 + foo'
|
Evaluating 'bar + PI + E + 100f*2 + foo'
|
||||||
'bar + PI + E + 100f*2 + foo' -> nan
|
'bar + PI + E + 100f*2 + foo' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating '13k + 12f - foo(1, 2)'
|
Evaluating '13k + 12f - foo(1, 2)'
|
||||||
'13k + 12f - foo(1, 2)' -> nan
|
'13k + 12f - foo(1, 2)' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating '1gi'
|
Evaluating '1gi'
|
||||||
'1gi' -> nan
|
'1gi' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating '1Gi'
|
Evaluating '1Gi'
|
||||||
'1Gi' -> 1073741824.000000
|
'1Gi' -> 1073741824.000000
|
||||||
|
|
||||||
@ -127,6 +145,7 @@ Evaluating 'st(1, 1); st(2, 2); st(0, 1); while(lte(ld(0),10), st(3, ld(1)+ld(2)
|
|||||||
Evaluating 'while(0, 10)'
|
Evaluating 'while(0, 10)'
|
||||||
'while(0, 10)' -> nan
|
'while(0, 10)' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating 'st(0, 1); while(lte(ld(0),100), st(1, ld(1)+ld(0)); st(0, ld(0)+1))'
|
Evaluating 'st(0, 1); while(lte(ld(0),100), st(1, ld(1)+ld(0)); st(0, ld(0)+1))'
|
||||||
'st(0, 1); while(lte(ld(0),100), st(1, ld(1)+ld(0)); st(0, ld(0)+1))' -> 101.000000
|
'st(0, 1); while(lte(ld(0),100), st(1, ld(1)+ld(0)); st(0, ld(0)+1))' -> 101.000000
|
||||||
|
|
||||||
@ -151,6 +170,7 @@ Evaluating 'isinf(INF)'
|
|||||||
Evaluating 'floor(NAN)'
|
Evaluating 'floor(NAN)'
|
||||||
'floor(NAN)' -> nan
|
'floor(NAN)' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating 'floor(123.123)'
|
Evaluating 'floor(123.123)'
|
||||||
'floor(123.123)' -> 123.000000
|
'floor(123.123)' -> 123.000000
|
||||||
|
|
||||||
@ -202,6 +222,7 @@ Evaluating 'PI^1.23'
|
|||||||
Evaluating 'pow(-1,1.23)'
|
Evaluating 'pow(-1,1.23)'
|
||||||
'pow(-1,1.23)' -> nan
|
'pow(-1,1.23)' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating 'if(1, 2)'
|
Evaluating 'if(1, 2)'
|
||||||
'if(1, 2)' -> 2.000000
|
'if(1, 2)' -> 2.000000
|
||||||
|
|
||||||
@ -259,6 +280,7 @@ Evaluating 'bitand(42, 12)'
|
|||||||
Evaluating 'bitand(NAN, 1)'
|
Evaluating 'bitand(NAN, 1)'
|
||||||
'bitand(NAN, 1)' -> nan
|
'bitand(NAN, 1)' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating 'between(10, -3, 10)'
|
Evaluating 'between(10, -3, 10)'
|
||||||
'between(10, -3, 10)' -> 1.000000
|
'between(10, -3, 10)' -> 1.000000
|
||||||
|
|
||||||
@ -268,14 +290,18 @@ Evaluating 'between(-4, -2, -1)'
|
|||||||
Evaluating 'between(1,2)'
|
Evaluating 'between(1,2)'
|
||||||
'between(1,2)' -> nan
|
'between(1,2)' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating 'clip(0, 2, 1)'
|
Evaluating 'clip(0, 2, 1)'
|
||||||
'clip(0, 2, 1)' -> nan
|
'clip(0, 2, 1)' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating 'clip(0/0, 1, 2)'
|
Evaluating 'clip(0/0, 1, 2)'
|
||||||
'clip(0/0, 1, 2)' -> nan
|
'clip(0/0, 1, 2)' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
Evaluating 'clip(0, 0/0, 1)'
|
Evaluating 'clip(0, 0/0, 1)'
|
||||||
'clip(0, 0/0, 1)' -> nan
|
'clip(0, 0/0, 1)' -> nan
|
||||||
|
|
||||||
|
av_expr_parse_and_eval failed
|
||||||
12.700000 == 12.7
|
12.700000 == 12.7
|
||||||
0.931323 == 0.931322575
|
0.931323 == 0.931322575
|
||||||
|
Loading…
x
Reference in New Issue
Block a user