module Xmobar.Plugins.Monitors.CommonSpec
  ( main
  , spec
  ) where

import Test.Hspec
import Xmobar.Plugins.Monitors.Common

main :: IO ()
main = hspec spec

spec :: Spec
spec =
  describe "Common.padString" $ do
    it "returns given string when called with default values" $
      padString 0 0 "" False "" "test" `shouldBe` "test"

    it "truncates to max width" $ do
      let maxw = 3
          givenStr = "mylongstr"
          expectedStr = take maxw givenStr
      padString 0 maxw "" False "" givenStr `shouldBe` expectedStr

    it "truncates to max width and concatenate with ellipsis" $ do
      let maxw = 3
          givenStr = "mylongstr"
          ellipsis = "..."
          expectedStr = (++ ellipsis) . take 3 $ givenStr
      padString 0 maxw "" False ellipsis givenStr `shouldBe` expectedStr

    it "does not pad empty strings" $ do
      let padChars = " "
          givenStr = ""
          expectedStr = ""
      padString 0 0 padChars False "" givenStr `shouldBe` expectedStr
