forked from schmittlauch/Hash2Pub
30 lines
1.2 KiB
Haskell
30 lines
1.2 KiB
Haskell
import Hash2Pub.FediChord
|
|
import Data.Map.Internal.Debug (showTree)
|
|
import qualified Data.Map.Strict as Map
|
|
|
|
giebMalCache :: [Integer] -> Map.Map NodeID ()
|
|
giebMalCache = Map.fromList . map (mkCacheEntry . fromInteger)
|
|
where
|
|
mkCacheEntry nodeid = (nodeid, ())
|
|
|
|
testCache1 = giebMalCache [1, -1, 2^50]
|
|
testFirstHalf = giebMalCache [3, 2^254-2, 2^255]
|
|
testOverlap = giebMalCache [2^255+2^254+3, 2, 2^253]
|
|
|
|
nidLookup m = flip Map.lookup m . fromInteger
|
|
nidLookupLT m = flip Map.lookupLT m . fromInteger
|
|
nidLookupGT m = flip Map.lookupGT m . fromInteger
|
|
|
|
edgeCase1 :: IO ()
|
|
edgeCase1 = do
|
|
putStrLn "Let there be a Map with the keys [2^255+2^254+3, 2, 2^253], all keys are NodeIDs mod 2^256."
|
|
print testOverlap
|
|
putStrLn "\nWhile (NodeID 2^255+2^254+3) > (NodeID 2^254 + 14) …"
|
|
print $ toNodeID (2^255+2^254+3) > toNodeID (2^254+14)
|
|
putStrLn "… and 2^255+2^254+3 is an element of the map…"
|
|
print $ Map.member (fromInteger 2^255+2^254+3) testOverlap
|
|
putStrLn "… looking for an element larger than 2^254 + 14 doesn't yield any."
|
|
print $ nidLookupGT testOverlap (2^254+14)
|
|
putStrLn "\nThat's the tree of the map:"
|
|
putStrLn $ showTree testOverlap
|