packages feed

typelits-printf-0.3.0.0: test/spec.hs

{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeApplications #-}

module Main where

import GHC.TypeLits.Printf
import Test.Hspec

-- TODO: test for type errors, stuff like that. For now we just test for
-- parsing long strings
main :: IO ()
main = hspec do
  describe "typelits-printf" do
    it "formats a basic string" do
      printf "Hello %0.2f, %s" (3.26 :: Double) "Luigi" `shouldBe` "Hello 3.26, Luigi"
      printf' @"Hello %0.2f, %s" (3.26 :: Double) "Luigi" `shouldBe` "Hello 3.26, Luigi"
    it "formats a long string" do
      printf
        "This is a long string a very %s in the past this took a long time to compile %d"
        "long string"
        (2 :: Int)
        `shouldBe` "This is a long string a very long string in the past this took a long time to compile 2"