packages feed

rdf4h-3.0.0: testsuite/tests/Test.hs

module Main where

import Test.Tasty (defaultMain,testGroup)

import qualified Data.RDF.Graph.TList_Test as TList
import qualified Data.RDF.Graph.HashS_Test as HashS
import qualified Data.RDF.Graph.HashSP_Test as HashSP
import qualified Data.RDF.Graph.SP_Test as SP
-- very slow implementation, disabled for now.
-- import qualified Data.RDF.Graph.TriplesPatriciaTree_Test as TriplesPatriciaTree
import           Data.RDF.Types
import qualified Text.RDF.RDF4H.XmlParser_Test as XmlParser
import qualified Text.RDF.RDF4H.TurtleParser_ConformanceTest as TurtleParser
import qualified W3C.TurtleTest as W3CTurtleTest
import qualified W3C.RdfXmlTest as W3CRdfXmlTest
import qualified W3C.NTripleTest as W3CNTripleTest
import           Data.RDF.GraphTestUtils

import qualified Data.Text as T
import System.Directory (getCurrentDirectory)
import W3C.Manifest

suiteFilesDirTurtle,suiteFilesDirXml,suiteFilesDirNTriples :: T.Text
suiteFilesDirTurtle = "rdf-tests/turtle/"
suiteFilesDirXml = "rdf-tests/rdf-xml/"
suiteFilesDirNTriples = "rdf-tests/ntriples/"

mfPathTurtle,mfPathXml,mfPathNTriples :: T.Text
mfPathTurtle = T.concat [suiteFilesDirTurtle, "manifest.ttl"]
mfPathXml = T.concat [suiteFilesDirXml, "manifest.ttl"]
mfPathNTriples = T.concat [suiteFilesDirNTriples, "manifest.ttl"]

mfBaseURITurtle,mfBaseURIXml,mfBaseURINTriples :: BaseUrl
mfBaseURITurtle   = BaseUrl "http://www.w3.org/2013/TurtleTests/"
mfBaseURIXml      = BaseUrl "http://www.w3.org/2013/RDFXMLTests/"
mfBaseURINTriples = BaseUrl "http://www.w3.org/2013/N-TriplesTests/"


main :: IO ()
main = do
  -- obtain manifest files for W3C tests before running tests
  -- justification for separation: http://stackoverflow.com/a/33046723
  dir <- getCurrentDirectory
  let fileSchemeUri suitesDir = T.pack ("file://" ++ dir ++ "/" ++ T.unpack suitesDir)
  turtleManifest <-
         loadManifest mfPathTurtle   (fileSchemeUri suiteFilesDirTurtle)

  xmlManifest <-
         loadManifest mfPathXml      (fileSchemeUri suiteFilesDirXml)

  nTriplesManifest <-
         loadManifest mfPathNTriples (fileSchemeUri suiteFilesDirNTriples)

  -- run tests
  defaultMain
       (testGroup "rdf4h tests"
        [ -- RDF graph API tests
          graphTests "TList"
          TList.triplesOf'
          TList.uniqTriplesOf'
          TList.empty'
          TList.mkRdf'

        , graphTests "HashS"
          HashS.triplesOf'
          HashS.uniqTriplesOf'
          HashS.empty'
          HashS.mkRdf'

        , graphTests "HashSP"
          HashSP.triplesOf'
          HashSP.uniqTriplesOf'
          HashSP.empty'
          HashSP.mkRdf'

        , graphTests "SP"
          SP.triplesOf'
          SP.uniqTriplesOf'
          SP.empty'
          SP.mkRdf'

        -- , graphTests "TriplesPatriciaTree"
        --   TriplesPatriciaTree.triplesOf'
        --   TriplesPatriciaTree.uniqTriplesOf'
        --   TriplesPatriciaTree.empty'
        --   TriplesPatriciaTree.mkRdf'

          -- rdf4h unit tests
        , TurtleParser.tests
        , XmlParser.tests

          -- W3C tests
        , W3CTurtleTest.tests   turtleManifest
        , W3CRdfXmlTest.tests   xmlManifest
        , W3CNTripleTest.tests  nTriplesManifest
        ])