net-spider-rpl-0.4.1.0: test/NetSpider/RPL/CombinedSpec.hs
{-# LANGUAGE OverloadedStrings #-}
module NetSpider.RPL.CombinedSpec (main,spec) where
import Data.Monoid ((<>))
import Test.Hspec
import JSONUtil (specJSONFromTo)
import NetSpider.RPL.DIO (DIONode(..), MergedDIOLink(..), DIOLink(..), NeighborType(..))
import NetSpider.RPL.DAO (DAONode(..), DAOLink(..))
import NetSpider.RPL.Combined (CombinedNode(..), CombinedLink(..))
main :: IO ()
main = hspec spec
spec :: Spec
spec = do
describe "CombinedNode" $ do
specJSONFromTo
"non-empty DIO and DAO attributes"
"{\"dio\": {\"rank\": 256, \"dio_interval\": 12}, \"dao\": {\"dao_route_num\": null}}"
CombinedNode
{ attrsDIO = Just $ DIONode { rank = 256, dioInterval = 12 },
attrsDAO = Just $ DAONode { daoRouteNum = Nothing }
}
describe "CombinedLink" $ do
specJSONFromTo
"case DIOLink"
( "{\"link_type\": \"dio\", \"link\": "
<> " {\"from_dest\": null, \"from_source\": {\"neighbor_type\": \"preferred_parent\", \"neighbor_rank\": 332, \"metric\": 183}}}"
)
( CombinedDIOLink $
MergedDIOLink
{ fromDest = Nothing,
fromSource =
DIOLink
{ neighborType = PreferredParent,
neighborRank = 332,
metric = Just 183
}
}
)
specJSONFromTo
"case DAOLink"
( "{\"link_type\": \"dao\", \"link\": "
<> " {\"path_lifetime_sec\": 1990}}"
)
( CombinedDAOLink $
DAOLink
{ pathLifetimeSec = 1990
}
)