packages feed

toysolver-0.0.3: test/TestMPSFile.hs

{-# LANGUAGE TemplateHaskell #-}
module Main (main) where

import Control.Monad
import Data.List
import Data.Maybe
import Test.HUnit hiding (Test)
import Test.Framework (Test, defaultMain, testGroup)
import Test.Framework.TH
import Test.Framework.Providers.HUnit
import Text.MPSFile

case_testdata = checkString "testdata" testdata
case_example2 = checkFile "samples/mps/example2.mps"
case_ind1     = checkFile "samples/mps/ind1.mps"
case_intvar1  = checkFile "samples/mps/intvar1.mps"
case_intvar2  = checkFile "samples/mps/intvar2.mps"
case_quadobj1 = checkFile "samples/mps/quadobj1.mps"
case_quadobj2 = checkFile "samples/mps/quadobj2.mps"
case_ranges   = checkFile "samples/mps/ranges.mps"
case_sos      = checkFile "samples/mps/sos.mps"
case_sc       = checkFile "samples/mps/sc.mps"

------------------------------------------------------------------------
-- Sample data

testdata :: String
testdata = unlines
  [ "NAME          example2.mps"
  , "ROWS"
  , " N  obj     "
  , " L  c1      "
  , " L  c2      "
  , "COLUMNS"
  , "    x1        obj                 -1   c1                  -1"
  , "    x1        c2                   1"
  , "    x2        obj                 -2   c1                   1"
  , "    x2        c2                  -3"
  , "    x3        obj                 -3   c1                   1"
  , "    x3        c2                   1"
  , "RHS"
  , "    rhs       c1                  20   c2                  30"
  , "BOUNDS"
  , " UP BOUND     x1                  40"
  , "ENDATA"
  ]

------------------------------------------------------------------------
-- Utilities

checkFile :: FilePath -> IO ()
checkFile fname = do
  r <- parseFile fname
  case r of
    Left err -> assertFailure (show err)
    Right lp -> return ()

checkString :: String -> String -> IO ()
checkString name str = do
  case parseString name str of
    Left err -> assertFailure (show err)
    Right lp -> return ()

------------------------------------------------------------------------
-- Test harness

main :: IO ()
main = $(defaultMainGenerator)