From 7a73dcd98f3a7824572d098889634662a47d6e7c Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Sun, 3 Oct 2021 13:48:29 +0100 Subject: Introduce functional tests These tests will check correctness of the overall system across versions. We should add more tests for know ontologies. --- .../ac/ox/cs/rsacomb/functional/Functional.scala | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/test/scala/uk/ac/ox/cs/rsacomb/functional/Functional.scala (limited to 'src/test') diff --git a/src/test/scala/uk/ac/ox/cs/rsacomb/functional/Functional.scala b/src/test/scala/uk/ac/ox/cs/rsacomb/functional/Functional.scala new file mode 100644 index 0000000..6882997 --- /dev/null +++ b/src/test/scala/uk/ac/ox/cs/rsacomb/functional/Functional.scala @@ -0,0 +1,49 @@ +package uk.ac.ox.cs.rsacomb.functional + +import org.scalatest.funspec.AnyFunSpec +import org.scalatest.matchers.should.Matchers + +import uk.ac.ox.cs.rsacomb.ontology.Ontology +import uk.ac.ox.cs.rsacomb.approximation.Upperbound +import uk.ac.ox.cs.rsacomb.converter.Normalizer +import uk.ac.ox.cs.rsacomb.util.RDFoxUtil + +class LUBM extends AnyFunSpec with Matchers { + + private val test = os.pwd / "tests" / "lubm" + + /* Approximation algorithms */ + //private val toLowerbound = new Lowerbound + private val toUpperbound = new Upperbound + + /* Normalization algorithms */ + private val normalizer = new Normalizer + + /* Ontology */ + private val ontology = Ontology( + test / "univ-bench.owl", + List(test / "data" / "lubm1.ttl") + ) normalize normalizer + private val rsa = ontology approximate toUpperbound + + /* Queries and results */ + private val queries = + RDFoxUtil.loadQueriesFromFile(test / "queries.sparql") + private val results = ujson.read(os.read(test / "results.json")).arr + + describe("Ontology size: 1)") { + + queries foreach { query => + it(s"Tested Query${query.id}") { + val answers = rsa.ask(query).answers.map(_._2.mkString(" ")) + val reference = results + .find(_("queryID").num == query.id) + .get("answers") + .arr + .map(_.str) + answers should contain theSameElementsAs reference + } + } + + } +} -- cgit v1.2.3