packages feed

salak-0.3.5.2: test/Salak/TrieSpec.hs

module Salak.TrieSpec(spec) where

import qualified Data.HashMap.Strict as HM
import           Salak.Internal
import qualified Salak.Trie          as T
import           Test.Hspec


spec :: SpecWith ()
spec = do
  context "Trie" $ do
    it "insert" $ do
      let Right keys = toKeys ("a.b.c" :: String)
          v          = T.insert keys (1 :: Int) T.empty
          w          = T.alter (\_ -> Just 1) keys T.empty
      v `shouldBe` w
      T.tvar (T.subTries keys v) `shouldBe` Just 1
    it "toList" $ do
      let Right keys = toKeys ("a.b.c.d" :: String)
          w          = T.insert keys (2 :: Int) T.empty
          [(k,v)]    = T.toList w
      k `shouldBe` keys
      v `shouldBe` 2
      HM.member (KT "a") (T.tmap w) `shouldBe` True