packages feed

willow-0.1.0.0: test/Test/Willow/WebPlatformTests/Manual/Encoding/ApiReplacementEncodings.hs

{-|
Description:    Emulating tests from @encoding/api-replacement-encodings.any.js@

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

Stability:      experimental
Portability:    portable

The original test checks that initializing the joint encoder/decoder fails.
Since the API functions aren't yet implemented, that's approximated by the
("static" scope) encoder failing on something it really shouldn't for
implemented algorithms: an empty string.
-}
module Test.Willow.WebPlatformTests.Manual.Encoding.ApiReplacementEncodings
    ( tests
    ) where


import qualified Data.Maybe as Y
import qualified Data.Text as T

import qualified Test.HUnit as U

import Test.HUnit ( (~:), (~?) )

import Web.Willow.Common.Encoding

import Test.Willow.WebPlatformTests.Manual.CommonReader


tests :: IO U.Test
tests = do
    replacementRejected' <- someEncodings replacementGroup replacementRejected
    return $ "api-replacement-encodings.any.js" ~: U.TestList
        [ "'replacement' labels rejected" ~: replacementRejected'
        ]


replacementGroup :: (String, String, T.Text) -> Bool
replacementGroup (_, "replacement", _) = True
replacementGroup _ = False

replacementRejected :: Encoding -> U.Test
replacementRejected enc =
    null (encodeEnc enc $ T.pack "replacement") ~? "'replacement' should never encode anything"