packages feed

tinytools-0.1.0.3: 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