| /* |
| * 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. |
| */ |
| |
| /* $Id$ */ |
| |
| package org.apache.fop.layoutengine; |
| |
| import java.io.File; |
| |
| /** |
| * A class that contains the information needed to run a suite of layout engine and FO tree |
| * tests. |
| */ |
| public final class TestFilesConfiguration { |
| |
| private final File testDirectory; |
| private final String singleTest; |
| private final String testStartsWith; |
| private final String testFileSuffix; |
| private final String testSet; |
| private final String disabledTests; |
| private final boolean privateTests; |
| |
| private TestFilesConfiguration(Builder builder) { |
| this.testDirectory = new File(builder.testDirectory); |
| this.singleTest = builder.singleTest; |
| this.testStartsWith = builder.testStartsWith; |
| this.testFileSuffix = builder.testFileSuffix; |
| this.testSet = builder.testSet; |
| this.privateTests = builder.privateTests; |
| this.disabledTests = builder.disabledTests; |
| } |
| |
| /** |
| * Returns the directory of the tests. |
| * @return the test directory |
| */ |
| public File getTestDirectory() { |
| return testDirectory; |
| } |
| |
| /** |
| * Returns the name of the single test file to run. |
| * @return the single test file name |
| */ |
| public String getSingleTest() { |
| return singleTest; |
| } |
| |
| /** |
| * Returns the string that must prefix the test file names. |
| * @return the prefixing string |
| */ |
| public String getStartsWith() { |
| return testStartsWith; |
| } |
| |
| /** |
| * Returns the file suffix (i.e. ".xml" for XML files and ".fo" for FOs). |
| * @return the file suffix |
| */ |
| public String getFileSuffix() { |
| return testFileSuffix; |
| } |
| |
| /** |
| * Returns the directory set of tests to be run. |
| * @return the directory tests |
| */ |
| public String getTestSet() { |
| return testSet; |
| } |
| |
| /** |
| * Returns the name of the XML file containing the disabled tests. |
| * @return a file name, may be null |
| */ |
| public String getDisabledTests() { |
| return disabledTests; |
| } |
| |
| /** |
| * Whether any private tests should be invoked. |
| * @return true if private tests should be tested |
| */ |
| public boolean hasPrivateTests() { |
| return privateTests; |
| } |
| |
| /** |
| * A builder class that configures the data for running a suite of tests designed for the |
| * layout engine and FOTree. |
| */ |
| public static class Builder { |
| |
| private String testDirectory; |
| private String singleTest; |
| private String testStartsWith; |
| private String testFileSuffix; |
| private String testSet; |
| private String disabledTests; |
| private boolean privateTests; |
| |
| /** |
| * Configures the test directory. |
| * @param dir the test directory |
| * @return {@code this} |
| */ |
| public Builder testDir(String dir) { |
| testDirectory = dir; |
| return this; |
| } |
| |
| /** |
| * Configures the name of the single test to run. |
| * @param singleProperty name of the property that determines the single test case |
| * @return {@code this} |
| */ |
| public Builder singleProperty(String singleProperty) { |
| singleTest = getSystemProperty(singleProperty); |
| return this; |
| } |
| |
| /** |
| * Configures the prefix that all test cases must match. |
| * @param startsWithProperty name of the property that determines the common prefix |
| * @return {@code this} |
| */ |
| public Builder startsWithProperty(String startsWithProperty) { |
| testStartsWith = getSystemProperty(startsWithProperty); |
| return this; |
| } |
| |
| /** |
| * Configures the test file name suffix. |
| * @param suffix the suffixing string |
| * @return {@code this} |
| */ |
| public Builder suffix(String suffix) { |
| testFileSuffix = suffix; |
| return this; |
| } |
| |
| /** |
| * Configures the name of the directory containing the set of tests. |
| * @param testSet the directory of tests. If null, defaults to "standard-testcases" |
| * @return {@code this} |
| */ |
| public Builder testSet(String testSet) { |
| this.testSet = testSet != null ? testSet : "standard-testcases"; |
| return this; |
| } |
| |
| /** |
| * Configures whether any tests are disabled. |
| * @param disabledProperty name of the property that determines the file of |
| * disabled test cases |
| * @param defaultValue if the property was not defined, uses this file name |
| * instead |
| * @return {@code this} |
| */ |
| public Builder disabledProperty(String disabledProperty, String defaultValue) { |
| String property = getSystemProperty(disabledProperty); |
| disabledTests = property != null ? property : defaultValue; |
| return this; |
| } |
| |
| /** |
| * Configures whether private tests must be run or not. |
| * @param privateTestsProperty name of the property containing the boolean switch |
| * @return {@code this} |
| */ |
| public Builder privateTestsProperty(String privateTestsProperty) { |
| String property = getSystemProperty(privateTestsProperty); |
| this.privateTests = property != null && property.equalsIgnoreCase("true"); |
| return this; |
| } |
| |
| private String getSystemProperty(String property) { |
| return System.getProperty(property); |
| } |
| |
| /** |
| * Creates the configuration instance. |
| * @return a configuration instance configured by this builder |
| */ |
| public TestFilesConfiguration build() { |
| return new TestFilesConfiguration(this); |
| } |
| } |
| } |