NAME=y cat
FILE=malloc://1024
CMDS=<<EOF
w catty @0
pf z @0x0
yt 4 0x10
pf z @0x10
yp
EOF
EXPECT=<<EOF
0x00000000 = "catty"
0x00000010 = "catt"
catt
EOF
RUN

NAME=y, yx cat
FILE=malloc://1024
CMDS=<<EOF
w catty @0
pf z @0x0
yt 4 0x10
pf z @0x10
yx
EOF
EXPECT=<<EOF
0x00000000 = "catty"
0x00000010 = "catt"
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x00000000  6361 7474                                catt
EOF
RUN

NAME=yz
FILE=malloc://128
CMDS=<<EOF
w HelloWorld @0
yz
yp
yz 5
yp
yz 4 @ 4
yp
yz @ 6
yp
yz 2 @ 6
yp
b 6
yz
yp
EOF
EXPECT=<<EOF
HelloWorld
Hello
oWor
orld
or
HelloW
EOF
RUN

NAME=y dblf
FILE=malloc://1024
CMDS=<<EOF
y 64
ytf $f
y 64
ytf $f
y 64
ytf $f
y 64
ytf $f
?e done
EOF
EXPECT=<<EOF
done
EOF
RUN

NAME=file yank reads its own descriptor without changing IO state
FILE=malloc://16
CMDS=<<EOF
wx 11223344
s 8
e file.loadalign=0
yfa hex://aabbccdd
y8
e io.va=false
yf 2 1 hex://aabbccdd
y8
e io.autofd=false
e file.loadalign=0x1000
e io.va=true
yf 2 1 hex://aabbccdd
y8
yfa hex://aabbccdd
y8
oqq
oq~?
om~?
s
p8 4 @ 0
EOF
EXPECT=<<EOF
aabbccdd
bbcc
bbcc
aabbccdd
3
1
1
0x8
11223344
EOF
RUN

NAME=file yank rejects out-of-range reads without replacing the clipboard
FILE=malloc://16
CMDS=<<EOF
ywx 1122
yf 2 3 hex://aabbccdd
yf 1 4 hex://aabbccdd
yf 1 0xffffffffffffffff hex://aabbccdd
yf 0x80000000 0 hex://aabbccdd
y8
oq~?
om~?
EOF
EXPECT=<<EOF
1122
1
1
EOF
EXPECT_ERR=<<EOF
ERROR: Invalid file yank range
ERROR: Invalid file yank range
ERROR: Invalid file yank range
ERROR: Invalid file yank range
EOF
RUN
