@@ -5,7 +5,10 @@ import Control.Distributed.Process.Tests.Internal.Utils
55import Network.Transport.Test (TestTransport(..))
66import Control.Exception (SomeException)
77import Control.Distributed.Process hiding (bracket, finally, try)
8−import Control.Distributed.Process.Internal.Types (ProcessExitException(..))
8+import Control.Distributed.Process.Internal.Types
9+ ( ProcessExitException(..)
10+ , unsafeCreateUnencodedMessage
11+ )
912import Control.Distributed.Process.Node
1013import qualified Control.Distributed.Process.UnsafePrimitives as Unsafe
1114 ( send
@@ -321,8 +324,6 @@ testMxRegMon remoteNode result = do
321324ensure :: Process () -> Process () -> Process ()
322325ensure = flip finally
323326
324−type SendTest = ProcessId -> ReceivePort MxEvent -> Process Bool
325−
326327testNSend :: (String -> () -> Process ())
327328 -> Maybe LocalNode
328329 -> TestResult Bool
@@ -354,7 +355,10 @@ testNSend op n r = testMxSend n r $ \p1 sink -> do
354355 | isJust n = l2 == l1 ++ "@" ++ show (localNodeId $ fromJust n)
355356 | otherwise = False
356357
357−testSend :: (ProcessId -> () -> Process ()) -> Maybe LocalNode -> TestResult Bool -> Process ()
358+testSend :: (ProcessId -> () -> Process ())
359+ -> Maybe LocalNode
360+ -> TestResult Bool
361+ -> Process ()
358362testSend op n r = testMxSend n r $ \p1 sink -> do
359363 -- initiate a send
360364 op p1 ()
@@ -367,6 +371,8 @@ testSend op n r = testMxSend n r $ \p1 sink -> do
367371 | pidTo == p1 && pidFrom == us -> return True
368372 _ -> return False
369373
374+type SendTest = ProcessId -> ReceivePort MxEvent -> Process Bool
375+
370376testMxSend :: Maybe LocalNode -> TestResult Bool -> SendTest -> Process ()
371377testMxSend mNode result test = do
372378 us <- getSelfPid
@@ -467,6 +473,12 @@ tests TestTransport{..} = do
467473 , testCase "usend"
468474 (delayedAssertion "expected mx events failed"
469475 node1 True (testSend usend $ Just node2))
476+ , testCase "forward"
477+ (delayedAssertion "expected mx events failed"
478+ node1 True (testSend (\p m -> forward (unsafeCreateUnencodedMessage m) p) $ Just node2))
479+ , testCase "uforward"
480+ (delayedAssertion "expected mx events failed"
481+ node1 True (testSend (\p m -> uforward (unsafeCreateUnencodedMessage m) p) $ Just node2))
470482 ]
471483 , testGroup "LocalTargets" [
472484 testCase "Unsafe.nsend"
@@ -487,6 +499,12 @@ tests TestTransport{..} = do
487499 , testCase "usend"
488500 (delayedAssertion "expected mx events failed"
489501 node1 True (testSend usend Nothing))
502+ , testCase "forward"
503+ (delayedAssertion "expected mx events failed"
504+ node1 True (testSend (\p m -> forward (unsafeCreateUnencodedMessage m) p) Nothing))
505+ , testCase "uforward"
506+ (delayedAssertion "expected mx events failed"
507+ node1 True (testSend (\p m -> uforward (unsafeCreateUnencodedMessage m) p) Nothing))
490508 ]
491509 ]
492510 ]