NAME=avr[rbs]- without function
FILE==
CMDS=<<EOF
afvr-*
afvs- 42
afvs- ulumulu
echo not segfaulted
EOF
EXPECT=<<EOF
not segfaulted
EOF
RUN

NAME=afvf for sp-vars
FILE=bins/elf/crackme0x00b
CMDS=<<EOF
s main
af
afvf
EOF
EXPECT=<<EOF
-0x00000068  var_68h:   int32_t
-0x00000080  var_80h:   int32_t
EOF
RUN

NAME=afvf for bp-vars
FILE=bins/elf/hello_world
CMDS=<<EOF
s main
af
afvf
EOF
EXPECT=<<EOF
-0x00000010  var_10h:   int64_t
-0x00000018  var_18h:   int64_t
-0x00000020  var_20h:   int64_t
-0x00000024  var_24h:   int64_t
-0x00000028  var_28h:   int64_t
EOF
RUN

NAME=afv- *
FILE=bins/elf/vars-complex-x86_64-bp
CMDS=<<EOF
aa
s sym.varfunc
pdf~:1..4
echo
afv- *
pdf~:1..4
EOF
EXPECT=<<EOF
/ sym.varfunc(int64_t arg1);
| ; arg int64_t arg1 @ rdi
| ; var int64_t var_2ch @ stack - 0x2c

/ sym.varfunc();
| 0x0000115c      push  rbp
| 0x0000115d      mov   rbp, rsp
EOF
RUN

NAME=afvc read constraints and JSON (#315)
FILE=bins/elf/constr_type
CMDS=<<EOF
e analysis.types.constraint=true
aaa
s sym.range_small
afvc
afvc var_1ch
afvcj var_1ch
s sym.single_cond
afvc var_ch
EOF
EXPECT=<<EOF
var_1ch: > 0x0 && <= 0x9
> 0x0 && <= 0x9
[{"name":"var_1ch","constraints":"> 0x0 && <= 0x9","conditions":[{"cond":"gt","value":0},{"cond":"le","value":9}]}]
> 0xa
EOF
RUN

NAME=afvcs set and afvc- clear constraints (#315)
FILE=bins/elf/constr_type
CMDS=<<EOF
e analysis.types.constraint=true
aaa
s sym.range_small
afvcs var_1ch ">5,<=20"
afvc var_1ch
afvcs var_1ch "gt 1,le 10"
afvc var_1ch
afvc- var_1ch
afvc var_1ch
echo done
EOF
EXPECT=<<EOF
> 0x5 && <= 0x14
> 0x1 && <= 0xa
done
EOF
RUN
