module Main where import System.IO import Test.HUnit import Control.Monad import qualified Data.Map as M import qualified Control.Exception as E import qualified Data.ByteString as B import qualified Data.OSXAr as O testAr = withBinaryFile "./tests/libfoo.a" ReadMode $ \h -> do fil <- B.hGetContents h res <- E.try (E.evaluate (O.parseOSXAr fil)) :: IO (Either E.SomeException (M.Map Int O.ArchiveEntry, Maybe (M.Map String Int))) case res of Left e -> assertFailure $ "Exception while parsing OSX archive: " ++ show e Right (ents, Just symtab) -> do assertEqual "Symbol Table Lookup" (O.filename (ents M.! (symtab M.! "_foo"))) "test.o" tests = TestList [ TestLabel "OSX Archive" $ TestCase testAr ] main = runTestTT tests