Barracuda-1.0.2: Tests/HUnit/RoutingTable.hs
module Tests.HUnit.RoutingTable where
import qualified Data.Map as Map
import qualified Data.Set as Set
import Data.Time (getCurrentTime)
import Barracuda.RoutingTable
import Network.AdHoc.UserID
import Network.AdHoc.Routing
import Network.Socket
import Tests.Data
import Test.HUnit
routingTableLookup = TestCase $ do
let now = date_malcomX
let rt = hello now saddr_cia [user_wechner] (empty :: SimpleRT)
assertEqual "routeSingle"
(Just saddr_cia)
(routeSingle user_wechner rt)
assertEqual "routeSingle with ignores"
Nothing
(routeSingle user_wechner (rt, Set.singleton saddr_cia))
routingTableDelete = TestCase $ do
let now = date_jfk
let rt = routing now saddr_penisland [(user_eq, 2), (user_spuall, 1)] $ routing now saddr_fsf [(user_eq, 1), (user_spuall, 2)] $ (empty :: SimpleRT)
assertEqual "deletion of an optimal host"
(Just saddr_fsf)
(routeSingle user_spuall $ delete saddr_penisland rt)
assertEqual "deletion of a suboptimal host"
(Just saddr_penisland)
(routeSingle user_eq $ delete saddr_fsf rt)
routingTableUsersMergeNeighbors = TestCase $ do
let now = date_mlk
let rt = routing now saddr_cia [(user_eq, 1)]
$ routing now saddr_fsf [(user_wechner, 1)]
$ routing now saddr_penisland [(user_igel, 1)]
$ (empty :: SimpleRT)
assertEqual "complete userlist"
(Set.fromList [user_eq, user_wechner, user_igel])
(userList rt)
assertEqual "merge routes for"
(Map.fromList [(user_eq, 2), (user_wechner, 2)])
(mergeRoutesFor saddr_penisland Set.empty rt)
assertEqual "neighbors"
(Set.fromList [saddr_cia, saddr_fsf, saddr_penisland])
(neighbors rt)