Package com.olabini.jescov

Source Code of com.olabini.jescov.BranchCoverageStepdefs

/*
* See LICENSE file in distribution for copyright and licensing information.
*/
package com.olabini.jescov;

import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;

import java.util.HashMap;
import java.util.Map;
import java.util.Collection;
import java.util.Iterator;

import static org.junit.Assert.assertEquals;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.nullValue;
import static com.olabini.jescov.matchers.BranchCoverageMatcher.hasBranchCoverage;
import static com.olabini.jescov.matchers.BranchCoverageMatcher.hasNegativeBranchCoverage;
import static com.olabini.jescov.matchers.BranchCoverageMatcher.hasPositiveBranchCoverage;

import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;

import com.olabini.jescov.generators.JsonGenerator;
import com.olabini.jescov.generators.JsonIngester;
import com.olabini.jescov.generators.XmlGenerator;

import org.json.simple.JSONValue;

public class BranchCoverageStepdefs {
    private CucumberData data;

    public BranchCoverageStepdefs(CucumberData data) {
        this.data = data;
    }

    @Then("^the negative branch coverage on line (\\d+) should be (\\d+)$")
    public void the_negative_branch_coverage_on_line_should_be_(int line, int expectedCoverage) {
        assertThat(data.getCoverageData(), hasNegativeBranchCoverage(expectedCoverage).onLine(line));
    }
    
    @Then("^the positive branch coverage on line (\\d+) should be (\\d+)$")
    public void the_positive_branch_coverage_on_line_should_be_(int line, int expectedCoverage) {
        assertThat(data.getCoverageData(), hasPositiveBranchCoverage(expectedCoverage).onLine(line));
    }

    @Then("^the branch coverage on line (\\d+) should be (\\d+) on axis (\\d+)$")
    public void the_positive_branch_coverage_on_line_should_be_(int line, int expectedCoverage, int axis) {
        assertThat(data.getCoverageData(), hasBranchCoverage(expectedCoverage).onLine(line).onAxis(axis));
    }

    @Then("^the generated JSON should be:$")
    public void the_generated_JSON_should_be(String expectedJSON) throws IOException {
        StringWriter writer = new StringWriter();
        new JsonGenerator(writer).generate(data.getCoverageData());

        Object expected = JSONValue.parse(expectedJSON);
        Object real = JSONValue.parse(writer.toString());

        assertThat(real, is(expected));
    }

    @Then("^the generated XML should be:$")
    public void the_generated_XML_should_be(String expectedXML) throws IOException {
        StringWriter writer = new StringWriter();
        new XmlGenerator(writer).generate(data.getCoverageData());

        assertEquals(expectedXML, writer.toString());
    }

    @When("^I ingest this JSON:$")
    public void I_ingest_this_JSON(String jsonToIngest) throws IOException {
        CoverageData cd = new JsonIngester().ingest(new StringReader(jsonToIngest));
        data.setCoverageData(cd);
    }


    @Then("^the internal structures should be correct$")
    public void the_internal_structures_should_be_correct() {
        CoverageData cd = data.getCoverageData();
        FileCoverage fc = cd.getFileCoverageFor("<test input>");
        LineCoverage lc;
        Collection<BranchCoverage> bcs;

        lc = fc.getLineCoverageFor(1);
        bcs = fc.getBranchCoverageFor(1);
        assertThat(lc.getHits(), is(1));
        assertThat(bcs, is(nullValue()));

        lc = fc.getLineCoverageFor(2);
        bcs = fc.getBranchCoverageFor(2);
        assertThat(lc.getHits(), is(8));
        assertThat(bcs.size(), is(1));
        assertThat(bcs.iterator().next().getBranches()[0], is(4));
        assertThat(bcs.iterator().next().getBranches()[1], is(4));

        lc = fc.getLineCoverageFor(3);
        bcs = fc.getBranchCoverageFor(3);
        assertThat(lc.getHits(), is(4));
        assertThat(bcs.size(), is(2));
        Iterator<BranchCoverage> iter = bcs.iterator();
        BranchCoverage first = iter.next();
        BranchCoverage second = iter.next();
        assertThat(first.getBranches()[0], is(1));
        assertThat(first.getBranches()[1], is(1));
        assertThat(second.getBranches()[0], is(2));
        assertThat(second.getBranches()[1], is(2));

        lc = fc.getLineCoverageFor(5);
        bcs = fc.getBranchCoverageFor(5);
        assertThat(lc.getHits(), is(4));
        assertThat(bcs.size(), is(2));
        iter = bcs.iterator();
        first = iter.next();
        second = iter.next();
        assertThat(first.getBranches()[0], is(1));
        assertThat(first.getBranches()[1], is(1));
        assertThat(second.getBranches()[0], is(2));
        assertThat(second.getBranches()[1], is(2));

        lc = fc.getLineCoverageFor(8);
        bcs = fc.getBranchCoverageFor(8);
        assertThat(lc.getHits(), is(1));
        assertThat(bcs, is(nullValue()));

        lc = fc.getLineCoverageFor(9);
        bcs = fc.getBranchCoverageFor(9);
        assertThat(lc.getHits(), is(1));
        assertThat(bcs, is(nullValue()));

        lc = fc.getLineCoverageFor(10);
        bcs = fc.getBranchCoverageFor(10);
        assertThat(lc.getHits(), is(1));
        assertThat(bcs, is(nullValue()));

        lc = fc.getLineCoverageFor(11);
        bcs = fc.getBranchCoverageFor(11);
        assertThat(lc.getHits(), is(1));
        assertThat(bcs, is(nullValue()));

        lc = fc.getLineCoverageFor(12);
        bcs = fc.getBranchCoverageFor(12);
        assertThat(lc.getHits(), is(1));
        assertThat(bcs, is(nullValue()));

        lc = fc.getLineCoverageFor(13);
        bcs = fc.getBranchCoverageFor(13);
        assertThat(lc.getHits(), is(1));
        assertThat(bcs, is(nullValue()));

        lc = fc.getLineCoverageFor(14);
        bcs = fc.getBranchCoverageFor(14);
        assertThat(lc.getHits(), is(1));
        assertThat(bcs, is(nullValue()));

        lc = fc.getLineCoverageFor(15);
        bcs = fc.getBranchCoverageFor(15);
        assertThat(lc.getHits(), is(1));
        assertThat(bcs, is(nullValue()));
    }
}// BranchCoverageStepdefs
TOP

Related Classes of com.olabini.jescov.BranchCoverageStepdefs

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.