-- TerminalTest.hs

module TerminalTest (terminalTests) where

import Test.HUnit.Terminal
import Test.HUnit

try :: String -> String -> String -> Test
try lab inp exp' = lab ~: terminalAppearance inp ~?= exp'

terminalTests :: Test
terminalTests = test [
    try "empty" "" "",
    try "end in \\n" "abc\ndef\n" "abc\ndef\n",
    try "not end in \\n" "abc\ndef" "abc\ndef",
    try "return 1" "abc\ndefgh\rxyz" "abc\nxyzgh",
    try "return 2" "\nabcdefgh\rijklm\rxy\n" "\nxyklmfgh\n",
    try "return 3" "\r\rabc\r\rdef\r\r\r\nghi\r\r\n" "def\nghi\n",
    try "back 1" "abc\bdef\b\bgh\b" "abdgh",
    try "back 2" "abc\b\b\bdef\b\bxy\b\b\n" "dxy\n"
    -- \b at beginning of line
    -- nonprinting char
    ]
