module Test.Cardano.Network.OrphanInstances.Tests (tests) where import Data.Aeson import Data.Aeson.Types (parse) import Ouroboros.Network.Diffusion.Topology import Ouroboros.Network.PeerSelection.LedgerPeers.Type (AfterSlot (..), UseLedgerPeers (..)) import Cardano.Network.OrphanInstances () import Cardano.Network.PeerSelection.Bootstrap import Cardano.Network.PeerSelection.PeerTrustable import Cardano.Network.Protocol.Handshake.Test hiding (tests) import Cardano.Slotting.Slot (SlotNo (..)) import Test.Cardano.Network.PeerSelection.Instances () import Test.Tasty import Test.Tasty.QuickCheck tests :: TestTree tests :: TestTree tests = TestName -> [TestTree] -> TestTree testGroup TestName "Cardano.Network.OrphanInstances" [ TestName -> (ArbitraryNodeToNodeVersion -> Property) -> TestTree forall a. Testable a => TestName -> a -> TestTree testProperty TestName "NodeToNodeVersion" ArbitraryNodeToNodeVersion -> Property prop_json_NodeToNodeVersion , TestName -> (ArbitraryNodeToClientVersion -> Property) -> TestTree forall a. Testable a => TestName -> a -> TestTree testProperty TestName "NodeToClientVersion" ArbitraryNodeToClientVersion -> Property prop_json_NodeToClientVersion , TestName -> (NetworkTopology UseBootstrapPeers PeerTrustable -> Property) -> TestTree forall a. Testable a => TestName -> a -> TestTree testProperty TestName "NetworkTopology" NetworkTopology UseBootstrapPeers PeerTrustable -> Property prop_json_NetworkTopology ] prop_json_NetworkTopology :: NetworkTopology UseBootstrapPeers PeerTrustable -> Property prop_json_NetworkTopology :: NetworkTopology UseBootstrapPeers PeerTrustable -> Property prop_json_NetworkTopology NetworkTopology UseBootstrapPeers PeerTrustable topo = (NetworkTopology UseBootstrapPeers PeerTrustable -> Parser (NetworkTopology UseBootstrapPeers PeerTrustable)) -> NetworkTopology UseBootstrapPeers PeerTrustable -> Result (NetworkTopology UseBootstrapPeers PeerTrustable) forall a b. (a -> Parser b) -> a -> Result b parse (Value -> Parser (NetworkTopology UseBootstrapPeers PeerTrustable) forall a. FromJSON a => Value -> Parser a parseJSON (Value -> Parser (NetworkTopology UseBootstrapPeers PeerTrustable)) -> (NetworkTopology UseBootstrapPeers PeerTrustable -> Value) -> NetworkTopology UseBootstrapPeers PeerTrustable -> Parser (NetworkTopology UseBootstrapPeers PeerTrustable) forall b c a. (b -> c) -> (a -> b) -> a -> c . NetworkTopology UseBootstrapPeers PeerTrustable -> Value forall a. ToJSON a => a -> Value toJSON) NetworkTopology UseBootstrapPeers PeerTrustable topo Result (NetworkTopology UseBootstrapPeers PeerTrustable) -> Result (NetworkTopology UseBootstrapPeers PeerTrustable) -> Property forall a. (Eq a, Show a) => a -> a -> Property === NetworkTopology UseBootstrapPeers PeerTrustable -> Result (NetworkTopology UseBootstrapPeers PeerTrustable) forall a. a -> Result a Data.Aeson.Success (NetworkTopology UseBootstrapPeers PeerTrustable -> NetworkTopology UseBootstrapPeers PeerTrustable forall {extraConfig} {extraFlags}. NetworkTopology extraConfig extraFlags -> NetworkTopology extraConfig extraFlags translate NetworkTopology UseBootstrapPeers PeerTrustable topo) where translate :: NetworkTopology extraConfig extraFlags -> NetworkTopology extraConfig extraFlags translate nt :: NetworkTopology extraConfig extraFlags nt@(NetworkTopology {useLedgerPeers :: forall extraConfig extraFlags. NetworkTopology extraConfig extraFlags -> UseLedgerPeers useLedgerPeers = UseLedgerPeers (After (SlotNo Word64 0))}) = NetworkTopology extraConfig extraFlags nt {useLedgerPeers = UseLedgerPeers Always} translate NetworkTopology extraConfig extraFlags nt = NetworkTopology extraConfig extraFlags nt prop_json_NodeToNodeVersion :: ArbitraryNodeToNodeVersion -> Property prop_json_NodeToNodeVersion :: ArbitraryNodeToNodeVersion -> Property prop_json_NodeToNodeVersion (ArbitraryNodeToNodeVersion NodeToNodeVersion v) = case ByteString -> Either TestName NodeToNodeVersion forall a. FromJSON a => ByteString -> Either TestName a eitherDecode (NodeToNodeVersion -> ByteString forall a. ToJSON a => a -> ByteString encode NodeToNodeVersion v) of Right NodeToNodeVersion v' -> NodeToNodeVersion v NodeToNodeVersion -> NodeToNodeVersion -> Property forall a. (Eq a, Show a) => a -> a -> Property === NodeToNodeVersion v' Left TestName e -> TestName -> Bool -> Property forall prop. Testable prop => TestName -> prop -> Property counterexample TestName e Bool False prop_json_NodeToClientVersion :: ArbitraryNodeToClientVersion -> Property prop_json_NodeToClientVersion :: ArbitraryNodeToClientVersion -> Property prop_json_NodeToClientVersion (ArbitraryNodeToClientVersion NodeToClientVersion v) = case ByteString -> Either TestName NodeToClientVersion forall a. FromJSON a => ByteString -> Either TestName a eitherDecode (NodeToClientVersion -> ByteString forall a. ToJSON a => a -> ByteString encode NodeToClientVersion v) of Right NodeToClientVersion v' -> NodeToClientVersion v NodeToClientVersion -> NodeToClientVersion -> Property forall a. (Eq a, Show a) => a -> a -> Property === NodeToClientVersion v' Left TestName e -> TestName -> Bool -> Property forall prop. Testable prop => TestName -> prop -> Property counterexample TestName e Bool False