NAME=basic cw usage
CMDS=<<EOF
cw 0 4 p8
cw 100 4 p8
cw # show all
?e ---
cw 100 # show at addr
?e ---
cw 200 # doesn't exist - no output
?e ---
cwq # show quiet - no output yet
?e ---
cwj~{} # show json
?e ---
cw* # show commands
?e ---
cw 0 8 px # overwrite
cw*
?e ---
cwd 0 # delete
cw*
EOF
EXPECT=<<EOF
0x00000000
00000000
0x00000064
00000000
---
0x00000064
00000000
---
---
---
[
  {
    "addr": 0,
    "changed": false,
    "cmd": "p8",
    "cmd_out": "00000000\n"
  },
  {
    "addr": 100,
    "changed": false,
    "cmd": "p8",
    "cmd_out": "00000000\n"
  }
]
---
cw 0x00000000 4 p8
cw 0x00000064 4 p8
---
cw 0x00000000 8 px
cw 0x00000064 4 p8
---
cw 0x00000064 4 p8
EOF
RUN

NAME=cw with cwu update
CMDS=<<EOF
cw 0 4 p8
cw*
?e ---
wx 11223344
cwu # update
cw
?e ---
cw*
?e ---
cwq
?e ---
cwj~{}
EOF
EXPECT=<<EOF
cw 0x00000000 4 p8
---
0x00000000 modified
11223344
---
cw 0x00000000 4 p8 # differs
---
0x00000000 has changed
---
[
  {
    "addr": 0,
    "changed": true,
    "cmd": "p8",
    "cmd_out": "11223344\n"
  }
]
EOF
RUN

NAME=cw with update and cwr revert
CMDS=<<EOF
cw 0 4 p8
cw*
?e ---
wx 11223344
cwu # update
cw*
?e ---
cwr 0 # revert
cw* # no longer updated internally
EOF
EXPECT=<<EOF
cw 0x00000000 4 p8
---
cw 0x00000000 4 p8 # differs
---
cw 0x00000000 4 p8
EOF
RUN
