Skip to content

Commit 1e9fc1e

Browse files
committed
Continued moving tests into defaultMain
1 parent 534e1c8 commit 1e9fc1e

File tree

1 file changed

+40
-49
lines changed

1 file changed

+40
-49
lines changed

tests/TestSuite.hs

Lines changed: 40 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import qualified TestParallelism as P
88
import Data.Maybe
99
import Data.List (sortBy)
1010
import Data.Function (on)
11-
import Data.Aeson
11+
import Data.Aeson as A
1212
import Data.Aeson.Types
1313
import Data.Text (Text)
1414
import qualified Data.ByteString.Lazy.Char8 as B
@@ -20,11 +20,16 @@ import Control.Monad.Identity
2020
import Test.HUnit hiding (State)
2121
import Test.Framework
2222
import Test.Framework.Providers.HUnit
23+
import Prelude hiding (subtract)
2324

2425
main :: IO ()
25-
main = defaultMain [ testCase "encode RPC error" testEncodeRpcError
26+
main = defaultMain [ testCase "encode RPC error" $
27+
fromByteString (encode $ rpcError (-1) "error") @?= Just (TestRpcError (-1) "error" Nothing)
2628

27-
, testCase "encode error with data" testEncodeErrorWithData
29+
, let err = rpcErrorWithData 1 "my message" errData
30+
testError = TestRpcError 1 "my message" $ Just $ toJSON errData
31+
errData = ('\x03BB', [True], ())
32+
in testCase "encode error with data" $ fromByteString (encode err) @?= Just testError
2833

2934
, testCase "invalid JSON" $
3035
assertSubtractResponse ("5" :: String) (errResponse idNull (-32700))
@@ -35,7 +40,8 @@ main = defaultMain [ testCase "encode RPC error" testEncodeRpcError
3540
, testCase "empty batch call" $
3641
assertSubtractResponse emptyArray (errResponse idNull (-32600))
3742

38-
, testCase "invalid batch element" testInvalidBatchElement
43+
, testCase "invalid batch element" $
44+
map removeErrMsg <$> callSubtractMethods [True] @?= Just [errResponse idNull (-32600)]
3945

4046
, testCase "wrong version in request" testWrongVersion
4147

@@ -69,9 +75,15 @@ main = defaultMain [ testCase "encode RPC error" testEncodeRpcError
6975
, testCase "batch request" testBatch
7076
, testCase "batch notifications" testBatchNotifications
7177
, testCase "allow missing version" testAllowMissingVersion
72-
, testCase "no arguments" testNoArgs
73-
, testCase "empty argument array" testEmptyUnnamedArgs
74-
, testCase "empty argument object" testEmptyNamedArgs
78+
79+
, testCase "no arguments" $
80+
assertGetTimeResponse (Nothing :: Maybe Value)
81+
82+
, testCase "empty argument array" $
83+
assertGetTimeResponse $ Just (empty :: Array)
84+
85+
, testCase "empty argument object" $
86+
assertGetTimeResponse $ Just (H.empty :: Object)
7587

7688
, let req = subtractRequestNamed [("x", Number 10), ("y", Number 20), ("z", String "extra")] nonNullId
7789
rsp = TestResponse nonNullId $ Right $ Number (-10)
@@ -91,25 +103,10 @@ main = defaultMain [ testCase "encode RPC error" testEncodeRpcError
91103

92104
, testCase "parallelize tasks" P.testParallelizingTasks ]
93105

94-
testEncodeRpcError :: Assertion
95-
testEncodeRpcError = fromByteString (encode err) @?= Just testError
96-
where err = rpcError (-1) "error"
97-
testError = TestRpcError (-1) "error" Nothing
98-
99-
testEncodeErrorWithData :: Assertion
100-
testEncodeErrorWithData = fromByteString (encode err) @?= Just testError
101-
where err = rpcErrorWithData 1 "my message" errorData
102-
testError = TestRpcError 1 "my message" $ Just $ toJSON errorData
103-
errorData = ('\x03BB', [True], ())
104-
105106
assertSubtractResponse :: ToJSON a => a -> TestResponse -> Assertion
106107
assertSubtractResponse request expectedRsp = removeErrMsg <$> rsp @?= Just expectedRsp
107108
where rsp = callSubtractMethods request
108109

109-
testInvalidBatchElement :: Assertion
110-
testInvalidBatchElement = map removeErrMsg <$> rsp @?= Just [errResponse idNull (-32600)]
111-
where rsp = callSubtractMethods [True]
112-
113110
testWrongVersion :: Assertion
114111
testWrongVersion = removeErrMsg <$> rsp @?= Just (errResponse idNull (-32600))
115112
where rsp = callSubtractMethods $ Object $ H.insert versionKey (String "1") hm
@@ -137,26 +134,17 @@ testAllowMissingVersion = (fromByteString =<< runIdentity response) @?= (Just $
137134
response = call (toMethods [subtractMethod]) $ encode requestNoVersion
138135
i = idNumber (-1)
139136

140-
testNoArgs :: Assertion
141-
testNoArgs = compareGetTimeResult Nothing
142-
143-
testEmptyUnnamedArgs :: Assertion
144-
testEmptyUnnamedArgs = compareGetTimeResult $ Just $ Right empty
145-
146-
testEmptyNamedArgs :: Assertion
147-
testEmptyNamedArgs = compareGetTimeResult $ Just $ Left H.empty
148-
149137
incrementStateMethod :: Method (State Int)
150138
incrementStateMethod = toMethod "increment" f ()
151139
where f :: RpcResult (State Int) ()
152140
f = lift $ modify (+1)
153141

154-
compareGetTimeResult :: Maybe (Either Object Array) -> Assertion
155-
compareGetTimeResult requestArgs = assertEqual "unexpected rpc response" expected =<<
156-
((fromByteString . fromJust) <$> call (toMethods [getTimeMethod]) (encode getTimeRequest))
157-
where expected = Just $ TestResponse i (Right $ Number 100)
158-
getTimeRequest = TestRequest "get_time_seconds" requestArgs (Just i)
159-
i = idString "Id 1"
142+
assertGetTimeResponse :: ToJSON a => a -> Assertion
143+
assertGetTimeResponse args = passed @? "unexpected RPC response"
144+
where passed = (expected ==) <$> rsp
145+
expected = Just $ TestResponse nonNullId (Right $ Number 100)
146+
req = TestRequest "get_time_seconds" (Just args) (Just nonNullId)
147+
rsp = callGetTimeMethod req
160148

161149
subtractRequestNamed :: [(Text, Value)] -> TestId -> TestRequest
162150
subtractRequestNamed args i = TestRequest "subtract" (Just $ H.fromList args) (Just i)
@@ -170,28 +158,31 @@ callSubtractMethods req = let methods :: Methods Identity
170158
rsp = call methods $ encode req
171159
in fromByteString =<< runIdentity rsp
172160

161+
callGetTimeMethod :: TestRequest -> IO (Maybe TestResponse)
162+
callGetTimeMethod req = let methods :: Methods IO
163+
methods = toMethods [getTimeMethod]
164+
rsp = call methods $ encode req
165+
in (fromByteString =<<) <$> rsp
166+
173167
fromByteString :: FromJSON a => B.ByteString -> Maybe a
174168
fromByteString str = case fromJSON <$> decode str of
175169
Just (Success x) -> Just x
176170
_ -> Nothing
177171

178172
subtractMethod :: Method Identity
179-
subtractMethod = toMethod "subtract" sub (Required "x" :+: Optional "y" 0 :+: ())
180-
where sub :: Int -> Int -> RpcResult Identity Int
181-
sub x y = return (x - y)
173+
subtractMethod = toMethod "subtract" subtract (Required "x" :+: Optional "y" 0 :+: ())
182174

183175
flippedSubtractMethod :: Method Identity
184-
flippedSubtractMethod = toMethod "subtract 2" sub (Optional "y" (-1000) :+: Required "x" :+: ())
185-
where sub :: Int -> Int -> RpcResult Identity Int
186-
sub y x = return (x - y)
176+
flippedSubtractMethod = toMethod "subtract 2" (flip subtract) params
177+
where params = Optional "y" (-1000) :+: Required "x" :+: ()
187178

188-
getTimeMethod :: Method IO
189-
getTimeMethod = toMethod "get_time_seconds" getTime ()
190-
where getTime :: RpcResult IO Integer
191-
getTime = liftIO getTestTime
179+
subtract :: Int -> Int -> RpcResult Identity Int
180+
subtract x y = return (x - y)
192181

193-
getTestTime :: IO Integer
194-
getTestTime = return 100
182+
getTimeMethod :: Method IO
183+
getTimeMethod = toMethod "get_time_seconds" getTestTime ()
184+
where getTestTime :: RpcResult IO Integer
185+
getTestTime = liftIO $ return 100
195186

196187
removeErrMsg :: TestResponse -> TestResponse
197188
removeErrMsg (TestResponse i (Left (TestRpcError code _ _)))

0 commit comments

Comments
 (0)