{-# LANGUAGE OverloadedStrings #-}
import Test.Hspec
import Test.Hspec.Megaparsec
import Text.Megaparsec.Lexer.Tibetan
import Text.Megaparsec
import Text.Megaparsec.Text
import TextShow.Data.Integral.Tibetan
import qualified Data.Text as T
main :: IO ()
main = hspec $ do
describe "parseNumber" $ do
it "parses Tibetan numerals as an Int" $ do
(runParser (parseNumber :: Parser Integer) "") tibStr `shouldParse` 6320
it "fails when given a character that isn't a tibetan numeral" $ do
(runParser (parseNumber :: Parser Integer) "") `shouldFailOn` otherStr
describe "showBo" $ do
it "displays a positive integer using tibetan numerals" $ do
showBo 15 `shouldBe` Just ("༡༥")
it "fails on negative inputs" $ do
showBo (-12) `shouldBe` Nothing
tibStr :: T.Text
tibStr = "༦༣༢༠"
otherStr :: T.Text
otherStr = "ཨ་ནི"