NAME=NE crash
FILE=bins/ne/necrash
CMDS=<<EOF
aaa
i~format
i~csum
aflc
EOF
EXPECT=<<EOF
format   ne
hdr.csum c258016a
0
EOF
RUN
NAME=NE Symbols
FILE=bins/ne/anim8.exe
CMDS=is
EXPECT=<<EOF
nth paddr      vaddr      bind   type size lib name       demangled
-------------------------------------------------------------------
0   0x00000a00 0x00000a00 NONE   NONE 0        ANIM8
1   0x00000d8e 0x00000d8e GLOBAL NONE 0        WNDPROC
2   0x00002b5a 0x00002b5a GLOBAL NONE 0        DIAL_ABOUT
0   0x00000a00 0x00000a00 NONE   NONE 0        ANIM8
EOF
RUN

NAME=NE preserve unnamed entry symbols
ARGS=-e bin.unnamed=false
FILE=bins/fuzzed/nepocaligns-17
CMDS=<<EOF
is~entry~?
EOF
EXPECT=<<EOF
40
EOF
RUN

NAME=NE detect minimal low-offset header
FILE=bins/fuzzed/nepoc00
CMDS=i~format
EXPECT=<<EOF
format   ne
EOF
RUN

NAME=NE recover low header offset with poisoned high word
FILE=bins/fuzzed/nepocaligns-06
CMDS=i~format
EXPECT=<<EOF
format   ne
EOF
RUN

NAME=NE preserve entries with zero-extended header offset
FILE=bins/fuzzed/nepocaligns-09
CMDS=<<EOF
i~format
is~entry~?
EOF
EXPECT=<<EOF
format   ne
8
EOF
RUN

NAME=NE Segments
FILE=bins/ne/anim8.exe
CMDS=iSS
EXPECT=<<EOF
nth paddr         size vaddr        vsize perm flags type name
--------------------------------------------------------------
0   0x00000a00  0x54ee 0x00000a00  0x54ee ---x 0x0   MAP  MOVEABLE.2560
1   0x00007600  0x3ec4 0x00007600  0x3ec4 -rwx 0x0   MAP  MOVEABLE.30208
EOF
RUN

NAME=NE Resources JSON
FILE=bins/ne/anim8.exe
CMDS=iuj~{}~"name":
EXPECT=<<EOF
    "name": "ICONX",
    "name": "FRAME_1",
    "name": "FRAME_10",
    "name": "FRAME_11",
    "name": "FRAME_12",
    "name": "FRAME_13",
    "name": "FRAME_14",
    "name": "FRAME_15",
    "name": "FRAME_16",
    "name": "FRAME_17",
    "name": "FRAME_18",
    "name": "FRAME_19",
    "name": "FRAME_2",
    "name": "FRAME_20",
    "name": "FRAME_21",
    "name": "FRAME_22",
    "name": "FRAME_23",
    "name": "FRAME_24",
    "name": "FRAME_25",
    "name": "FRAME_26",
    "name": "FRAME_27",
    "name": "FRAME_28",
    "name": "FRAME_29",
    "name": "FRAME_3",
    "name": "FRAME_30",
    "name": "FRAME_4",
    "name": "FRAME_5",
    "name": "FRAME_6",
    "name": "FRAME_7",
    "name": "FRAME_8",
    "name": "FRAME_9",
    "name": "MENUS",
    "name": "DIAL_ABOUT",
    "name": "4",
    "name": "5",
    "name": "9",
    "name": "626",
    "name": "ACCELS",
    "name": "1",
EOF
RUN

NAME=NE Module imports
FILE=bins/ne/anim8.exe
CMDS=ii
EXPECT=<<EOF
nth vaddr      bind type lib name
---------------------------------
1   0x00000000 NONE NONE     KERNEL
2   0x00000000 NONE NONE     USER
3   0x00000000 NONE NONE     GDI
4   0x00000000 NONE NONE     WIN87EM
EOF
RUN

NAME=NE Relocs
FILE=bins/ne/anim8.exe
CMDS=ir~0x?
EXPECT=<<EOF
718
EOF
RUN

NAME=NE Relocs and resolve function ordinal names
FILE=bins/ne/anim8.exe
CMDS=<<EOF
ir~WIN87EM
ir~:0..11
EOF
EXPECT=<<EOF
0x00004c98 0x00004c98 SET_32 3     WIN87EM.__FPMATH
0x00004cb2 0x00004cb2 SET_16 5     WIN87EM.__FPMATH
0x00004cb8 0x00004cb8 SET_16 2     WIN87EM.__FPMATH
0x00004cbd 0x00004cbd SET_32 3     WIN87EM.__FPMATH
0x00004ccb 0x00004ccb SET_32 3     WIN87EM.__FPMATH
0x0000569a 0x0000569a ADD_16 5     WIN87EM.0
0x000056a0 0x000056a0 ADD_16 5     WIN87EM.0
0x000056b3 0x000056b3 ADD_16 5     WIN87EM.0
0x00005891 0x00005891 ADD_16 5     WIN87EM.0
vaddr      paddr      type   ntype name
---------------------------------------
0x00000a01 0x00000a01 SET_32 3     KERNEL.INITTASK
0x00000a25 0x00000a25 SET_32 3     KERNEL.LOCKSEGMENT
0x00000a3c 0x00000a3c SET_32 3     KERNEL.WAITEVENT
0x00000a45 0x00000a45 SET_32 3     USER.INITAPP
0x00000a74 0x00000a74 SET_32 3     KERNEL.GETWINFLAGS
0x00000ad0 0x00000ad0 SET_32 3     KERNEL.UNLOCKSEGMENT
0x00000f5e 0x00000f5e SET_32 3     USER.SETTIMER
0x00000f4d 0x00000f4d SET_32 3     USER.KILLTIMER
0x00000f13 0x00000f13 SET_32 3     USER.SETTIMER
EOF
RUN
