packages feed

itanium-abi-0.1.0.0: tests/DemangleTests.hs

module Main ( main ) where

import qualified System.IO as IO
import System.Process
import Test.Framework ( defaultMain, testGroup, Test )
import Test.Framework.Providers.HUnit
import Test.HUnit hiding ( Test )

import ABI.Itanium

mkTestCase :: (String, String) -> Test
mkTestCase (sym, expected) = testCase sym $ do
  case demangleName sym of
    Left err -> assertFailure (sym ++ " : " ++ err)
    Right dname -> do
      let oracle = filter (/= '\n') expected
      assertEqual sym oracle (cxxNameToString dname)

main :: IO ()
main = do
  inputs <- IO.readFile "tests/test-cases.txt"
  expecteds <- readProcess "demangle" [] inputs
  let symbols = zip (lines inputs) (lines expecteds)
      tests = [ testGroup "QtGUI" (map mkTestCase symbols) ]
  defaultMain tests