All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.streamingpool.ext.analysis.testing.RxAnalysisTestingSupport Maven / Gradle / Ivy

The newest version!
// @formatter:off
/**
*
* This file is part of streaming pool (http://www.streamingpool.org).
*
* Copyright (c) 2017-present, CERN. All rights reserved.
*
* Licensed 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.
*
*/
// @formatter:on

package org.streamingpool.ext.analysis.testing;

import static java.lang.String.format;
import static java.util.stream.Collectors.toList;

import java.util.List;

import org.streamingpool.ext.analysis.support.RxAnalysisSupport;
import org.tensorics.core.analysis.AnalysisResult;
import org.tensorics.core.analysis.AssertionStatus;
import org.tensorics.core.analysis.expression.AnalysisExpression;
import org.tensorics.core.analysis.expression.AssertionExpression;
import org.tensorics.core.resolve.domain.DetailedExpressionResult;

import io.reactivex.subscribers.TestSubscriber;

public interface RxAnalysisTestingSupport extends AnalysisTest, RxAnalysisSupport {

    default List evaluationStatusesOf(
            TestSubscriber> subscriber) {
        return subscriber.values().stream().map(r -> r.value().overallStatus()).collect(toList());
    }

    default List assertionsStatusesOf(TestSubscriber subscriber) {
        return subscriber.values().stream().map(result -> result.overallStatus()).collect(toList());
    }

    default List statusesOfAssertion(TestSubscriber subscriber, String name) {
        return subscriber.values().stream().map(detailedResult -> statusOfAssertion(detailedResult, name))
                .collect(toList());
    }

    default AssertionStatus statusOfAssertion(DetailedExpressionResult result,
            String name) {
        return statusOfAssertion(result.value(), name);
    }

    default AssertionStatus statusOfAssertion(AnalysisResult result, String name) {
        List assertionsWithName = result.assertions().stream()
                .filter(assertion -> assertion.name().equals(name)).collect(toList());

        if (assertionsWithName.size() != 1) {
            throw new IllegalArgumentException(
                    format("%s assertions match the name %s. Name should be unique", assertionsWithName.size(), name));
        }

        return result.statusFor(assertionsWithName.get(0));
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy