packages feed

hid-examples-0.4: tests/iplookup/GoldenTests.hs

module GoldenTests (goldenTests) where

import Test.Tasty
import Test.Tasty.Golden
import System.FilePath (normalise, takeBaseName, replaceExtension)

import ParseIP
import LookupIP

goldenTests :: IO [TestTree]
goldenTests = sequence [golden_lookupIP]

testsDir = normalise "data/tests/iplookup/"

golden_lookupIP :: IO TestTree
golden_lookupIP = testGroup "lookupIP" . map createTest
                  <$> findByExtension [".iprs"] testsDir

createTest :: String -> TestTree
createTest iprsf = goldenVsFile
                    (takeBaseName iprsf)
                    goldenf
                    outf
                    testAction
  where
    ipsf = replaceExtension iprsf ".ips"
    goldenf = replaceExtension iprsf ".out.golden"
    outf = replaceExtension iprsf ".out"
    testAction = do
      iprs <- parseValidIPRanges <$> readFile iprsf
      ips <- parseValidIPs <$> readFile ipsf
      writeBinaryFile outf $ reportIPs iprs ips