NAME=PDB downloader check
FILE=../bins/pdb/user32.dll
CMDS=<<EOF
!!rabin2 -PP ${R2_FILE} ~PDB
EOF
EXPECT=<<EOF
PDB "user32.pdb" download success
EOF
RUN

NAME=find structure R2_TEST_STRUCT
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep -ao R2_TEST_STRUCT
EOF
EXPECT=<<EOF
R2_TEST_STRUCT
EOF
RUN

NAME=find union R2_TEST_UNION
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep -ao R2_TEST_UNION
EOF
EXPECT=<<EOF
R2_TEST_UNION
EOF
RUN

NAME=find enum R2_TEST_ENUM
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep -ao R2_TEST_ENUM
EOF
EXPECT=<<EOF
R2_TEST_ENUM
EOF
RUN

NAME=member1 offset of structure R2_TEST_STRUCT
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep r2_struct_var_1 | grep -ao 0x0
EOF
EXPECT=<<EOF
0x0
EOF
RUN

NAME=member2 offset of structure R2_TEST_STRUCT

FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep r2_struct_var_2 | grep -ao 0x4
EOF
EXPECT=<<EOF
0x4
EOF
RUN

NAME=member1 name of structure R2_TEST_STRUCT
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep -ao r2_struct_var_1
EOF
EXPECT=<<EOF
r2_struct_var_1
EOF
RUN

NAME=member2 name of structure R2_TEST_STRUCT
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep -ao r2_struct_var_2
EOF
EXPECT=<<EOF
r2_struct_var_2
EOF
RUN

NAME=member1 type of structure R2_TEST_STRUCT
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep r2_struct_var_1 | grep -ao long
EOF
EXPECT=<<EOF
long
EOF
RUN

NAME=member2 type of structure R2_TEST_STRUCT
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep r2_struct_var_2 | grep -ao short
EOF
EXPECT=<<EOF
short
EOF
RUN

NAME=check size of structure R2_TEST_STRUCT
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep R2_TEST_STRUCT | grep -ao 0x8
EOF
EXPECT=<<EOF
0x8
EOF
RUN

NAME=member1 offset of union R2_TEST_UNION
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep r2_union_var_1 | grep -ao 0x0
EOF
EXPECT=<<EOF
0x0
EOF
RUN

NAME=member2 offset of union R2_TEST_UNION
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep r2_union_var_2 | grep -ao 0x0
EOF
EXPECT=<<EOF
0x0
EOF
RUN

NAME=member1 name of union R2_TEST_UNION
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep -ao r2_union_var_1
EOF
EXPECT=<<EOF
r2_union_var_1
EOF
RUN

NAME=member2 name of union R2_TEST_UNION
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep -ao r2_union_var_2
EOF
EXPECT=<<EOF
r2_union_var_2
EOF
RUN

NAME=member1 type of union R2_TEST_UNION
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep r2_union_var_1 | grep -ao long
EOF
EXPECT=<<EOF
long
EOF
RUN

NAME=member2 type of union R2_TEST_UNION
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep r2_union_var_2 | grep -ao double
EOF
EXPECT=<<EOF
double
EOF
RUN

NAME=check size of union R2_TEST_UNION
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep R2_TEST_UNION | grep -ao 0x8
EOF
EXPECT=<<EOF
0x8
EOF
RUN

NAME=member1 value of enum R2_TEST_ENUM
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep eENUM1_R2 | grep -ao 0x10
EOF
EXPECT=<<EOF
0x10
EOF
RUN

NAME=member2 value of enum R2_TEST_ENUM
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep eENUM2_R2 | grep -ao 0x20
EOF
EXPECT=<<EOF
0x20
EOF
RUN

NAME=member3 vlue of enum R2_TEST_ENUM
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep eENUM_R2_MAX | grep -ao 0x21
EOF
EXPECT=<<EOF
0x21
EOF
RUN

NAME=member1 name of enum R2_TEST_ENUM
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep -ao eENUM1_R2
EOF
EXPECT=<<EOF
eENUM1_R2
eENUM1_R2
EOF
RUN

NAME=member2 name of enum R2_TEST_ENUM
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep -ao eENUM2_R2
EOF
EXPECT=<<EOF
eENUM2_R2
eENUM2_R2
EOF
RUN

NAME=member3 name of enum R2_TEST_ENUM
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep -ao eENUM_R2_MAX
EOF
EXPECT=<<EOF
eENUM_R2_MAX
eENUM_R2_MAX
EOF
RUN

NAME=check size of union R2_TEST_ENUM
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -P ${R2_FILE} | grep R2_TEST_ENUM | grep -ao 0x0
EOF
EXPECT=<<EOF
0x0
EOF
RUN

NAME=enumerate export test
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -Pr ${R2_FILE} | grep -ao R2_TEST_ENUM
EOF
EXPECT=<<EOF
R2_TEST_ENUM
EOF
RUN

NAME=enumerate value1 export test
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -Pr ${R2_FILE} | grep -ao eENUM1_R2=0x10
EOF
EXPECT=<<EOF
eENUM1_R2=0x10
EOF
RUN

NAME=enumerate value2 export test
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -Pr ${R2_FILE} | grep -ao eENUM2_R2=0x20
EOF
EXPECT=<<EOF
eENUM2_R2=0x20
EOF
RUN

NAME=enumerate value3 export test
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -Pr ${R2_FILE} | grep -ao eENUM_R2_MAX=0x21
EOF
EXPECT=<<EOF
eENUM_R2_MAX=0x21
EOF
RUN

NAME=redirection test
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -Pr ${R2_FILE} | grep -ao _unnamed_tag_ | head -n1
EOF
EXPECT=<<EOF
_unnamed_tag_
EOF
RUN

NAME=struct export test
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -Pr ${R2_FILE} | grep -ao R2_TEST_STRUCT
EOF
EXPECT=<<EOF
R2_TEST_STRUCT
EOF
RUN

NAME=struct export command
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -Pr ${R2_FILE} | grep R2_TEST_STRUCT | grep -ao pf
EOF
EXPECT=<<EOF
pf
EOF
RUN

NAME=struct export types
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -Pr ${R2_FILE} | grep R2_TEST_STRUCT | grep -ao iw
EOF
EXPECT=<<EOF
iw
EOF
RUN

NAME=struct export name1
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -Pr ${R2_FILE} | grep R2_TEST_STRUCT | grep -ao r2_struct_var_1
EOF
EXPECT=<<EOF
r2_struct_var_1
EOF
RUN

NAME=struct export name2
FILE=../bins/pdb/Project1.pdb
CMDS=<<EOF
!rabin2 -Pr ${R2_FILE} | grep R2_TEST_STRUCT | grep -ao r2_struct_var_2
EOF
EXPECT=<<EOF
r2_struct_var_2
EOF
RUN

NAME=GUID CHECK
FILE=../bins/pdb/user32.dll
CMDS=<<EOF
!rabin2 -I ${R2_FILE} | grep -ao 15F778B3671D4EFDBDCDE79905308B792
EOF
EXPECT=<<EOF
15F778B3671D4EFDBDCDE79905308B792
EOF
RUN
