packages feed

hnix-store-core-0.7.0.0: tests/StorePath.hs

{-# language DataKinds           #-}
{-# language ScopedTypeVariables #-}
{-# language OverloadedStrings   #-}

module StorePath where

import qualified Data.Attoparsec.Text

import           Test.Tasty.QuickCheck

import           System.Nix.StorePath
import           Arbitrary

-- | Test that Nix(OS) like paths roundtrip
prop_storePathRoundtrip :: StoreDir -> NixLike -> NixLike -> Property
prop_storePathRoundtrip storeDir (_ :: NixLike) (NixLike x) =
  parsePath storeDir (storePathToRawFilePath storeDir x) === pure x

-- | Test that any `StorePath` roundtrips
prop_storePathRoundtrip' :: StoreDir -> StorePath -> Property
prop_storePathRoundtrip' storeDir x =
  parsePath storeDir (storePathToRawFilePath storeDir x) === pure x

prop_storePathRoundtripParser :: StoreDir -> NixLike -> NixLike -> Property
prop_storePathRoundtripParser storeDir (_ :: NixLike) (NixLike x) =
  Data.Attoparsec.Text.parseOnly (pathParser storeDir) (storePathToText storeDir x) === pure x

prop_storePathRoundtripParser' :: StoreDir -> StorePath -> Property
prop_storePathRoundtripParser' storeDir x =
  Data.Attoparsec.Text.parseOnly (pathParser storeDir) (storePathToText storeDir x) === pure x