The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
#
# Make sure the VT102 module can handle line and character insertion and
# deletion, and line/screen clearing.
#
# Copyright (C) Andrew Wood
# NO WARRANTY - see COPYING.
#

require Term::VT102;
require 't/testbase';

my $fill = "0123456789\r\n" .
           "1234567890\r\n" .
           "2345678901\r\n" .
           "3456789012\e[H";

run_tests ([(
  [ 10, 4, $fill . "",				# 1: nothing
    "0123456789",
    "1234567890",
    "2345678901",
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[P",			# 2: DCH 1
    "123456789\0",
    "1234567890",
    "2345678901",
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[2;8H\e[2P",		# 3: DCH 2
    "0123456789",
    "12345670\0\0",
    "2345678901",
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[3;7H\e[9P",		# 4: DCH 9
    "0123456789",
    "1234567890",
    "234567\0\0\0\0",
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[X",			# 5: ECH 1
    "\0" . "123456789",
    "1234567890",
    "2345678901",
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[2;8H\e[2X",		# 6: ECH 2
    "0123456789",
    "1234567\0\0" . "0",
    "2345678901",
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[3;7H\e[9X",		# 7: ECH 9
    "0123456789",
    "1234567890",
    "234567\0\0\0\0",
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[@",			# 8: ICH 1
    "\0" . "012345678",
    "1234567890",
    "2345678901",
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[2;8H\e[2@",		# 9: ICH 2
    "0123456789",
    "1234567\0\0" . "8",
    "2345678901",
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[3;7H\e[9@",		# 10: ICH 9
    "0123456789",
    "1234567890",
    "234567\0\0\0\0",
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[2;4H\e[J",		# 11: ED 0
    "0123456789",
    "123" . ("\0" x 7),
    ("\0" x 10),
    ("\0" x 10),
  ],
  [ 10, 4, $fill . "\e[2;4H\e[1J",		# 12: ED 1
    ("\0" x 10),
    ("\0" x 4) . "567890",
    "2345678901",
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[2;4H\e[2J",		# 13: ED 2
    ("\0" x 10),
    ("\0" x 10),
    ("\0" x 10),
    ("\0" x 10),
  ],
  [ 10, 4, $fill . "\e[2;4H\e[K",		# 14: EL 0
    "0123456789",
    "123" . ("\0" x 7),
    "2345678901",
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[2;4H\e[1K",		# 15: EL 1
    "0123456789",
    ("\0" x 4) . "567890",
    "2345678901",
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[2;4H\e[2K",		# 16: EL 2
    "0123456789",
    ("\0" x 10),
    "2345678901",
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[2;4H\e[LAbC",		# 17: IL 1
    "0123456789",
    ("\0" x 3) . "AbC" . ("\0" x 4),
    "1234567890",
    "2345678901",
  ],
  [ 10, 4, $fill . "\e[2;4H\e[2LAbC",		# 18: IL 2
    "0123456789",
    ("\0" x 3) . "AbC" . ("\0" x 4),
    ("\0" x 10),
    "1234567890",
  ],
  [ 10, 4, $fill . "\e[2;4H\e[9LAbC",		# 19: IL 3
    "0123456789",
    ("\0" x 3) . "AbC" . ("\0" x 4),
    ("\0" x 10),
    ("\0" x 10),
  ],
  [ 10, 4, $fill . "\e[1;1H\e[2LAbC",		# 20: IL 4
    "AbC" . ("\0" x 7),
    ("\0" x 10),
    "0123456789",
    "1234567890",
  ],
  [ 10, 4, $fill . "\e[2;4H\e[MAbC",		# 21: DL 1
    "0123456789",
    "234AbC8901",
    "3456789012",
    ("\0" x 10),
  ],
  [ 10, 4, $fill . "\e[2;4H\e[2MAbC",		# 22: DL 2
    "0123456789",
    "345AbC9012",
    ("\0" x 10),
    ("\0" x 10),
  ],
  [ 10, 4, $fill . "\e[2;4H\e[9MAbC",		# 23: DL 3
    "0123456789",
    ("\0" x 3) . "AbC" . ("\0" x 4),
    ("\0" x 10),
    ("\0" x 10),
  ],
  [ 10, 4, $fill . "\e[1;1H\e[2MAbC",		# 24: DL 4
    "AbC5678901",
    "3456789012",
    ("\0" x 10),
    ("\0" x 10),
  ],
  [ 10, 4, $fill . "\e[2;3r\e[2;4H\e[LAbC",	# 25: DECSTBM IL 1
    "0123456789",
    ("\0" x 3) . "AbC" . ("\0" x 4),
    "1234567890",
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[2;3r\e[2;4H\e[2LAbC",	# 26: DECSTBM IL 2
    "0123456789",
    ("\0" x 3) . "AbC" . ("\0" x 4),
    ("\0" x 10),
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[2;3r\e[2;4H\e[9LAbC",	# 27: DECSTBM IL 3
    "0123456789",
    ("\0" x 3) . "AbC" . ("\0" x 4),
    ("\0" x 10),
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[2;3r\e[1;1H\e[2LAbC",	# 28: DECSTBM IL 4
    "AbC" . ("\0" x 7),
    "1234567890",
    "2345678901",
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[2;3r\e[2;4H\e[MAbC",	# 29: DECSTBM DL 1
    "0123456789",
    "234AbC8901",
    ("\0" x 10),
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[2;3r\e[2;4H\e[2MAbC",	# 30: DECSTBM DL 2
    "0123456789",
    ("\0" x 3) . "AbC" . ("\0" x 4),
    ("\0" x 10),
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[2;3r\e[2;4H\e[9MAbC",	# 31: DECSTBM DL 3
    "0123456789",
    ("\0" x 3) . "AbC" . ("\0" x 4),
    ("\0" x 10),
    "3456789012",
  ],
  [ 10, 4, $fill . "\e[2;3r\e[1;1H\e[2MAbC",	# 32: DECSTBM DL 4
    "AbC" . ("\0" x 7),
    "1234567890",
    "2345678901",
    "3456789012",
  ],
)]);

# EOF