packages feed

text-trie-0.2.5.0: test/Data/Trie/TextInternal/Test.hs

{-# OPTIONS_GHC -Wall -fwarn-tabs #-}

----------------------------------------------------------------
--                                                  ~ 2019.04.03
-- |
-- Module      :  Data.Trie.TextInternal.Test
-- Copyright   :  Copyright (c) 2008--2009 wren gayle romano, 2019 michael j. klein
-- License     :  BSD3
-- Maintainer  :  lambdamichael@gmail.com
-- Stability   :  experimental
--
-- Testing helper functions on 'Text'
-- (mostly to ensure they match expectations from `bytestring-trie`).

module Data.Trie.TextInternal.Test where

import qualified Data.Text as T
import Data.Trie.TextInternal

import Data.List (unfoldr)
----------------------------------------------------------------

-- | For debugging. [] is the infinite bit, head is the little end
showBits :: (Integral a) => a -> String
showBits = unfoldr getBit
    where
    getBit 0             = Nothing
    getBit i | odd i     = Just ('I', (i-1)`div`2)
             | otherwise = Just ('O', i`div`2)

-- TODO: make this into an HUnit test
test :: IO ()
test  = do
    cmp' hello
    cmp' $ T.pack "hi"
    cmp' $ T.pack "heat"
    cmp' $ T.pack "held"
    cmp' $ T.pack "hell"
    cmp' $ T.pack "hello"
    cmp' $ T.pack "jello"

    where
    cmp' y = do putStrLn . show . breakMaximalPrefix hello $ y
                putStrLn . show . (\(a,b,c) -> (a,c,b)) . breakMaximalPrefix y $ hello
                putStrLn "\n"

    hello = T.pack "hello"

----------------------------------------------------------------
----------------------------------------------------------- fin.