packages feed

bidi-icu-0: test/Spec.hs

{-# language OverloadedStrings #-}
{-# language OverloadedLists #-}
module Main
( main
) where

import GHC.Exts
import Data.Text.ICU.Bidi
import System.Mem
import Test.Hspec as Hspec
import Test.Tasty
import Test.Tasty.Hspec

spec :: Spec
spec = Hspec.after_ performMajorGC $ do
  describe "bidi" $ do
    it "can handle English" $ do
      x <- open
      getBaseDirection "hello" `shouldBe` LTR
      setPara x "hello" DEFAULT_LTR Nothing
      getLength x `shouldReturn` 5
      getText x `shouldReturn` "hello"
      writeReordered x DO_MIRRORING `shouldReturn` "hello"
      getLogicalMap x `shouldReturn` [0..4]
      getVisualMap x `shouldReturn` [0..4]
      getLevels x `shouldReturn` [Level 0,Level 0,Level 0,Level 0,Level 0]
    it "can handle Arabic" $ do
      x <- open
      getBaseDirection "أنا قادر على أكل الزجاج و هذا لا يؤلمني." `shouldBe` RTL
      setPara x "This is an Arabic sentence: أنا قادر على أكل الزجاج و هذا لا يؤلمني. It is surrounded by English" DEFAULT_LTR Nothing
      getLength x `shouldReturn` 96
      getLogicalMap x `shouldReturn` fromList ([0..27] ++ [66,65..28] ++ [67..95])
      getVisualMap x `shouldReturn` fromList ([0..27] ++ [66,65..28] ++ [67..95])
      getLevels x `shouldReturn` fromList (replicate 28 (Level 0) ++ replicate 39 (Level 1) ++ replicate 29 (Level 0))

main :: IO ()
main = do
  spec' <- testSpec "spec" spec
  defaultMain spec'