tinytools-0.1.0.0: test/Potato/Data/Text/UnicodeSpec.hs
{-# LANGUAGE OverloadedStrings #-}
module Potato.Data.Text.UnicodeSpec (
spec
) where
import Prelude
import Test.Hspec
import Control.Monad
import Potato.Data.Text.Unicode
spec :: Spec
spec = describe "Unicode" $ do
it "isSingleGraphemeCluster" $ do
isSingleGraphemeCluster "ππΌ" `shouldBe` True
isSingleGraphemeCluster "π" `shouldBe` False
isSingleGraphemeCluster "" `shouldBe` False
isSingleGraphemeCluster "a" `shouldBe` False
isSingleGraphemeCluster "ππ»ππΌππ½ππΎππΏ" `shouldBe` False
isSingleGraphemeCluster "π§\8205π³" `shouldBe` True -- zwidges can't be used directly https://gitlab.haskell.org/ghc/ghc/-/issues/21228
it "endsInGraphemeCluster" $ do
endsInGraphemeCluster "ππΌ" `shouldBe` True
endsInGraphemeCluster "ππΏ" `shouldBe` True
endsInGraphemeCluster "" `shouldBe` False
endsInGraphemeCluster "a" `shouldBe` False
endsInGraphemeCluster "ππ»ππΌππ½ππΎππΏ" `shouldBe` True
endsInGraphemeCluster "ππ»ππΌππ½ππΎππΏπ±" `shouldBe` False
endsInGraphemeCluster "goopπ±dedoopππΏ" `shouldBe` True
it "removeGraphemeCluster" $ do
removeGraphemeCluster "ππ»ππΌππ½ππΎππΏ" `shouldBe` "πππππ"
it "containsGraphemeCluster" $ do
containsGraphemeCluster "πππππ" `shouldBe` False
containsGraphemeCluster "ππππΏπππ" `shouldBe` True