packages feed

snappy-c-0.1.0: test/Main.hs

{-# OPTIONS_GHC -Wno-warnings-deprecations #-}

module Main where

import Test.Prop.RoundTrip qualified as RoundTrip

import Codec.Compression.SnappyC.Raw qualified as Raw
import Codec.Compression.SnappyC.Framed qualified as Framed

import Data.ByteString.Lazy qualified as BS.Lazy
import Test.Tasty
import Test.Tasty.HUnit

main :: IO ()
main =
    defaultMain $
      testGroup "Test.SnappyC"
        [ -- Round trip property tests
          RoundTrip.tests

          -- Sanity checks

          -- Ensure size of frame compressed output for empty input is exactly
          -- 10 bytes
        , testCase "emptyCompressedSize" $
            10 @?= BS.Lazy.length (Framed.compress "")

          -- Ensure invalid raw decompression is 'Nothing'
        , testCase "invalidRawDecompress" $
            Nothing @?= Raw.decompress "not a valid compressed string"

          -- Ensure invalid framed decompression throws an exception
        , testCase "invalidFramedDecompress" $
            case Framed.decompress' "not a valid compressed string" of
              Right _ -> assertFailure "invalid decompression succeeded"
              Left _  -> return ()
        ]