NAME=rz-find -X -s
TOOL=rz-find
ARGS=-X -s 250382 bins/elf/ioli/crackme0x00
COLOR=1
EXPECT=<<EOF
0x58f
[35m- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
[0m[32m0x0000058f[0m  [35m32[0m[35m35[0m [35m30[0m[35m33[0m [35m38[0m[35m32[0m [32m00[0m[35m49[0m [35m6e[0m[35m76[0m [35m61[0m[35m6c[0m [35m69[0m[35m64[0m [35m20[0m[35m50[0m  [35m2[0m[35m5[0m[35m0[0m[35m3[0m[35m8[0m[35m2[0m[32m.[0m[35mI[0m[35mn[0m[35mv[0m[35ma[0m[35ml[0m[35mi[0m[35md[0m[35m [0m[35mP[0m
[32m0x0000059f[0m  [35m61[0m[35m73[0m [35m73[0m[35m77[0m [35m6f[0m[35m72[0m [35m64[0m[35m21[0m [37m0a[0m[32m00[0m [35m50[0m[35m61[0m [35m73[0m[35m73[0m [35m77[0m[35m6f[0m  [35ma[0m[35ms[0m[35ms[0m[35mw[0m[35mo[0m[35mr[0m[35md[0m[35m![0m[37m.[0m[32m.[0m[35mP[0m[35ma[0m[35ms[0m[35ms[0m[35mw[0m[35mo[0m
[32m0x000005af[0m  [35m72[0m[35m64[0m [35m20[0m[35m4f[0m [35m4b[0m[35m20[0m [35m3a[0m[35m29[0m [37m0a[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m  [35mr[0m[35md[0m[35m [0m[35mO[0m[35mK[0m[35m [0m[35m:[0m[35m)[0m[37m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m
[32m0x000005bf[0m  [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m  [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m
[32m0x000005cf[0m  [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m       [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m
EOF
RUN

NAME=rz-find -X -s
TOOL=rz-find
ARGS=-X -s 250382 bins/elf/ioli/crackme0x00
COLOR=1
EXPECT=<<EOF
0x58f
[35m- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
[0m[32m0x0000058f[0m  [35m32[0m[35m35[0m [35m30[0m[35m33[0m [35m38[0m[35m32[0m [32m00[0m[35m49[0m [35m6e[0m[35m76[0m [35m61[0m[35m6c[0m [35m69[0m[35m64[0m [35m20[0m[35m50[0m  [35m2[0m[35m5[0m[35m0[0m[35m3[0m[35m8[0m[35m2[0m[32m.[0m[35mI[0m[35mn[0m[35mv[0m[35ma[0m[35ml[0m[35mi[0m[35md[0m[35m [0m[35mP[0m
[32m0x0000059f[0m  [35m61[0m[35m73[0m [35m73[0m[35m77[0m [35m6f[0m[35m72[0m [35m64[0m[35m21[0m [37m0a[0m[32m00[0m [35m50[0m[35m61[0m [35m73[0m[35m73[0m [35m77[0m[35m6f[0m  [35ma[0m[35ms[0m[35ms[0m[35mw[0m[35mo[0m[35mr[0m[35md[0m[35m![0m[37m.[0m[32m.[0m[35mP[0m[35ma[0m[35ms[0m[35ms[0m[35mw[0m[35mo[0m
[32m0x000005af[0m  [35m72[0m[35m64[0m [35m20[0m[35m4f[0m [35m4b[0m[35m20[0m [35m3a[0m[35m29[0m [37m0a[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m  [35mr[0m[35md[0m[35m [0m[35mO[0m[35mK[0m[35m [0m[35m:[0m[35m)[0m[37m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m
[32m0x000005bf[0m  [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m  [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m
[32m0x000005cf[0m  [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m       [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m
EOF
RUN

NAME=rz-find -f 0x00000000 -t 0x00000590 -X -s
TOOL=rz-find
ARGS=-f 0x00000000 -t 0x00001000 -X -s 250382 bins/elf/ioli/crackme0x00
COLOR=1
EXPECT=<<EOF
0x58f
[35m- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
[0m[32m0x0000058f[0m  [35m32[0m[35m35[0m [35m30[0m[35m33[0m [35m38[0m[35m32[0m [32m00[0m[35m49[0m [35m6e[0m[35m76[0m [35m61[0m[35m6c[0m [35m69[0m[35m64[0m [35m20[0m[35m50[0m  [35m2[0m[35m5[0m[35m0[0m[35m3[0m[35m8[0m[35m2[0m[32m.[0m[35mI[0m[35mn[0m[35mv[0m[35ma[0m[35ml[0m[35mi[0m[35md[0m[35m [0m[35mP[0m
[32m0x0000059f[0m  [35m61[0m[35m73[0m [35m73[0m[35m77[0m [35m6f[0m[35m72[0m [35m64[0m[35m21[0m [37m0a[0m[32m00[0m [35m50[0m[35m61[0m [35m73[0m[35m73[0m [35m77[0m[35m6f[0m  [35ma[0m[35ms[0m[35ms[0m[35mw[0m[35mo[0m[35mr[0m[35md[0m[35m![0m[37m.[0m[32m.[0m[35mP[0m[35ma[0m[35ms[0m[35ms[0m[35mw[0m[35mo[0m
[32m0x000005af[0m  [35m72[0m[35m64[0m [35m20[0m[35m4f[0m [35m4b[0m[35m20[0m [35m3a[0m[35m29[0m [37m0a[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m  [35mr[0m[35md[0m[35m [0m[35mO[0m[35mK[0m[35m [0m[35m:[0m[35m)[0m[37m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m
[32m0x000005bf[0m  [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m  [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m
[32m0x000005cf[0m  [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m       [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m
EOF
RUN

NAME=rz-find -f 0x00010000 -t 0x00020000 -X -s
TOOL=rz-find
ARGS=-f 0x00010000 -t 0x00020000 -X -s 250382 bins/elf/ioli/crackme0x00
EXIT_STATUS=1
EXPECT=
RUN

NAME=rz-find -X -x
TOOL=rz-find
ARGS=-X -x 323530333832 bins/elf/ioli/crackme0x00
COLOR=1
EXPECT=<<EOF
0x58f
[35m- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
[0m[32m0x0000058f[0m  [35m32[0m[35m35[0m [35m30[0m[35m33[0m [35m38[0m[35m32[0m [32m00[0m[35m49[0m [35m6e[0m[35m76[0m [35m61[0m[35m6c[0m [35m69[0m[35m64[0m [35m20[0m[35m50[0m  [35m2[0m[35m5[0m[35m0[0m[35m3[0m[35m8[0m[35m2[0m[32m.[0m[35mI[0m[35mn[0m[35mv[0m[35ma[0m[35ml[0m[35mi[0m[35md[0m[35m [0m[35mP[0m
[32m0x0000059f[0m  [35m61[0m[35m73[0m [35m73[0m[35m77[0m [35m6f[0m[35m72[0m [35m64[0m[35m21[0m [37m0a[0m[32m00[0m [35m50[0m[35m61[0m [35m73[0m[35m73[0m [35m77[0m[35m6f[0m  [35ma[0m[35ms[0m[35ms[0m[35mw[0m[35mo[0m[35mr[0m[35md[0m[35m![0m[37m.[0m[32m.[0m[35mP[0m[35ma[0m[35ms[0m[35ms[0m[35mw[0m[35mo[0m
[32m0x000005af[0m  [35m72[0m[35m64[0m [35m20[0m[35m4f[0m [35m4b[0m[35m20[0m [35m3a[0m[35m29[0m [37m0a[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m  [35mr[0m[35md[0m[35m [0m[35mO[0m[35mK[0m[35m [0m[35m:[0m[35m)[0m[37m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m
[32m0x000005bf[0m  [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m  [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m
[32m0x000005cf[0m  [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m       [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m
EOF
RUN

NAME=rz-find -X -x with nibbles masked
TOOL=rz-find
ARGS=-X -x caf.bab. bins/java/Hello.class
COLOR=1
EXPECT=<<EOF
0x0
[35m- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
[0m[32m0x00000000[0m  [37mca[0m[37mfe[0m [37mba[0m[37mbe[0m [32m00[0m[32m00[0m [32m00[0m[35m32[0m [32m00[0m[35m33[0m [37m0a[0m[32m00[0m [37m0e[0m[32m00[0m [37m1b[0m[37m09[0m  [37m.[0m[37m.[0m[37m.[0m[37m.[0m[32m.[0m[32m.[0m[32m.[0m[35m2[0m[32m.[0m[35m3[0m[37m.[0m[32m.[0m[37m.[0m[32m.[0m[37m.[0m[37m.[0m
[32m0x00000010[0m  [32m00[0m[37m0a[0m [32m00[0m[37m1c[0m [37m09[0m[32m00[0m [37m1d[0m[32m00[0m [37m1e[0m[37m07[0m [32m00[0m[37m1f[0m [37m0a[0m[32m00[0m [37m04[0m[32m00[0m  [32m.[0m[37m.[0m[32m.[0m[37m.[0m[37m.[0m[32m.[0m[37m.[0m[32m.[0m[37m.[0m[37m.[0m[32m.[0m[37m.[0m[37m.[0m[32m.[0m[37m.[0m[32m.[0m
[32m0x00000020[0m  [37m1b[0m[37m08[0m [32m00[0m[35m20[0m [37m0a[0m[32m00[0m [37m04[0m[32m00[0m [35m21[0m[37m0a[0m [32m00[0m[37m04[0m [32m00[0m[35m22[0m [37m0a[0m[32m00[0m  [37m.[0m[37m.[0m[32m.[0m[35m [0m[37m.[0m[32m.[0m[37m.[0m[32m.[0m[35m![0m[37m.[0m[32m.[0m[37m.[0m[32m.[0m[35m"[0m[37m.[0m[32m.[0m
[32m0x00000030[0m  [35m23[0m[32m00[0m [35m24[0m[37m07[0m [32m00[0m[35m25[0m [37m08[0m[32m00[0m [35m26[0m[37m0a[0m [32m00[0m[37m0a[0m [32m00[0m[35m27[0m [37m0a[0m[32m00[0m  [35m#[0m[32m.[0m[35m$[0m[37m.[0m[32m.[0m[35m%[0m[37m.[0m[32m.[0m[35m&[0m[37m.[0m[32m.[0m[37m.[0m[32m.[0m[35m'[0m[37m.[0m[32m.[0m
[32m0x00000040[0m  [37m0a[0m[32m00[0m [35m28[0m[37m07[0m [32m00[0m[35m29[0m [37m01[0m[32m00[0m [37m03[0m[35m77[0m [35m68[0m[35m6f[0m [37m01[0m[32m00[0m       [37m.[0m[32m.[0m[35m([0m[37m.[0m[32m.[0m[35m)[0m[37m.[0m[32m.[0m[37m.[0m[35mw[0m[35mh[0m[35mo[0m[37m.[0m[32m.[0m
EOF
RUN

NAME=rz-find -X -x with bin mask
TOOL=rz-find
ARGS=-X -x caf3bab3 -M fff0fff0 bins/java/Hello.class
COLOR=1
EXPECT=<<EOF
0x0
[35m- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
[0m[32m0x00000000[0m  [37mca[0m[37mfe[0m [37mba[0m[37mbe[0m [32m00[0m[32m00[0m [32m00[0m[35m32[0m [32m00[0m[35m33[0m [37m0a[0m[32m00[0m [37m0e[0m[32m00[0m [37m1b[0m[37m09[0m  [37m.[0m[37m.[0m[37m.[0m[37m.[0m[32m.[0m[32m.[0m[32m.[0m[35m2[0m[32m.[0m[35m3[0m[37m.[0m[32m.[0m[37m.[0m[32m.[0m[37m.[0m[37m.[0m
[32m0x00000010[0m  [32m00[0m[37m0a[0m [32m00[0m[37m1c[0m [37m09[0m[32m00[0m [37m1d[0m[32m00[0m [37m1e[0m[37m07[0m [32m00[0m[37m1f[0m [37m0a[0m[32m00[0m [37m04[0m[32m00[0m  [32m.[0m[37m.[0m[32m.[0m[37m.[0m[37m.[0m[32m.[0m[37m.[0m[32m.[0m[37m.[0m[37m.[0m[32m.[0m[37m.[0m[37m.[0m[32m.[0m[37m.[0m[32m.[0m
[32m0x00000020[0m  [37m1b[0m[37m08[0m [32m00[0m[35m20[0m [37m0a[0m[32m00[0m [37m04[0m[32m00[0m [35m21[0m[37m0a[0m [32m00[0m[37m04[0m [32m00[0m[35m22[0m [37m0a[0m[32m00[0m  [37m.[0m[37m.[0m[32m.[0m[35m [0m[37m.[0m[32m.[0m[37m.[0m[32m.[0m[35m![0m[37m.[0m[32m.[0m[37m.[0m[32m.[0m[35m"[0m[37m.[0m[32m.[0m
[32m0x00000030[0m  [35m23[0m[32m00[0m [35m24[0m[37m07[0m [32m00[0m[35m25[0m [37m08[0m[32m00[0m [35m26[0m[37m0a[0m [32m00[0m[37m0a[0m [32m00[0m[35m27[0m [37m0a[0m[32m00[0m  [35m#[0m[32m.[0m[35m$[0m[37m.[0m[32m.[0m[35m%[0m[37m.[0m[32m.[0m[35m&[0m[37m.[0m[32m.[0m[37m.[0m[32m.[0m[35m'[0m[37m.[0m[32m.[0m
[32m0x00000040[0m  [37m0a[0m[32m00[0m [35m28[0m[37m07[0m [32m00[0m[35m29[0m [37m01[0m[32m00[0m [37m03[0m[35m77[0m [35m68[0m[35m6f[0m [37m01[0m[32m00[0m       [37m.[0m[32m.[0m[35m([0m[37m.[0m[32m.[0m[35m)[0m[37m.[0m[32m.[0m[37m.[0m[35mw[0m[35mh[0m[35mo[0m[37m.[0m[32m.[0m
EOF
RUN

NAME=rz-find -h
FILE==
REGEXP_FILTER_OUT=(Usage:)
CMDS=!rz-find -h
EXPECT=<<EOF
Usage:
EOF
RUN

NAME=rz-find -v
FILE==
REGEXP_FILTER_OUT=(commit:)
CMDS=!rz-find -v
EXPECT=<<EOF
commit:
EOF
RUN

NAME=rz-find can't open
TOOL=rz-find
ARGS=-n  -f 0x00010000 -t 0x00020000 -X -s 250382 incorrect_file
EXIT_STATUS=1
EXPECT_ERR=<<EOF
Cannot open file 'incorrect_file'
EOF
RUN

NAME=rz-find
TOOL=rz-find
ARGS=-s 250382 bins/elf/ioli/crackme0x00
EXPECT=<<EOF
0x58f
EOF
RUN

NAME=rz-find -i
TOOL=rz-find
ARGS=-i bins/elf/ioli/crackme0x00
EXPECT=<<EOF
0x00000000 ELF 32-bit LSB executable, Intel 80386, version 1
EOF
RUN

NAME=rz-find -m
TOOL=rz-find
ARGS=-m bins/elf/ioli/crackme0x00
EXPECT=<<EOF
0x00000000 0 hit.magic.0 ELF 32-bit LSB executable, Intel 80386, version 1
EOF
RUN

NAME=rz-find -e
FILE==
BROKEN=1
CMDS=!!rz-find -e 2503?2 bins/elf/ioli/crackme0x00
EXPECT=<<EOF
0x58f
[35m- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
[0m[32m0x0000058f[0m  [35m32[0m[35m35[0m [35m30[0m[35m33[0m [35m38[0m[35m32[0m [32m00[0m[35m49[0m [35m6e[0m[35m76[0m [35m61[0m[35m6c[0m [35m69[0m[35m64[0m [35m20[0m[35m50[0m  [35m2[0m[35m5[0m[35m0[0m[35m3[0m[35m8[0m[35m2[0m[32m.[0m[35mI[0m[35mn[0m[35mv[0m[35ma[0m[35ml[0m[35mi[0m[35md[0m[35m [0m[35mP[0m
[32m0x0000059f[0m  [35m61[0m[35m73[0m [35m73[0m[35m77[0m [35m6f[0m[35m72[0m [35m64[0m[35m21[0m [37m0a[0m[32m00[0m [35m50[0m[35m61[0m [35m73[0m[35m73[0m [35m77[0m[35m6f[0m  [35ma[0m[35ms[0m[35ms[0m[35mw[0m[35mo[0m[35mr[0m[35md[0m[35m![0m[37m.[0m[32m.[0m[35mP[0m[35ma[0m[35ms[0m[35ms[0m[35mw[0m[35mo[0m
[32m0x000005af[0m  [35m72[0m[35m64[0m [35m20[0m[35m4f[0m [35m4b[0m[35m20[0m [35m3a[0m[35m29[0m [37m0a[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m  [35mr[0m[35md[0m[35m [0m[35mO[0m[35mK[0m[35m [0m[35m:[0m[35m)[0m[37m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m
[32m0x000005bf[0m  [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m  [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m
[32m0x000005cf[0m  [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m [32m00[0m[32m00[0m       [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m
EOF
RUN

NAME=rz-find -E
TOOL=rz-find
ARGS=-E echo -s Password bins/elf/ioli/crackme0x00
EXPECT=<<EOF
0x581
bins/elf/ioli/crackme0x00
0x59e
bins/elf/ioli/crackme0x00
0x5a9
bins/elf/ioli/crackme0x00
EOF
RUN

NAME=rz-find -R 
FILE==
CMDS=!rz-find -s "GCC" -R "e scr.color=0 ; px 1" bins/elf/ioli/crackme0x00
EXPECT=<<EOF
0x101d
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x0000101d  ff                                       .
0x105c
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x0000105c  ff                                       .
0x109b
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x0000109b  ff                                       .
0x10da
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x000010da  ff                                       .
0x1119
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x00001119  ff                                       .
0x1158
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x00001158  ff                                       .
0x1197
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x00001197  ff                                       .
EOF
RUN

NAME=rz-find -b 0xa
TOOL=rz-find
ARGS=-s 250382 -b 0xa bins/elf/ioli/crackme0x00
EXPECT=<<EOF
0x58f
EOF
RUN

NAME=rz-find -a 2 -b 0x3
TOOL=rz-find
ARGS=-a 2 -s 250382 -b 0x3 bins/elf/ioli/crackme0x00
EXPECT=
RUN

NAME=rz-find -q
TOOL=rz-find
ARGS=-q -s 250382 bins/elf/ioli/crackme0x00
EXPECT=<<EOF
0x58f
EOF
RUN

NAME=rz-find -z 250382
TOOL=rz-find
ARGS=-z -s 250382 bins/elf/ioli/crackme0x00
EXPECT=<<EOF
0x58f
EOF
RUN

NAME=rz-find -w ascii
TOOL=rz-find
ARGS=-w wide bins/pe/testapp-msvc64.exe
EXPECT=<<EOF
0x1481a
0x14842
EOF
RUN

NAME=rz-find -w U+00ff < utf8 < U+10000
TOOL=rz-find
ARGS=-w واسع bins/pe/testapp-msvc64.exe
EXPECT=<<EOF
0x14864
EOF
RUN

NAME=rz-find -w utf8 >= U+10000
TOOL=rz-find
ARGS=-w 𐍈 bins/elf/strenc
EXPECT=<<EOF
0x22ac
EOF
RUN

NAME=rz-find -Z wide string
TOOL=rz-find
ARGS=-Z -w PATH=C: bins/heap/multithreadheap.exe.bin
EXPECT=<<EOF
0x15d8 PATH=C:'Users'vboxuser'rizin'rizin-install'bin;C:'Windows'system32;C:'Windows;C:'...
EOF
RUN

NAME=rz-find -S ascii
TOOL=rz-find
ARGS=-S QueryPerformanceCounter bins/pe/testapp-msvc64.exe
EXPECT=<<EOF
paddr: 0x0000c000 vaddr: 0x14000d000 type: FUNC QueryPerformanceCounter
EOF
RUN

NAME=rz-find -I ascii
TOOL=rz-find
ARGS=-I QueryPerformanceCounter bins/pe/testapp-msvc64.exe
EXPECT=<<EOF
ordinal: 1 QueryPerformanceCounter
EOF
RUN

NAME=rz-find -Z
TOOL=rz-find
ARGS=-Z -s 250382 bins/elf/ioli/crackme0x00
EXPECT=<<EOF
0x58f 250382
EOF
RUN

NAME=rz-find -Z keyword across block boundary
TOOL=rz-find
ARGS=-Z -b 0x592 -s 250382 bins/elf/ioli/crackme0x00
EXPECT=<<EOF
0x58f 250382
EOF
RUN

NAME=rz-find -F
TOOL=rz-find
ARGS=-F scripts/keyword bins/mach0/FileDP
EXPECT=<<EOF
0x4e9
0x6f5
0x6f9
0x706
0x729
0x72d
0x73b
0x75d
0x761
0x76d
0x3473
0x348f
0x34ab
EOF
RUN

NAME=rz-find multiple files
TOOL=rz-find
ARGS=-s README bins/arm/README bins/arm/README
EXPECT=<<EOF
File: bins/arm/README
0x0
File: bins/arm/README
0x0
EOF
RUN

NAME=rz-find recursive
TOOL=rz-find
ARGS=-q -s README bins/arm
EXPECT=<<EOF
0x0
EOF
RUN

NAME=rz-find -E with echo as a command
TOOL=rz-find
ARGS=-s README -E echo bins/arm
REGEXP_FILTER_OUT=README
EXPECT=<<EOF
README
EOF
RUN

NAME=rz-find -V verbose flag single file
TOOL=rz-find
ARGS=-V -s 250382 bins/elf/ioli/crackme0x00
EXPECT=<<EOF
Scanning: bins/elf/ioli/crackme0x00
File: bins/elf/ioli/crackme0x00
0x58f
EOF
RUN

NAME=rz-find -V verbose flag with no match
TOOL=rz-find
ARGS=-V -s NOTFOUND bins/elf/ioli/crackme0x00
EXPECT=<<EOF
Scanning: bins/elf/ioli/crackme0x00
EOF
RUN

NAME=rz-find -V verbose flag multiple files
TOOL=rz-find
ARGS=-V -s README bins/arm/README bins/arm/README
EXPECT=<<EOF
Scanning: bins/arm/README
File: bins/arm/README
0x0
Scanning: bins/arm/README
File: bins/arm/README
0x0
EOF
RUN

NAME=rz-find -V with -q still shows scanning
TOOL=rz-find
ARGS=-V -q -s 250382 bins/elf/ioli/crackme0x00
EXPECT=<<EOF
Scanning: bins/elf/ioli/crackme0x00
0x58f
EOF
RUN

NAME=rz-find -V overrides auto-quiet for single file
FILE==
REGEXP_FILTER_OUT=(File: bins/elf/ioli/crackme0x00)
CMDS=!rz-find -V -s 250382 bins/elf/ioli/crackme0x00
EXPECT=<<EOF
File: bins/elf/ioli/crackme0x00
EOF
RUN

NAME=rz-find without -V no scanning output
FILE==
REGEXP_FILTER_OUT=(Scanning:)
CMDS=!rz-find -s 250382 bins/elf/ioli/crackme0x00
EXPECT=
RUN

NAME=rz-find multi-file continues on error
TOOL=rz-find
ARGS=-s README nonexistent_file.bin bins/arm/README
EXIT_STATUS=1
EXPECT=<<EOF
File: bins/arm/README
0x0
EOF
EXPECT_ERR=<<EOF
Cannot open file 'nonexistent_file.bin'
EOF
RUN

NAME=rz-find multi-file quiet
TOOL=rz-find
ARGS=-q -s README bins/arm/README bins/arm/README
EXPECT=<<EOF
0x0
0x0
EOF
EXPECT_ERR=
RUN

NAME=rz-find JSON multiple files keyword search
TOOL=rz-find
ARGS=-j -s 250382 bins/elf/ioli/crackme0x00 bins/elf/ioli/crackme0x00
EXPECT=<<EOF
[{"offset":1423,"type":"string","data":"250382"},{"offset":1423,"type":"string","data":"250382"}]
EOF
RUN

NAME=rz-find verbose with JSON outputs scanning to stderr
TOOL=rz-find
ARGS=-V -j -s 250382 bins/elf/ioli/crackme0x00
EXPECT=<<EOF
[{"offset":1423,"type":"string","data":"250382"}]
EOF
EXPECT_ERR=<<EOF
Scanning: bins/elf/ioli/crackme0x00
EOF
RUN

NAME=rz-find no colors when hexdump on raw buffers
TOOL=rz-find
ARGS=-B -C -X -s elf bins/other/ls.rzdb
EXPECT=<<EOF
0xb983
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x0000b983  656c 663d 7231 330a 6465 6661 756c 742e  elf=r13.default.
0x0000b993  6363 3d61 6d64 3634 0a6d 733d 6363 0a72  cc=amd64.ms=cc.r
0x0000b9a3  6567 3d63 630a 7377 6966 743d 6363 0a0a  eg=cc.swift=cc..
0x0000b9b3  2f63 6f72 652f 616e 616c 7973 6973 2f63  /core/analysis/c
0x0000b9c3  6c61 7373 6573 0a0a 2f63 6f72 652f       lasses../core/
0x1264f
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x0001264f  656c 665c 5c5c 5c6e 2020 2d6d 2020 2020  elf\\\\n  -m    
0x0001265f  2020 2020 2020 2020 2020 2020 2020 2020                  
0x0001266f  2020 2020 2066 696c 6c20 7769 6474 6820       fill width 
0x0001267f  7769 7468 2061 2063 6f6d 6d61 2073 6570  with a comma sep
0x0001268f  6172 6174 6564 206c 6973 7420 6f66       arated list of
0x29291
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x00029291  656c 662e 6368 6563 6b73 2e73 6563 7469  elf.checks.secti
0x000292a1  6f6e 733d 7472 7565 0a65 6c66 2e63 6865  ons=true.elf.che
0x000292b1  636b 732e 7365 676d 656e 7473 3d74 7275  cks.segments=tru
0x000292c1  650a 656c 662e 6c6f 6164 2e73 6563 7469  e.elf.load.secti
0x000292d1  6f6e 733d 7472 7565 0a65 6d75 2e6c       ons=true.emu.l
0x292aa
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x000292aa  656c 662e 6368 6563 6b73 2e73 6567 6d65  elf.checks.segme
0x000292ba  6e74 733d 7472 7565 0a65 6c66 2e6c 6f61  nts=true.elf.loa
0x000292ca  642e 7365 6374 696f 6e73 3d74 7275 650a  d.sections=true.
0x000292da  656d 752e 6c61 7a79 3d66 616c 7365 0a65  emu.lazy=false.e
0x000292ea  6d75 2e70 7265 3d66 616c 7365 0a65       mu.pre=false.e
0x292c3
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x000292c3  656c 662e 6c6f 6164 2e73 6563 7469 6f6e  elf.load.section
0x000292d3  733d 7472 7565 0a65 6d75 2e6c 617a 793d  s=true.emu.lazy=
0x000292e3  6661 6c73 650a 656d 752e 7072 653d 6661  false.emu.pre=fa
0x000292f3  6c73 650a 656d 752e 736b 6970 3d64 730a  lse.emu.skip=ds.
0x00029303  656d 752e 7373 613d 6661 6c73 650a       emu.ssa=false.
0x29502
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x00029502  656c 662f 6c73 0a66 696c 652e 6c6f 6164  elf/ls.file.load
0x00029512  616c 6967 6e3d 3078 3030 3030 3034 3030  align=0x00000400
0x00029522  0a66 696c 652e 6f70 656e 6d61 6e79 3d31  .file.openmany=1
0x00029532  0a66 696c 652e 7061 7468 3d2f 686f 6d65  .file.path=/home
0x00029542  2f72 7363 6869 726f 6e2f 7072 6f6a       /rschiron/proj
0x2956e
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x0002956e  656c 662f 6c73 0a66 696c 652e 7479 7065  elf/ls.file.type
0x0002957e  3d65 6c66 0a67 7261 7068 2e61 6561 623d  =elf.graph.aeab=
0x0002958e  6661 6c73 650a 6772 6170 682e 626f 6479  false.graph.body
0x0002959e  3d74 7275 650a 6772 6170 682e 6275 6262  =true.graph.bubb
0x000295ae  6c65 3d66 616c 7365 0a67 7261 7068       le=false.graph
0x2957f
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x0002957f  656c 660a 6772 6170 682e 6165 6162 3d66  elf.graph.aeab=f
0x0002958f  616c 7365 0a67 7261 7068 2e62 6f64 793d  alse.graph.body=
0x0002959f  7472 7565 0a67 7261 7068 2e62 7562 626c  true.graph.bubbl
0x000295af  653d 6661 6c73 650a 6772 6170 682e 6279  e=false.graph.by
0x000295bf  7465 733d 6661 6c73 650a 6772 6170       tes=false.grap
0x2a39b
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x0002a39b  656c 662f 6c73 0a72 6177 3d2e 2f74 6573  elf/ls.raw=./tes
0x0002a3ab  742f 6269 6e73 2f65 6c66 2f6c 730a 7265  t/bins/elf/ls.re
0x0002a3bb  6c61 7469 7665 3d2e 2e2f 656c 662f 6c73  lative=../elf/ls
0x0002a3cb  0a0a 2f63 6f72 652f 666c 6167 730a 6261  ../core/flags.ba
0x0002a3db  7365 3d30 0a72 6561 6c6e 616d 6573       se=0.realnames
0x2a3b2
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x0002a3b2  656c 662f 6c73 0a72 656c 6174 6976 653d  elf/ls.relative=
0x0002a3c2  2e2e 2f65 6c66 2f6c 730a 0a2f 636f 7265  ../elf/ls../core
0x0002a3d2  2f66 6c61 6773 0a62 6173 653d 300a 7265  /flags.base=0.re
0x0002a3e2  616c 6e61 6d65 733d 300a 0a2f 636f 7265  alnames=0../core
0x0002a3f2  2f66 6c61 6773 2f66 6c61 6773 0a63       /flags/flags.c
0x2a3c5
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x0002a3c5  656c 662f 6c73 0a0a 2f63 6f72 652f 666c  elf/ls../core/fl
0x0002a3d5  6167 730a 6261 7365 3d30 0a72 6561 6c6e  ags.base=0.realn
0x0002a3e5  616d 6573 3d30 0a0a 2f63 6f72 652f 666c  ames=0../core/fl
0x0002a3f5  6167 732f 666c 6167 730a 6375 7374 6f6d  ags/flags.custom
0x0002a405  5f6d 6169 6e3d 7b22 7265 616c 6e61       _main={"realna
EOF
REGEXP_FILTER_ERR=<<EOF
ERROR.+
EOF
EXPECT_ERR=
RUN
