| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.apache.jena.sparql.junit; |
| |
| import junit.framework.Test ; |
| import junit.framework.TestCase ; |
| import junit.framework.TestSuite ; |
| import org.apache.jena.atlas.logging.Log ; |
| import org.apache.jena.query.Syntax ; |
| import org.apache.jena.rdf.model.Resource ; |
| import org.apache.jena.sparql.vocabulary.TestManifest ; |
| import org.apache.jena.sparql.vocabulary.TestManifestUpdate_11 ; |
| import org.apache.jena.sparql.vocabulary.TestManifestX ; |
| import org.apache.jena.sparql.vocabulary.TestManifest_11 ; |
| import org.apache.jena.util.junit.TestFactoryManifest ; |
| import org.apache.jena.util.junit.TestUtils ; |
| |
| public class ScriptTestSuiteFactory extends TestFactoryManifest |
| { |
| // Set (and retrieve) externally. |
| public static EarlReport results = null ; |
| |
| /** Make a test suite from a manifest file */ |
| static public TestSuite make(String filename) |
| { |
| ScriptTestSuiteFactory tFact = new ScriptTestSuiteFactory() ; |
| return tFact.process(filename) ; |
| } |
| |
| /** Make a single test */ |
| static public TestSuite make(String query, String data, String result) |
| { |
| TestItem item = TestItem.create(query, query, data, result) ; |
| QueryTest t = new QueryTest(item.getName(), null, item) ; |
| TestSuite ts = new TestSuite() ; |
| ts.setName(TestUtils.safeName(query)) ; |
| ts.addTest(t) ; |
| return ts ; |
| } |
| |
| @Override |
| public Test makeTest(Resource manifest, Resource entry, String testName, Resource action, Resource result) |
| { |
| if ( action == null ) |
| { |
| System.out.println("Null action: "+entry) ; |
| return null ; |
| } |
| |
| // Defaults. |
| Syntax querySyntax = TestQueryUtils.getQuerySyntax(manifest) ; |
| |
| if ( querySyntax != null ) |
| { |
| if ( ! querySyntax.equals(Syntax.syntaxARQ) && |
| ! querySyntax.equals(Syntax.syntaxSPARQL_10) && |
| ! querySyntax.equals(Syntax.syntaxSPARQL_11) ) |
| throw new QueryTestException("Unknown syntax: "+querySyntax) ; |
| } |
| |
| TestItem item = TestItem.create(entry, TestManifest.QueryEvaluationTest) ; |
| Resource testType = item.getTestType() ; |
| TestCase test = null ; |
| |
| // Frankly this all needs rewriting. |
| // Drop the idea of testItem. pass entry/action/result to subclass. |
| // Library for parsing entries. |
| |
| if ( testType != null ) |
| { |
| // == Good syntax |
| if ( testType.equals(TestManifest.PositiveSyntaxTest) ) |
| return new SyntaxTest(testName, results, item) ; |
| if ( testType.equals(TestManifest_11.PositiveSyntaxTest11) ) |
| return new SyntaxTest(testName, results, item) ; |
| if ( testType.equals(TestManifestX.PositiveSyntaxTestARQ) ) |
| return new SyntaxTest(testName, results, item) ; |
| |
| // == Bad |
| if ( testType.equals(TestManifest.NegativeSyntaxTest) ) |
| return new SyntaxTest(testName, results, item, false) ; |
| if ( testType.equals(TestManifest_11.NegativeSyntaxTest11) ) |
| return new SyntaxTest(testName, results, item, false) ; |
| if ( testType.equals(TestManifestX.NegativeSyntaxTestARQ) ) |
| return new SyntaxTest(testName, results, item, false) ; |
| |
| // ---- Update tests |
| if ( testType.equals(TestManifest_11.PositiveUpdateSyntaxTest11) ) |
| return new SyntaxUpdateTest(testName, results, item, true) ; |
| if ( testType.equals(TestManifestX.PositiveUpdateSyntaxTestARQ) ) |
| return new SyntaxUpdateTest(testName, results, item, true) ; |
| |
| if ( testType.equals(TestManifest_11.NegativeUpdateSyntaxTest11) ) |
| return new SyntaxUpdateTest(testName, results, item, false) ; |
| if ( testType.equals(TestManifestX.NegativeUpdateSyntaxTestARQ) ) |
| return new SyntaxUpdateTest(testName, results, item, false) ; |
| |
| // Two names for same thing. |
| // Note item is not passed down. |
| if ( testType.equals(TestManifestUpdate_11.UpdateEvaluationTest) ) |
| return UpdateTest.create(testName, results, entry, action, result) ; |
| if ( testType.equals(TestManifest_11.UpdateEvaluationTest) ) |
| return UpdateTest.create(testName, results, entry, action, result) ; |
| |
| // ---- |
| |
| if ( testType.equals(TestManifestX.TestSerialization) ) |
| return new TestSerialization(testName, results, item) ; |
| |
| if ( testType.equals(TestManifest.QueryEvaluationTest) |
| || testType.equals(TestManifestX.TestQuery) |
| ) |
| return new QueryTest(testName, results, item) ; |
| |
| // Reduced is funny. |
| if ( testType.equals(TestManifest.ReducedCardinalityTest) ) |
| return new QueryTest(testName, results, item) ; |
| |
| if ( testType.equals(TestManifestX.TestSurpressed) ) |
| return new SurpressedTest(testName, results, item) ; |
| |
| if ( testType.equals(TestManifest_11.CSVResultFormatTest) ) |
| { |
| Log.warn("Tests", "Skip CSV test: "+testName) ; |
| return null ; |
| } |
| |
| System.err.println("Test type '"+testType+"' not recognized") ; |
| } |
| // Default |
| test = new QueryTest(testName, results, item) ; |
| return test ; |
| } |
| } |