Class TestCase

Object
TestCase
Direct Known Subclasses:
ImageIOTestCase, NameTest, ReferencingTestCase, TransformTestCase

public abstract class TestCase extends Object
Base class of all GeoAPI tests. All concrete subclasses need at least one factory for instantiating the objects to test. The factories must be specified at subclasses construction time either directly by the implementer, or indirectly by calls to the factories(Class[]) method.
Since:
2.2
See Also:
  • Field Details

    • listener

      public final TestWatcher listener
      A JUnit rule for listening to test execution events. This rule forwards events to all registered listeners.

      This field is public because JUnit requires us to do so, but should be considered as an implementation details (it should have been a private field).

      Since:
      3.1
    • units

      protected final Units units
      Provider of units of measurement (degree, metre, second, etc), never null. The Units.degree(), metre() and other methods shall return Unit instances compatible with the units created by the Factory instances to be tested. Those Unit<?> instances depend on the Unit of Measurement (JSR-373) implementation used by the factories. If no units were explicitly specified, then the default units are used.
      Since:
      3.1
    • validators

      protected final ValidatorContainer validators
      The set of Validator instances to use for verifying objects conformance (never null). If no validators were explicitly specified, then the default validators are used.
      Since:
      3.1
    • configurationTip

      protected transient Configuration.Key<Boolean> configurationTip
      A tip set by subclasses during the execution of some optional tests. In case of optional test failure, if this field is non-null, then a message will be logged at the Level.INFO for giving some tips to the developer about how he can disable the test.

      Example

      @Test
      public void myTest() {
          if (isDerivativeSupported) {
              configurationTip = Configuration.Key.isDerivativeSupported;
              // Do some tests the require support of math transform derivatives.
          }
          configurationTip = null;
      }
      Since:
      3.1
  • Constructor Details

    • TestCase

      protected TestCase()
      Creates a new test without factory. This constructor is provided for subclasses that instantiate their test object directly, without using any factory.
    • TestCase

      protected TestCase(Factory... factories)
      Creates a new test which will use the given factories to execute.
      Parameters:
      factories - the factories to be used by the test.
      Since:
      3.1
  • Method Details

    • factories

      @SafeVarargs protected static List<Factory[]> factories(Class<? extends Factory>... types)
      Returns factory instances for given factory interfaces. Each element in the returned list is the arguments to give to the subclass constructor. There is typically only one element in the list, but more elements could be included if many factory implementations are found for the same interface.

      This method is used by static methods having the Parameterized.Parameters annotation in subclasses. For example if a subclass constructor expects 3 factories of kind CRSFactory, CSFactory and DatumFactory in that order, then that subclass contains the following method:

      @Parameterized.Parameters
      public static List&lt;Factory[]&gt; factories() {
          return factories(CRSFactory.class, CSFactory.class, DatumFactory.class);
      }
      Note that the arrays may contain null elements if no factory implementation were found for a given interface. All GeoAPI test cases use Assume checks in order to disable any tests that require a missing factory.

      If many factory implementations were found for a given interface, then this method returns all possible combinations of those factories. For example if two instances of interface A are found (named A1 and A2), and two instances of interface B are also found (named B1 and B2), then this method returns a list containing:

      {A1, B1}
      {A2, B1}
      {A1, B2}
      {A2, B2}
      The current implementation first checks the factories explicitly specified by calls to the TestSuite.setFactories(Class, Factory[]) method. In no factories were explicitly specified, then this method searches the classpath using ServiceLoader.
      Parameters:
      types - the kind of factories to fetch.
      Returns:
      all combinations of factories of the given kind. Each list element is an array having the same length than types.
      Since:
      3.1
      See Also:
    • getEnabledFlags

      @SafeVarargs protected final boolean[] getEnabledFlags(Configuration.Key<Boolean>... properties)
      Returns booleans indicating whether the given operations are enabled. By default, every operations are enabled.
      Parameters:
      properties - the key for which the flags are wanted.
      Returns:
      an array of the same length than properties in which each element at index i indicates whether the properties[i] test should be enabled.
      Since:
      3.1
    • configuration

      public Configuration configuration()
      Returns information about the configuration of the test which has been run. The content of this map depends on the TestCase subclass. For a description of the map content, see any of the following subclasses:
      Returns:
      the configuration of the test being run, or an empty map if none. This method returns a modifiable map in order to allow subclasses to modify it.
      Since:
      3.1