/*
 * Copyright 2019 Apple Inc.
 *
 * 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.
 */
package com.shazam.fork.summary;

import com.shazam.fork.aggregator.AggregatedTestResult;
import com.shazam.fork.aggregator.PoolTestResult;

import java.util.Collection;

import static com.shazam.fork.summary.ResultStatus.IGNORED;
import static com.shazam.fork.summary.ResultStatus.PASS;

public class OutcomeAggregator {
    @SuppressWarnings("SimplifiableIfStatement")
    public boolean aggregate(AggregatedTestResult aggregatedTestResult) {
        if (!aggregatedTestResult.getFatalCrashedTests().isEmpty()) {
            return false;
        }
        return aggregatedTestResult.getPoolTestResults().stream()
                .map(PoolTestResult::getTestResults)
                .flatMap(Collection::stream)
                .allMatch(testResult -> testResult.getResultStatus() == PASS || testResult.getResultStatus() == IGNORED);
    }
}
