shpool-vterm 0.1.0

An in-memory terminal to support session restore in shpool.
Documentation
INIT
# Run these tests on a much smaller default screen, so debug output is
# nowhere near as noisy
RESIZE 5,10
WANTSTATE
WANTSCREEN r
RESET

!Resize wider reflows wide lines
RESET
PUSH "A"x12
  ?screen_row 0 = "AAAAAAAAAA"
  ?screen_row 1 = "AA"
  ?lineinfo 1 = cont
  ?cursor = 1,2
RESIZE 5,15
  ?screen_row 0 = "AAAAAAAAAAAA"
  ?screen_row 1 = 
  ?lineinfo 1 =
  ?cursor = 0,12
RESIZE 5,20
  ?screen_row 0 = "AAAAAAAAAAAA"
  ?screen_row 1 = 
  ?lineinfo 1 =
  ?cursor = 0,12

!Resize narrower can create continuation lines
RESET
RESIZE 5,10
PUSH "ABCDEFGHI"
  ?screen_row 0 = "ABCDEFGHI"
  ?screen_row 1 = ""
  ?lineinfo 1 =
  ?cursor = 0,9
RESIZE 5,8
  ?screen_row 0 = "ABCDEFGH"
  ?screen_row 1 = "I"
  ?lineinfo 1 = cont
  ?cursor = 1,1
RESIZE 5,6
  ?screen_row 0 = "ABCDEF"
  ?screen_row 1 = "GHI"
  ?lineinfo 1 = cont
  ?cursor = 1,3

!Shell wrapped prompt behaviour
RESET
RESIZE 5,10
PUSH "PROMPT GOES HERE\r\n> \r\n\r\nPROMPT GOES HERE\r\n> "
  ?screen_row 0 = "> "
  ?screen_row 1 = ""
  ?screen_row 2 = "PROMPT GOE"
  ?screen_row 3 = "S HERE"
  ?lineinfo 3 = cont
  ?screen_row 4 = "> "
  ?cursor = 4,2
RESIZE 5,11
  ?screen_row 0 = "> "
  ?screen_row 1 = ""
  ?screen_row 2 = "PROMPT GOES"
  ?screen_row 3 = " HERE"
  ?lineinfo 3 = cont
  ?screen_row 4 = "> "
  ?cursor = 4,2
RESIZE 5,12
  ?screen_row 0 = "> "
  ?screen_row 1 = ""
  ?screen_row 2 = "PROMPT GOES "
  ?screen_row 3 = "HERE"
  ?lineinfo 3 = cont
  ?screen_row 4 = "> "
  ?cursor = 4,2
RESIZE 5,16
  ?screen_row 0 = "> "
  ?screen_row 1 = ""
  ?screen_row 2 = "PROMPT GOES HERE"
  ?lineinfo 3 =
  ?screen_row 3 = "> "
  ?cursor = 3,2

!Cursor goes missing
# For more context: https://github.com/neovim/neovim/pull/21124
RESET
RESIZE 5,5
RESIZE 3,1
PUSH "\x1b[2;1Habc\r\n\x1b[H"
RESIZE 1,1
  ?cursor = 0,0