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

com.atlassian.clover.registry.entities.FullBranchInfo Maven / Gradle / Ivy

Go to download

Clover is an award winning code coverage and testing tool for Java and Groovy. It integrates easily with Maven, Ant, Grails, Eclipse and IntelliJ IDEA as well as with continuous integration servers such as Bamboo, Jenkins or Hudson. Note: before Clover 4.0 this artifact was named com.cenqua.clover:clover.

The newest version!
package com.atlassian.clover.registry.entities;

import com.atlassian.clover.api.registry.BranchInfo;
import com.atlassian.clover.api.registry.ContextSet;
import com.atlassian.clover.api.registry.EntityContainer;
import com.atlassian.clover.api.registry.FileInfo;
import com.atlassian.clover.api.registry.SourceInfo;
import com.atlassian.clover.io.tags.TaggedDataInput;
import com.atlassian.clover.io.tags.TaggedDataOutput;
import com.atlassian.clover.io.tags.TaggedPersistent;
import com.atlassian.clover.lang.Languages;
import com.atlassian.clover.registry.CoverageDataProvider;
import com.atlassian.clover.spi.lang.LanguageConstruct;
import com.atlassian.clover.registry.FixedSourceRegion;
import org.jetbrains.annotations.Nullable;

import java.io.IOException;


public class FullBranchInfo extends FullElementInfo implements TaggedPersistent, BranchInfo {
    private transient FullMethodInfo containingMethod;

    public FullBranchInfo(
            FullMethodInfo containingMethod, int relativeDataIndex, ContextSet context,
            SourceInfo region, int complexity, boolean instrumented) {
        this(containingMethod, relativeDataIndex, context, region, complexity, instrumented, LanguageConstruct.Builtin.BRANCH);
    }

    public FullBranchInfo(
            FullMethodInfo containingMethod, int relativeDataIndex, ContextSet context,
            SourceInfo region, int complexity, boolean instrumented, LanguageConstruct construct) {
        this(containingMethod, context, new BasicBranchInfo(region, relativeDataIndex, complexity, instrumented, construct));
    }

    private FullBranchInfo(
            FullMethodInfo containingMethod, ContextSet context, BasicBranchInfo sharedInfo) {
        super(context, sharedInfo);
        this.containingMethod = containingMethod;
    }

    @Override
    public int getTrueHitCount() {
        return super.getHitCount();
    }

    @Override
    public int getFalseHitCount() {
        final CoverageDataProvider data = getDataProvider();
        if (data == null) {
            return 0;
        }
        return data.getHitCount(getDataIndex() + 1);
    }

    @Override
    public EntityContainer getParent() {
        return containingMethod;
    }

    @Override
    public boolean isInstrumented() {
        return sharedInfo.isInstrumented();
    }

    public FullBranchInfo copy(FullMethodInfo method) {
        return new FullBranchInfo(method, context, sharedInfo);
    }

    @Override
    public void setDataProvider(CoverageDataProvider data) {
        throw new UnsupportedOperationException("setDataProvider not supported on FullBranchInfo");
    }

    @Override
    public CoverageDataProvider getDataProvider() {
        return containingMethod.getDataProvider();
    }

    @Override
    public int getDataLength() {
        return 2;
    }

    void setContainingMethod(FullMethodInfo methodInfo) {
        this.containingMethod = methodInfo;
    }

    @Override
    @Nullable
    public FileInfo getContainingFile() {
        return containingMethod.getContainingFile();
    }

    ///CLOVER:OFF
    @Override
    public String toString() {
        return "FullBranchInfo{" +
            "sharedInfo=" + sharedInfo +
            ", context=" + context +
            '}';
    }
    ///CLOVER:ON

    @Override
    public void write(TaggedDataOutput out) throws IOException {
        out.write(com.atlassian.clover.context.ContextSet.class, (com.atlassian.clover.context.ContextSet)context);
        out.writeInt(sharedInfo.getRelativeDataIndex());
        out.writeInt(getComplexity());
        out.writeUTF(sharedInfo.getConstruct().getId());
        out.writeBoolean(sharedInfo.isInstrumented());
        FixedSourceRegion.writeRaw(this, out);
    }

    public static FullBranchInfo read(TaggedDataInput in) throws IOException {
        final ContextSet context = in.read(com.atlassian.clover.context.ContextSet.class);
        final int relativeDataIndex = in.readInt();
        final int complexity = in.readInt();
        final LanguageConstruct construct = Languages.lookupConstruct(in.readUTF());
        final boolean isInstrumented = in.readBoolean();
        final FixedSourceRegion region = FixedSourceRegion.read(in);

        return new FullBranchInfo(null, relativeDataIndex, context, region, complexity, isInstrumented, construct);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy