001/*-------------------------------------------------------------------------+
002|                                                                          |
003| Copyright 2005-2011 the ConQAT Project                                   |
004|                                                                          |
005| Licensed under the Apache License, Version 2.0 (the "License");          |
006| you may not use this file except in compliance with the License.         |
007| You may obtain a copy of the License at                                  |
008|                                                                          |
009|    http://www.apache.org/licenses/LICENSE-2.0                            |
010|                                                                          |
011| Unless required by applicable law or agreed to in writing, software      |
012| distributed under the License is distributed on an "AS IS" BASIS,        |
013| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
014| See the License for the specific language governing permissions and      |
015| limitations under the License.                                           |
016+-------------------------------------------------------------------------*/
017package org.conqat.engine.sourcecode.coverage;
018
019import java.util.List;
020import java.util.function.Function;
021
022/**
023 * Information on how a line was covered.
024 */
025public enum ELineCoverage {
026
027        /** The line was not covered at all */
028        NOT_COVERED(LineCoverageInfo::getUncoveredLines),
029
030        /** The line was partially covered */
031        PARTIALLY_COVERED(LineCoverageInfo::getPartiallyCoveredLines),
032
033        /** The line was fully covered */
034        FULLY_COVERED(LineCoverageInfo::getFullyCoveredLines);
035
036        private final Function<LineCoverageInfo, List<Integer>> relevantLinesFunction;
037
038        private ELineCoverage(Function<LineCoverageInfo, List<Integer>> relevantLinesFunction) {
039                this.relevantLinesFunction = relevantLinesFunction;
040        }
041
042        /**
043         * Returns the relevant lines that are covered with this {@link ELineCoverage}
044         * type
045         */
046        public List<Integer> getRelevantLines(LineCoverageInfo lineCoverageInfo) {
047                return relevantLinesFunction.apply(lineCoverageInfo);
048        }
049
050}