NAME=pdJ+html
FILE=bins/mach0/ls-osx-x86_64
CMDS=<<EOF
pdJ 1~{}
e scr.html=1
pdJ 1~{}
EOF
EXPECT=<<EOF
[
  {
    "addr": 4294972376,
    "text": "            ;-- main:"
  },
  {
    "addr": 4294972376,
    "text": "            ;-- entry0:"
  },
  {
    "addr": 4294972376,
    "text": "            ;-- func.1000013d8:"
  },
  {
    "addr": 4294972376,
    "text": "            0x1000013d8      55             push rbp"
  }
]
[
  {
    "addr": 4294972376,
    "text": "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;--&nbsp;main:"
  },
  {
    "addr": 4294972376,
    "text": "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;--&nbsp;entry0:"
  },
  {
    "addr": 4294972376,
    "text": "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;--&nbsp;func.1000013d8:"
  },
  {
    "addr": 4294972376,
    "text": "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x1000013d8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;55&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;rbp"
  }
]
EOF
RUN

NAME=pdj negative count without analysis
FILE=malloc://32
ARGS=-a arm -e asm.bits=64
CMDS=<<EOF
wx 1e0080d2e50300aa1f2003d5c0035fd6
s 8
pdj -2~{[0].addr}
pdj -2~{[0].opcode}
pdj -2~{[1].addr}
pdj -2~{[1].opcode}
EOF
EXPECT=<<EOF
0
mov x30, 0
4
mov x5, x0
EOF
RUN

NAME=pdj negative count with invalid instruction in window
FILE=malloc://64
ARGS=-a arm -e asm.bits=64
CMDS=<<EOF
b 64
wow 1f2003d5
wx ffffffff @ 0x24
s 0x40
pdj -9~{[0].addr}
pdj -9~{[2].opcode}
pdj -9~{[2].size}
pdj -9~{[8].addr}
EOF
EXPECT=<<EOF
28
invalid
4
60
EOF
RUN

NAME=pdj negative count near start of file
FILE=malloc://64
ARGS=-a arm -e asm.bits=64
CMDS=<<EOF
b 64
wow 1f2003d5
s 8
pdj -4~{[0].addr}
pdj -4~{[3].addr}
EOF
EXPECT=<<EOF
0
12
EOF
RUN

NAME=pdj negative count at the very start of the file shows the forward window like pd
FILE=malloc://64
ARGS=-a arm -e asm.bits=64
CMDS=<<EOF
b 64
wow 1f2003d5
s 0
pdj -4~{[0].addr}
pdj -4~{[3].addr}
EOF
EXPECT=<<EOF
0
12
EOF
RUN

NAME=pdj negative count with window larger than blocksize
FILE=malloc://512
ARGS=-a arm -e asm.bits=64
CMDS=<<EOF
b 512
wow 1f2003d5
b 64
s 0x100
pdj -20~{[0].addr}
pdj -20~{[19].addr}
EOF
EXPECT=<<EOF
176
252
EOF
RUN
