content: module Verify.Graphics.Vty.Output where
  
  import Control.Applicative ((<$>))
  
  import Graphics.Vty.Output.Mock
  
  import Data.IORef
  import qualified Data.String.UTF8 as UTF8
  
  import Test.QuickCheck.Property
  
  -- A list of terminals that should be supported. This started with a
  -- list of terminals ubuntu supported. Then those terminals that really
  -- could not be supported were removed. Then a few more were pruned
  -- until a reasonable looking set was made.
  terminalsOfInterest :: [String]
  terminalsOfInterest =
      [ "vt100"
      , "vt220"
      , "vt102"
      , "xterm-r5"
      , "xterm-xfree86"
      , "xterm-r6"
      , "xterm-256color"
      , "xterm-vt220"
      , "xterm-debian"
      , "xterm-mono"
      , "xterm-color"
      , "xterm"
      , "mach"
      , "mach-bold"
      , "mach-color"
      , "linux"
      , "ansi"
      , "hurd"
      , "Eterm"
      , "pcansi"
      , "screen-256color"
      , "screen-bce"
      , "screen-s"
      , "screen-w"
      , "screen"
      , "screen-256color-bce"
      , "sun"
      , "rxvt"
      , "rxvt-unicode"
      , "rxvt-basic"
      , "cygwin"
      ]
  
  compareMockOutput :: MockData -> String -> IO Result
  compareMockOutput mockData expectedStr = do
      outStr <- UTF8.toString <$> readIORef mockData
      if outStr /=  expectedStr
          then return $ failed { reason = "bytes\n" ++ outStr
                                        ++ "\nare not the expected bytes\n"
                                        ++ expectedStr
                               }
          else return succeeded
  