swish-0.9.0.6: tests/BuiltInMapTest.hs
{-# LANGUAGE OverloadedStrings #-}
--------------------------------------------------------------------------------
-- See end of this file for licence information.
--------------------------------------------------------------------------------
-- |
-- Module : BuiltInMapTest
-- Copyright : (c) 2003, Graham Klyne, 2009 Vasili I Galchin, 2011, 2012, 2013 Douglas Burke
-- License : GPL V2
--
-- Maintainer : Douglas Burke
-- Stability : experimental
-- Portability : OverloadedStrings
--
-- This module contains test cases for accessing built-in variable
-- binding modifiers.
--
--------------------------------------------------------------------------------
module Main where
import qualified Test.Framework as TF
import qualified Data.Map as M
import Swish.Namespace (makeNSScopedName)
import Swish.Ruleset (getMaybeContextAxiom, getMaybeContextRule)
import Swish.RDF.BuiltIn
( findRDFOpenVarBindingModifier
, findRDFDatatype
, rdfRulesetMap
, allRulesets
)
import Swish.RDF.Datatype.XSD.Integer (typeNameXsdInteger, namespaceXsdInteger)
import Swish.RDF.Vocabulary
( swishName
, scopeRDF
, scopeRDFS
, scopeRDFD
, namespaceXsdType
)
import Test.HUnit
( Test(TestCase,TestList)
, assertEqual
)
import TestHelpers (conv, testJust)
------------------------------------------------------------
-- Test finding built-in variable binding modifiers
------------------------------------------------------------
testVarMod01, testVarMod02, testVarMod03, testVarMod04,
testVarMod05, testVarMod06, testVarMod07 :: Test
testVarMod01 = testJust "testVarMod01" $
findRDFOpenVarBindingModifier (swishName "rdfVarBindingUriRef")
testVarMod02 = testJust "testVarMod02" $
findRDFOpenVarBindingModifier (swishName "rdfVarBindingDatatyped")
testVarMod03 = testJust "testVarMod03" $
findRDFOpenVarBindingModifier (swishName "varFilterNE")
testVarMod04 = testJust "testVarMod04" $
findRDFOpenVarBindingModifier (swishName "nullVarBindingModify")
testVarMod05 = testJust "testVarMod05" $
findRDFOpenVarBindingModifier (makeNSScopedName namespaceXsdInteger "abs")
testVarMod06 = testJust "testVarMod06" $
findRDFOpenVarBindingModifier (makeNSScopedName namespaceXsdInteger "divmod")
testVarMod07 = testJust "testVarMod07" $
findRDFOpenVarBindingModifier (makeNSScopedName namespaceXsdInteger "ge")
testVarModSuite :: Test
testVarModSuite = TestList
[ testVarMod01, testVarMod02, testVarMod03, testVarMod04
, testVarMod05, testVarMod06, testVarMod07
-- the following just exposes a few "edge" cases (a Show instance
-- and using the namespace part of the swish namespace)
, TestCase (assertEqual "show:rdfVarBindingUriRef"
(Just "swish:rdfVarBindingUriRef")
$ fmap show (findRDFOpenVarBindingModifier (swishName "rdfVarBindingUriRef")))
]
------------------------------------------------------------
-- Test finding built-in datatypes
------------------------------------------------------------
testDatatype01 :: Test
testDatatype01 = testJust "testDatatype01" $ findRDFDatatype typeNameXsdInteger
testDatatypeSuite :: Test
testDatatypeSuite = TestList
[ testDatatype01
]
------------------------------------------------------------
-- Test finding built-in rulesets
------------------------------------------------------------
testRuleset01 :: Test
testRuleset01 = testJust "testRuleset01" $
M.lookup scopeRDF rdfRulesetMap
testRulesetSuite :: Test
testRulesetSuite = TestList
[ testRuleset01
]
------------------------------------------------------------
-- Test finding arbitrary axioms and rules
------------------------------------------------------------
testFindAxiom01, testFindAxiom02, testFindAxiom03 :: Test
testFindAxiom01 = testJust "testFindAxiom01" $
getMaybeContextAxiom (makeNSScopedName scopeRDF "a1") allRulesets
testFindAxiom02 = testJust "testFindAxiom02" $
getMaybeContextAxiom (makeNSScopedName scopeRDFS "a01") allRulesets
testFindAxiom03 = testJust "testFindAxiom03" $
getMaybeContextAxiom (makeNSScopedName (namespaceXsdType "integer") "dt")
allRulesets
testFindAxiomSuite :: Test
testFindAxiomSuite = TestList
[ testFindAxiom01, testFindAxiom02, testFindAxiom03
]
testFindRule01, testFindRule02, testFindRule03, testFindRule04 :: Test
testFindRule01 = testJust "testFindRule01" $
getMaybeContextRule (makeNSScopedName scopeRDF "r1") allRulesets
testFindRule02 = testJust "testFindRule02" $
getMaybeContextRule (makeNSScopedName scopeRDFS "r1") allRulesets
testFindRule03 = testJust "testFindRule03" $
getMaybeContextRule (makeNSScopedName scopeRDFD "r1") allRulesets
testFindRule04 = testJust "testFindRule04" $
getMaybeContextRule (makeNSScopedName (namespaceXsdType "integer") "Abs")
allRulesets
testFindRuleSuite :: Test
testFindRuleSuite = TestList
[ testFindRule01, testFindRule02, testFindRule03, testFindRule04
]
------------------------------------------------------------
-- All tests
------------------------------------------------------------
allTests :: [TF.Test]
allTests =
[ conv "VarMod" testVarModSuite
, conv "Datatype" testDatatypeSuite
, conv "Ruleset" testRulesetSuite
, conv "FindAxiom" testFindAxiomSuite
, conv "FindRule" testFindRuleSuite
]
main :: IO ()
main = TF.defaultMain allTests
--------------------------------------------------------------------------------
--
-- Copyright (c) 2003, Graham Klyne, 2009 Vasili I Galchin,
-- 2011, 2012, 2013 Douglas Burke
-- All rights reserved.
--
-- This file is part of Swish.
--
-- Swish is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 2 of the License, or
-- (at your option) any later version.
--
-- Swish is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with Swish; if not, write to:
-- The Free Software Foundation, Inc.,
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
--
--------------------------------------------------------------------------------