NAME=radiff2 -n
FILE=-
CMDS=!radiff2 -n bins/other/radiff2/radiff2_c_1 bins/other/radiff2/radiff2_c_2
EXPECT=<<EOF
1
EOF
RUN

NAME=radiff2 -a -O x86
FILE=-
CMDS=!radiff2 -a x86 -O bins/other/radiff2/radiff2_c_1 bins/other/radiff2/radiff2_c_2
EXPECT=<<EOF
0x00000000 91 => 90 0x00000000
EOF
RUN

NAME=radiff2 -B 0x420000
FILE=-
CMDS=!radiff2 -a x86 -B 0x420000 -O bins/other/radiff2/radiff2_c_1 bins/other/radiff2/radiff2_c_2
EXPECT=<<EOF
0x00420000 91 => 90 0x00420000
EOF
RUN

NAME=radiff2 -g
FILE=-
CMDS=!!radiff2 -g main -m d bins/other/radiff2/false bins/other/radiff2/true~digrap
EXPECT=<<EOF
digraph code {
EOF
RUN

NAME=radiff2 -v~commit?"
FILE=-
CMDS=!!radiff2 -v~commit?
EXPECT=<<EOF
1
EOF
RUN

NAME=radiff2 -h~Usage?"
FILE=-
CMDS=!!radiff2 -h~Usage?
EXPECT=<<EOF
1
EOF
RUN

NAME=radiff2 string comparison
FILE=-
CMDS=!!radiff2 -iz bins/elf/elf_one_symbol_shdr bins/elf/elf_one_symbol_shdr1
EXPECT=<<EOF
0x00000000 48656c6c => 41414141 0x00000000
EOF
RUN

NAME=radiff2 unified string comparison
FILE=-
CMDS=!!radiff2 -qu -iz bins/elf/elf_one_symbol_shdr bins/elf/elf_one_symbol_shdr1
EXPECT=<<EOF
-0x00000000:48 65 6c 6c 
+0x00000000:41 41 41 41 
EOF
RUN

NAME=radiff2 gnu unified string comparison
FILE=-
CMDS=!!radiff2 -U -iz bins/elf/elf_one_symbol_shdr bins/elf/elf_one_symbol_shdr1 | tail -n 2
EXPECT=<<EOF
-Hello world!
+AAAAo world!
EOF
RUN

NAME=radiff2 -AC (elf files)
FILE=-
CMDS=!!radiff2 -AC bins/other/radiff2/true bins/other/radiff2/false~?\(1.000000\)
EXPECT=<<EOF
50
EOF
RUN

NAME=radiff2 -AAC (elf files)
FILE=-
CMDS=!!radiff2 -AAC bins/other/radiff2/true bins/other/radiff2/false~?\(1.000000\)
EXPECT=<<EOF
54
EOF
RUN

NAME=radiff2 -AC (mach0 fat files)
FILE=-
CMDS=!!radiff2 -AC bins/other/radiff2/hellocxx-osx-fat-intel_1 bins/other/radiff2/hellocxx-osx-fat-intel_2~?\(1.000000\)
EXPECT=<<EOF
16
EOF
RUN

NAME=radiff2 -f1 (GDIFF support) #1
FILE=-
CMDS=!!radiff2 -f1 bins/other/radiff2/radiff2_c_1 bins/other/radiff2/radiff2_c_2 | rax2 -S
EXPECT=<<EOF
d1ffd1ff04019000
EOF
RUN

NAME=radiff2 empty first file
FILE=-
CMDS=!radiff2 "" bins/other/radiff2/radiff2_c_2
EXPECT_ERR=<<EOF
ERROR: Cannot open empty path
EOF
RUN

NAME=radiff2 empty second file
FILE=-
CMDS=!radiff2 bins/other/radiff2/radiff2_c_1 ""
EXPECT_ERR=<<EOF
ERROR: Cannot open empty path
EOF
RUN

NAME=radiff2 compares saved project functions and virtual maps without analysis
FILE=hex://b801000000c3b802000000c3
ARGS=-a x86 -b 64 -m 0x1000
CMDS=<<END
mkdir .tmp
af+ 0x1000 main
afb+ 0x1000 0x1000 6
af+ 0x1006 helper
afb+ 0x1006 0x1006 6
prj save .tmp/radiff-project-a.prj
!r2 -Nq -a x86 -b 64 -m 0x2000 -c 'af+ 0x2000 main;afb+ 0x2000 0x2000 6;af+ 0x2006 helper;afb+ 0x2006 0x2006 6;prj save .tmp/radiff-project-b.prj' hex://b803000000c3b802000000c3
!radiff2 -C .tmp/radiff-project-a.prj .tmp/radiff-project-a.prj
!radiff2 -C .tmp/radiff-project-a.prj .tmp/radiff-project-b.prj
!!radiff2 -g main -m j .tmp/radiff-project-a.prj .tmp/radiff-project-a.prj~{0.name}
rm .tmp/radiff-project-a.prj
rm .tmp/radiff-project-b.prj
END
EXPECT=<<END
  main 6 0x1000 |   MATCH  (1.000000) | 0x1000  6 main
helper 6 0x1006 |   MATCH  (1.000000) | 0x1006  6 helper
  main 6 0x1000 |   MATCH  (0.833333) | 0x2000  6 main
helper 6 0x1006 |   MATCH  (1.000000) | 0x2006  6 helper
main
END
RUN

NAME=radiff2 compares projects with one saved function per session
FILE=hex://b801000000c3
ARGS=-a x86 -b 64 -m 0x1000
CMDS=<<END
mkdir .tmp
af+ 0x1000 main
afb+ 0x1000 0x1000 6
prj save .tmp/radiff-single-a.prj
!r2 -Nq -a x86 -b 64 -m 0x2000 -c 'af+ 0x2000 main;afb+ 0x2000 0x2000 6;prj save .tmp/radiff-single-b.prj' hex://b802000000c3
!radiff2 -C .tmp/radiff-single-a.prj .tmp/radiff-single-a.prj
!radiff2 -C .tmp/radiff-single-a.prj .tmp/radiff-single-b.prj
rm .tmp/radiff-single-a.prj
rm .tmp/radiff-single-b.prj
END
EXPECT=<<END
main 6 0x1000 |   MATCH  (1.000000) | 0x1000  6 main
main 6 0x1000 |   MATCH  (0.833333) | 0x2000  6 main
END
RUN
