/**
* Copyright (C) 2010-2017 Gordon Fraser, Andrea Arcuri and EvoSuite
* contributors
*
* This file is part of EvoSuite.
*
* EvoSuite is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation, either version 3.0 of the License, or
* (at your option) any later version.
*
* EvoSuite is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with EvoSuite. If not, see <http://www.gnu.org/licenses/>.
*/
package org.evosuite.xsd;
import static org.junit.Assert.assertEquals;
import org.junit.Assert;
import org.junit.Test;
import java.util.Set;
/**
*
* @author José Campos
*/
public class CUTUtilTest {
@Test
public void testNoSuccessfulGeneration() {
CUT cut = new CUT();
Generation generation = new Generation();
generation.setFailed(true);
generation.setModified(true);
cut.getGeneration().add(generation);
assertEquals(0, CUTUtil.getNumberStatements(cut));
assertEquals(0, CUTUtil.getNumberTests(cut));
Assert.assertTrue(CUTUtil.getCriteria(cut).isEmpty());
assertEquals(0.0, CUTUtil.getCriterionCoverage(cut, ""), 0.0);
assertEquals(0.0, CUTUtil.getOverallCoverage(cut), 0.0);
}
@Test
public void testSuccessfulGeneration() {
TestSuite suite = new TestSuite();
suite.setTotalNumberOfStatements(XSDUtils.convert(15));
suite.setTotalEffortInSeconds(XSDUtils.convert(150));
suite.setNumberOfTests(XSDUtils.convert(7));
Coverage branch = new Coverage();
branch.setCriterion("Branch");
branch.setCoverageValue(0.8);
Coverage exception = new Coverage();
exception.setCriterion("Exception");
exception.setCoverageValue(0.3);
suite.getCoverage().add(branch);
suite.getCoverage().add(exception);
Generation generation = new Generation();
generation.setFailed(false);
generation.setSuite(suite);
generation.setTimeBudgetInSeconds(XSDUtils.convert(66));
CUT cut = new CUT();
cut.getGeneration().add(generation);
assertEquals(15, CUTUtil.getNumberStatements(cut));
assertEquals(3, CUTUtil.getTotalEffort(cut));
assertEquals(3, CUTUtil.getTotalEffort(cut, 0));
assertEquals(0, CUTUtil.getTotalEffort(cut, 1)); // invalid id
assertEquals(2, CUTUtil.getTimeBudget(cut));
assertEquals(2, CUTUtil.getTimeBudget(cut, 0));
assertEquals(0, CUTUtil.getTimeBudget(cut, 1)); // invalid id
assertEquals(7, CUTUtil.getNumberTests(cut));
Set<String> criteria = CUTUtil.getCriteria(cut);
assertEquals(2, criteria.size());
Assert.assertTrue(criteria.contains("Branch"));
Assert.assertTrue(criteria.contains("Exception"));
assertEquals(0.8, CUTUtil.getCriterionCoverage(cut, "Branch"), 0.0);
assertEquals(0.3, CUTUtil.getCriterionCoverage(cut, "Exception"), 0.0);
assertEquals(0.55, CUTUtil.getOverallCoverage(cut), 0.0);
}
@Test
public void testLatestGeneration() {
CUT cut = new CUT();
Generation g0 = new Generation();
g0.setId(XSDUtils.convert(0));
cut.getGeneration().add(g0);
Generation g1 = new Generation();
g1.setId(XSDUtils.convert(1));
cut.getGeneration().add(g1);
assertEquals(1, CUTUtil.getLatestGeneration(cut).getId().intValue());
}
@Test
public void testLatestSuccessfulGeneration_Failed_and_Modified() {
CUT cut = new CUT();
Generation generation = new Generation();
generation.setFailed(true);
generation.setModified(true);
cut.getGeneration().add(generation);
Assert.assertNull(CUTUtil.getLatestSuccessfulGeneration(cut));
}
@Test
public void testLatestSuccessfulGeneration_Failed_not_Modified() {
CUT cut = new CUT();
Generation generation = new Generation();
generation.setFailed(true);
generation.setModified(false);
cut.getGeneration().add(generation);
Assert.assertNull(CUTUtil.getLatestSuccessfulGeneration(cut));
}
@Test
public void testLatestSuccessfulGeneration_not_Failed_no_Suite() {
CUT cut = new CUT();
Generation generation = new Generation();
generation.setFailed(false);
generation.setSuite(null);
cut.getGeneration().add(generation);
Assert.assertNull(CUTUtil.getLatestSuccessfulGeneration(cut));
}
@Test
public void testLatestSuccessfulGeneration() {
CUT cut = new CUT();
Generation generation = new Generation();
generation.setFailed(false);
generation.setSuite(new TestSuite());
cut.getGeneration().add(generation);
Assert.assertNotNull(CUTUtil.getLatestSuccessfulGeneration(cut));
}
}