mirror of
https://github.com/zap-proto/haskell.git
synced 2026-10-30 15:05:00 +00:00
39 lines
1.7 KiB
Haskell
39 lines
1.7 KiB
Haskell
{-# LANGUAGE DuplicateRecordFields #-}
|
|
{-# LANGUAGE NamedFieldPuns #-}
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
module Regression (regressionTests) where
|
|
|
|
import Test.Hspec
|
|
|
|
import Capnp (bsToValue, def)
|
|
|
|
import Capnp.Gen.Aircraft.Pure
|
|
import Capnp.Gen.Capnp.Rpc.Pure
|
|
|
|
regressionTests :: Spec
|
|
regressionTests = describe "Regression tests" $ do
|
|
it "Should decode abort message successfully (issue #56)" $ do
|
|
let bytes =
|
|
"\NUL\NUL\NUL\NUL\ETB\NUL\NUL\NUL\NUL\NUL\NUL\NUL\SOH\NUL" <>
|
|
"\SOH\NUL\SOH\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL" <>
|
|
"\SOH\NUL\SOH\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\SOH\NUL" <>
|
|
"\NUL\NULz\EOT\NUL\NULYour vat sent an 'unimplemented' " <>
|
|
"message for an abort message that its remote peer never " <>
|
|
"sent. This is likely a bug in your capnproto library.\NUL\NUL"
|
|
msg <- bsToValue bytes
|
|
msg `shouldBe` Message'abort def
|
|
{ reason =
|
|
"Your vat sent an 'unimplemented' message for an abort " <>
|
|
"message that its remote peer never sent. This is likely " <>
|
|
"a bug in your capnproto library."
|
|
, type_ = Exception'Type'failed
|
|
}
|
|
it "Should decode negative default values correctly (issue #55)" $ do
|
|
-- Note that this was never actually broken, but we were getting
|
|
-- a warning about a literal overflowing the bounds of its type.
|
|
-- It worked anyway, since it became the right value after casting,
|
|
-- but the warning has been fixed and this test makes sure it still
|
|
-- actually works.
|
|
let Defaults{int} = def
|
|
int `shouldBe` (-123)
|