net-spider-rpl-0.4.1.0: test/NetSpider/RPL/DIOSpec.hs
{-# LANGUAGE OverloadedStrings #-}
module NetSpider.RPL.DIOSpec (main,spec) where
import Test.Hspec
import JSONUtil (specJSONFromTo)
import NetSpider.RPL.DIO
( DIONode(..), NeighborType(..), DIOLink(..), MergedDIOLink(..)
)
main :: IO ()
main = hspec spec
spec :: Spec
spec = do
describe "DIONode" $ do
specJSONFromTo
"DIONode"
"{\"rank\": 355, \"dio_interval\": 5}"
(DIONode 355 5)
describe "NeighborType" $ do
specJSONFromTo "PreferredParent" "\"preferred_parent\"" PreferredParent
specJSONFromTo "ParentCandidate" "\"parent_candidate\"" ParentCandidate
specJSONFromTo "OtherNeighbor" "\"other_neighbor\"" OtherNeighbor
describe "DIOLink" $ do
specJSONFromTo
"DIOLink with non-empty metric"
"{\"neighbor_type\": \"parent_candidate\", \"neighbor_rank\": 590, \"metric\": 132}"
DIOLink
{ neighborType = ParentCandidate,
neighborRank = 590,
metric = Just 132
}
describe "MergedDIOLink" $ do
specJSONFromTo
"MergedDIOLink with non-empty fromDest"
( "{\"from_source\": {\"neighbor_type\": \"preferred_parent\", \"neighbor_rank\": 590, \"metric\": 132},"
<> " \"from_dest\": {\"neighbor_type\": \"other_neighbor\", \"neighbor_rank\": 722, \"metric\": null}}"
)
MergedDIOLink
{ fromSource = DIOLink PreferredParent 590 (Just 132),
fromDest = Just $ DIOLink OtherNeighbor 722 Nothing
}