packages feed

willow-0.1.0.0: test/Test/Willow/Unit/Encoding/SingleByte.hs

{-|
Description:    

Copyright:      (c) 2020 Samuel May
License:        MPL-2.0
Maintainer:     ag.eitilt@gmail.com

Stability:      experimental
Portability:    portable
-}
module Test.Willow.Unit.Encoding.SingleByte
    ( tests
    ) where


import qualified Data.ByteString.Lazy as BS.L
import qualified Data.Maybe as Y
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
import qualified Data.Text.IO as T
import qualified Data.Text.Lazy as T.L
import qualified Data.Text.Read as T.R

import qualified Test.HUnit as U

import System.FilePath ( (</>), (<.>) )
import Test.HUnit ( (~:), (~?=), (@?) )

import Web.Willow.Common.Encoding
import Web.Willow.Common.Encoding.Labels

import Test.Willow.Unit.Common


tests :: IO U.Test
tests =
    return $ "single-byte encodings" ~: U.TestList
        []
        {-
        [ "encoded index is sane" ~: U.TestList $ map expectedCharsetEncode charsets'
        , "encode-decode index roundtrips" ~: U.TestList $ map roundtrip encodings
        ]
        -}


{-
expectedCharsetEncode :: (Encoding, [Maybe Char]) -> U.Test
expectedCharsetEncode (enc, index) = show enc ~: U.TestCase $ do
    let bs' = encode enc . T.L.pack $ Y.catMaybes index
        bs = Y.fromMaybe BS.L.empty bs'
    
    Y.isJust bs' @? "encoding failed"
    BS.L.length bs <= 0x100 @? "charset too long"
    -- This doesn't check the encoded values are correct, but it does at least
    -- make sure nothing's out of order.
    snd (BS.L.foldl' (\(c, b) c' -> (c', b && c < c')) (0x00, True) $ BS.L.drop 1 bs)
        @? "charset out of order"

roundtrip :: (Encoding, [Maybe Char]) -> U.Test
roundtrip (enc, index) = show enc ~:
    (encode enc index' >>= decode' enc) ~?= Just index'
  where index' = T.L.pack $ Y.catMaybes index
-}