fb-util-0.1.0.1: tests/AesonTest.hs
{-
Copyright (c) Meta Platforms, Inc. and affiliates.
All rights reserved.
This source code is licensed under the BSD-style license found in the
LICENSE file in the root directory of this source tree.
-}
module AesonTest (main) where
import Test.HUnit
import TestRunner
import Data.Aeson hiding (decode)
import Data.Char
import qualified Data.Text as Text
import Util.Aeson
utf16SurrogatesTest :: Test
utf16SurrogatesTest = TestLabel "UTF-16 surrogates" . TestCase $ do
assertEqual "U+FFFF" (Just $ pack [0xFFFF]) (decode "\"\\uffff\"")
assertEqual "U+24B62" (Just $ pack [0x24B62]) (decode "\"\\uD852\\uDF62\"")
assertEqual "Invalid" (Nothing :: Maybe Value) (decode "\"\\uDF62\\uD852\"")
where
pack = String . Text.pack . map chr
decode = either (const Nothing) Just . parseValueStrict
main :: IO ()
main = testRunner $ TestList
[ utf16SurrogatesTest
]