packages feed

headroom-0.4.0.0: test/Headroom/Meta/VersionSpec.hs

{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes       #-}

module Headroom.Meta.VersionSpec
  ( spec
  )
where

import           Headroom.Meta.Version
import           RIO
import           Test.Hspec

spec :: Spec
spec = do
  describe "Ord instance" $ do
    it "correctly compare two values" $ do
      compare (Version 1 2 3 4) (Version 1 2 3 4) `shouldBe` EQ
      compare (Version 0 1 0 0) (Version 0 1 0 1) `shouldBe` LT
      compare (Version 1 1 0 0) (Version 0 1 0 1) `shouldBe` GT


  describe "parseVersion" $ do
    it "parses valid Version from Text" $ do
      parseVersion "0.1.2.3" `shouldBe` Just (Version 0 1 2 3)

    it "parses Nothing for invalid input" $ do
      parseVersion "0.4" `shouldBe` Nothing


  describe "printVersion" $ do
    it "pretty prints given version" $ do
      printVersion (Version 1 2 3 4) `shouldBe` "1.2.3.4"


  describe "printVersionP" $ do
    it "pretty prints given version (with 'v' prefix)" $ do
      printVersionP (Version 1 2 3 4) `shouldBe` "v1.2.3.4"


  describe "pvp" $ do
    it "produces correct Version using QuasiQuotes" $ do
      [pvp|0.1.2.3|] `shouldBe` Version 0 1 2 3