content: module Tools.SPlotTest where
  import Test.HUnit
  
  import Data.Colour
  import Data.Colour.SRGB
  
  import Tools.ColorMap
  
  import Data.Map as M
  
  import System.IO(stderr)
  import System.Exit
  
  
  colorCyclingTests = TestList [
    cycleColor defaultColorMap "bar"   ~?= (base, colorMap "bar")
    ,cycleColor (colorMap "foo") "bar" ~?= (nextColor, augmentedColorMap "bar")
    ,cycleColor (colorMap "foo") "baz" ~?= (nextColor, augmentedColorMap "baz")
    ]
    where
      base                   = (sRGB24 128 128 128)
      nextColor              = sRGB24 (128+7) (128+17) (128+23)
      nextNextColor          = sRGB24 (128+7+7) (128+17+17) (128+23+23)
      colorsAssoc       name = [(name,(sRGB24 128 128 128))]
      colorMap          name = ColorMap (M.fromList (colorsAssoc name)) nextColor
      augmentedColorMap name = augment (colorMap "foo") (name, nextNextColor)
      
  splotTests = TestList [
    colorCyclingTests 
    ]
               
  runAllTests tests = do counts <- runTest tests
                         case (errors counts + failures counts) of
                           0 -> return ExitSuccess
                           n -> return (ExitFailure n)
  
  runTest :: Test -> IO Counts
  runTest  t = do (counts, _) <- runTestText (putTextToHandle stderr False) t
  		return counts
  