THRIFT-918 : better haskell tests
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1001883 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/test/hs/ThriftTest_TestServer.hs b/test/hs/ThriftTest_TestServer.hs
new file mode 100644
index 0000000..fbfcd53
--- /dev/null
+++ b/test/hs/ThriftTest_TestServer.hs
@@ -0,0 +1,152 @@
+--
+-- Licensed to the Apache Software Foundation (ASF) under one
+-- or more contributor license agreements. See the NOTICE file
+-- distributed with this work for additional information
+-- regarding copyright ownership. The ASF licenses this file
+-- to you under the Apache License, Version 2.0 (the
+-- "License"); you may not use this file except in compliance
+-- with the License. You may obtain _ copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing,
+-- software distributed under the License is distributed on an
+-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+-- KIND, either express or implied. See the License for the
+-- specific language governing permissions and limitations
+-- under the License.
+--
+
+module ThriftTest_TestServer where
+
+import ThriftTest
+import ThriftTest_Iface
+import Data.Map as Map
+import Control.Exception
+import ThriftTest_Types
+
+import Thrift
+import Thrift.Server
+
+
+data TestHandler = TestHandler
+instance ThriftTest_Iface TestHandler where
+ testVoid _ = return ()
+
+ testString _ (Just s) = do
+ print s
+ return s
+
+ testString _ Nothing = do
+ error $ "Unsupported testString form"
+
+ testByte _ (Just x) = do
+ print x
+ return x
+
+ testByte _ Nothing = do
+ error $ "Unsupported testByte form"
+
+ testI32 _ (Just x) = do
+ print x
+ return x
+
+ testI32 _ Nothing = do
+ error $ "Unsupported testI32 form"
+
+ testI64 _ (Just x) = do
+ print x
+ return x
+
+ testI64 _ Nothing = do
+ error $ "Unsupported testI64 form"
+
+ testDouble _ (Just x) = do
+ print x
+ return x
+
+ testDouble _ Nothing = do
+ error $ "Unsupported testDouble form"
+
+ testStruct _ (Just x) = do
+ print x
+ return x
+
+ testStruct _ Nothing = do
+ error $ "Unsupported testStruct form"
+
+ testNest _ (Just x) = do
+ print x
+ return x
+
+ testNest _ Nothing = do
+ error $ "Unsupported testNest form"
+
+ testMap _ (Just x) = do
+ print x
+ return x
+
+ testMap _ Nothing = do
+ error $ "Unsupported testMap form"
+
+ testSet _ (Just x) = do
+ print x
+ return x
+
+ testSet _ Nothing = do
+ error $ "Unsupported testSet form"
+
+ testList _ (Just x) = do
+ print x
+ return x
+
+ testList _ Nothing = do
+ error $ "Unsupported testList form"
+
+ testEnum _ (Just x) = do
+ print x
+ return x
+
+ testEnum _ Nothing = do
+ error $ "Unsupported testEnum form"
+
+ testTypedef _ (Just x) = do
+ print x
+ return x
+
+ testTypedef _ Nothing = do
+ error $ "Unsupported testTypedef form"
+
+ testMapMap _ (Just _) = do
+ return (Map.fromList [(1, Map.fromList [(2, 2)])])
+
+ testMapMap _ Nothing = do
+ error $ "Unsupported testMapMap form"
+
+ testInsanity _ (Just x) = do
+ return (Map.fromList [(1, Map.fromList [(ONE, x)])])
+
+ testInsanity _ Nothing = do
+ error $ "Unsupported testInsanity form"
+
+ testMulti _ _ _ _ _ _ _ = do
+ return (Xtruct Nothing Nothing Nothing Nothing)
+
+ testException _ _ = do
+ throw (Xception (Just 1) (Just "bya"))
+
+ testMultiException _ _ _ = do
+ throw (Xception (Just 1) (Just "xyz"))
+
+ testOneway _ (Just i) = do
+ print i
+
+ testOneway _ Nothing = do
+ error $ "Unsupported testOneway form"
+
+
+main :: IO ()
+main = do putStrLn "Server ready..."
+ (runBasicServer TestHandler process 9090)
+ `Control.Exception.catch`
+ (\(TransportExn s _) -> print s)