Interface SelectorResolver.Context

  • Enclosing interface:
    SelectorResolver

    @API(status=EXPERIMENTAL,
         since="1.5")
    public static interface SelectorResolver.Context
    The context for resolving a DiscoverySelector and adding it to the test tree.

    The context is used to add resolved TestDescriptors to the test tree if and only if the parent TestDescriptor could be found. Alternatively, a resolver may use the context to resolve a certain DiscoverySelector into a TestDescriptor (e.g. for adding a filter and returning a partial match).

    Since:
    1.5
    See Also:
    SelectorResolver
    • Method Detail

      • addToParent

        <T extends TestDescriptorOptional<T> addToParent​(Function<TestDescriptor,​Optional<T>> creator)
        Add a TestDescriptor to an unspecified parent, usually the engine descriptor, by applying the supplied Function to the new parent.

        The parent will be the engine descriptor unless another parent has already been determined, i.e. if the selector that is being resolved is the result of expanding a SelectorResolver.Match.

        If the result of applying the Function is present, it will be added as a child of the parent TestDescriptor unless a descriptor with the same unique ID was added earlier.

        Type Parameters:
        T - the type of the new TestDescriptor
        Parameters:
        creator - Function that will be called with the new parent to determine the new TestDescriptor to be added; must not return null
        Returns:
        the new TestDescriptor or the previously existing one with the same unique ID; never null but potentially empty
        Throws:
        ClassCastException - if the previously existing TestDescriptor is not an instance of T
      • addToParent

        <T extends TestDescriptorOptional<T> addToParent​(Supplier<DiscoverySelector> parentSelectorSupplier,
                                                           Function<TestDescriptor,​Optional<T>> creator)
        Add a TestDescriptor to a parent, specified by the DiscoverySelector returned by the supplied Supplier, by applying the supplied Function to the new parent.

        Unless another parent has already been determined, i.e. if the selector that is being resolved is the result of expanding a SelectorResolver.Match, the DiscoverySelector returned by the supplied Supplier will be used to determine the parent. If no parent is found, the supplied Function will not be called. If there are multiple potential parents, an exception will be thrown. Otherwise, the resolved TestDescriptor will be used as the parent and passed to the supplied Function.

        If the result of applying the Function is present, it will be added as a child of the parent TestDescriptor unless a descriptor with the same unique ID was added earlier.

        Type Parameters:
        T - the type of the new TestDescriptor
        Parameters:
        creator - Function that will be called with the new parent to determine the new TestDescriptor to be added; must not return null
        Returns:
        the new TestDescriptor or the previously existing one with the same unique ID; never null but potentially empty
        Throws:
        ClassCastException - if the previously existing TestDescriptor is not an instance of T