module VerifyUtf8Width where import Verify import Graphics.Text.Width import Graphics.Vty.Attributes import Graphics.Vty.Picture import Graphics.Vty.Image swIs1Column :: SingleColumnChar -> Bool swIs1Column (SingleColumnChar c) = imageWidth (char defAttr c) == 1 dwIs2Column :: DoubleColumnChar -> Bool dwIs2Column (DoubleColumnChar c) = imageWidth (char defAttr c) == 2 dcStringIsEven :: NonEmptyList DoubleColumnChar -> Bool dcStringIsEven (NonEmpty dw_list) = even $ safeWcswidth [ c | DoubleColumnChar c <- dw_list ] safeWcwidthForControlChars :: Bool safeWcwidthForControlChars = 0 == safeWcwidth '\NUL' tests :: IO [Test] tests = return [ verify "swIs1Column" swIs1Column , verify "dwIs2Column" dwIs2Column , verify "a string of double characters is an even width" dcStringIsEven , verify "safeWcwidth provides a width of 0 for chars without widths" safeWcwidthForControlChars ]