flatbuffers-0.3.0.0: test/FlatBuffers/Integration/HaskellToScalaSpec.hs
{-# LANGUAGE OverloadedStrings #-}
-- {-# LANGUAGE TypeApplications #-}
module FlatBuffers.Integration.HaskellToScalaSpec where
-- import Data.Aeson ( (.=), Value(..), object )
-- import qualified Data.Aeson as J
-- import qualified Data.ByteString.Lazy as BSL
-- import qualified Data.ByteString.Lazy.UTF8 as BSLU
-- import Data.Int
-- import Examples
-- import FlatBuffers
-- import qualified FlatBuffers.Vector as Vec
-- import Network.HTTP.Client
-- import Network.HTTP.Types.Status ( statusCode )
import TestImports
spec :: Spec
spec =
describe "Haskell encoders should be consistent with Scala decoders" $
it "VectorOfUnions" $ do
1 `shouldBe` (1 :: Int)
-- testCase
-- "VectorOfUnions"
-- (encode $ vectorOfUnions
-- (Just (Vec.singleton (weaponSword (sword (Just "hi")))))
-- (Vec.singleton (weaponSword (sword (Just "hi2"))))
-- )
-- (object
-- [ "xs" .= [object ["x" .= String "hi"]]
-- , "xsReq" .= [object ["x" .= String "hi2"]]
-- ]
-- )
-- testCase
-- "VectorOfUnions"
-- (encode $ vectorOfUnions
-- (Just (Vec.singleton (weaponSword (sword Nothing))))
-- (Vec.singleton (weaponAxe (axe Nothing)))
-- )
-- (object ["xs" .= [object ["x" .= Null]], "xsReq" .= [object ["y" .= Number 0]]])
-- testCase
-- "VectorOfUnions"
-- (encode $ vectorOfUnions
-- (Just $ Vec.fromList'
-- [ weaponSword (sword (Just "hi"))
-- , none
-- , weaponAxe (axe (Just maxBound))
-- , weaponSword (sword (Just "oi"))
-- ]
-- )
-- (Vec.fromList'
-- [ weaponSword (sword (Just "hi2"))
-- , none
-- , weaponAxe (axe (Just minBound))
-- , weaponSword (sword (Just "oi2"))
-- ]
-- )
-- )
-- (object
-- [ "xs" .=
-- [ object ["x" .= String "hi"]
-- , String "NONE"
-- , object ["y" .= maxBound @Int32]
-- , object ["x" .= String "oi"]
-- ]
-- , "xsReq" .=
-- [ object ["x" .= String "hi2"]
-- , String "NONE"
-- , object ["y" .= minBound @Int32]
-- , object ["x" .= String "oi2"]
-- ]
-- ])
-- testCase
-- "VectorOfUnions"
-- (encode $ vectorOfUnions (Just Vec.empty) Vec.empty)
-- (object ["xs" .= [] @Value, "xsReq" .= [] @Value])
-- testCase
-- "VectorOfUnions"
-- (encode $ vectorOfUnions Nothing Vec.empty)
-- (object ["xs" .= [] @Value, "xsReq" .= [] @Value])
-- testCase :: HasCallStack => String -> BSL.ByteString -> J.Value -> IO ()
-- testCase flatbufferName bs expectedJson = do
-- man <- newManager defaultManagerSettings
-- req <- parseRequest ("http://localhost:8080/" ++ flatbufferName)
-- let req' = req {method = "POST", requestBody = RequestBodyLBS bs}
-- rsp <- httpLbs req' man
-- case statusCode $ responseStatus rsp of
-- 200 ->
-- (PrettyJson <$> J.decode @J.Value (responseBody rsp)) `shouldBe`
-- Just (PrettyJson expectedJson)
-- _ -> expectationFailure ("Failed: " ++ BSLU.toString (responseBody rsp))