cbf-0.1.0.0: test/Main.hs
module Main (main) where
import Control.Applicative (many)
import Data.Binary.Get (getInt32le, runGet)
import Data.ByteString.Lazy qualified as BSL
import Data.CBF (decodePixels, readCBF)
import Data.Vector.Unboxed qualified as V
import Test.Tasty (TestTree, defaultMain, testGroup)
import Test.Tasty.HUnit (assertFailure, testCase)
main :: IO ()
main = defaultMain tests
tests :: TestTree
tests = testGroup "Tests" [unitTests]
unitTests :: TestTree
unitTests =
testGroup
"Unit Tests"
[ testCase "Read example file" do
contents <- readCBF "test-data/test_lysozyme_001_00200.cbf"
case contents of
Left _ -> assertFailure "couldn't read file"
Right image ->
case decodePixels image of
Left e -> assertFailure "couldn't decompress"
Right pixels -> do
let decompressedVector = pixels
referenceOutput <- BSL.readFile "test-data/expected_output.bin"
let referenceOutputInt32 = runGet (many getInt32le) referenceOutput
difference = dropWhile (\(l, r) -> l == r) (zip (zip [0 ..] decompressedVector) (zip [0 ..] (fromIntegral <$> referenceOutputInt32)))
print (take 10 difference)
-- V.length decompressedVector @?= length referenceOutputInt32
-- (fromIntegral <$> referenceOutputInt32) @?= V.toList decompressedVector
]