/** * 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.instrumentation.testability; import static org.junit.Assert.assertTrue; import org.evosuite.instrumentation.testability.BooleanHelper; import org.junit.Before; import org.junit.Test; /** * @author fraser * */ public class BooleanHelperTest { @Before public void setUp() { BooleanHelper.clearStack(); } @Test public void test1() { int distance = BooleanHelper.getDistance(-1, 1, 0); assertTrue(distance <= 0); distance = BooleanHelper.getDistance(-1, 1, 1); assertTrue(distance > 0); } @Test public void test2() { int distance = BooleanHelper.getDistance(1, 1, 0); assertTrue(distance <= 0); distance = BooleanHelper.getDistance(1, 1, 1); assertTrue(distance > 0); BooleanHelper.pushPredicate(1, 1); distance = BooleanHelper.getDistance(1, 1, 0); assertTrue(distance <= 0); distance = BooleanHelper.getDistance(1, 1, 1); assertTrue(distance > 0); } @Test public void test3() { int distance = BooleanHelper.getDistance(1, 1, 0); assertTrue(distance <= 0); distance = BooleanHelper.getDistance(1, 1, 1); assertTrue(distance > 0); BooleanHelper.pushPredicate(-1, 1); distance = BooleanHelper.getDistance(1, 1, 0); assertTrue(distance <= 0); distance = BooleanHelper.getDistance(1, 1, 1); assertTrue(distance > 0); } @Test public void test4() { int distance = BooleanHelper.getDistance(1, 1, 0); assertTrue(distance <= 0); distance = BooleanHelper.getDistance(1, 1, 1); assertTrue(distance > 0); BooleanHelper.pushPredicate(-1, 1); BooleanHelper.pushPredicate(1, 1); distance = BooleanHelper.getDistance(1, 1, 0); assertTrue(distance <= 0); distance = BooleanHelper.getDistance(1, 1, 1); assertTrue(distance > 0); } @Test public void test5() { int distanceFalse1 = BooleanHelper.getDistance(1, 1, 0); int distanceTrue1 = BooleanHelper.getDistance(1, 1, 1); BooleanHelper.pushPredicate(-1, 1); int distanceFalse2 = BooleanHelper.getDistance(1, 1, 0); int distanceTrue2 = BooleanHelper.getDistance(1, 1, 1); assertTrue(distanceFalse1 < distanceFalse2); assertTrue(distanceTrue2 < distanceTrue1); BooleanHelper.pushPredicate(1, 1); int distanceFalse3 = BooleanHelper.getDistance(1, 1, 0); int distanceTrue3 = BooleanHelper.getDistance(1, 1, 1); assertTrue("Distances: " + distanceFalse2 + "/" + distanceFalse3, distanceFalse2 == distanceFalse3); assertTrue("Distances: " + distanceTrue2 + "/" + distanceTrue3, distanceTrue2 == distanceTrue3); BooleanHelper.pushPredicate(-100, 1); int distanceFalse4 = BooleanHelper.getDistance(1, 1, 0); int distanceTrue4 = BooleanHelper.getDistance(1, 1, 1); assertTrue(distanceFalse4 < distanceFalse3); assertTrue(distanceTrue4 > distanceTrue3); BooleanHelper.pushPredicate(100, 1); int distanceFalse5 = BooleanHelper.getDistance(1, 1, 0); int distanceTrue5 = BooleanHelper.getDistance(1, 1, 1); assertTrue(distanceFalse5 == distanceFalse4); assertTrue(distanceTrue5 == distanceTrue4); } @Test public void test6() { BooleanHelper.pushPredicate(-1, 1); int distanceFalse2 = BooleanHelper.getDistance(1, 1, 0); int distanceTrue2 = BooleanHelper.getDistance(1, 1, 1); int distanceFalse3 = BooleanHelper.getDistance(1, 1, 0); int distanceTrue3 = BooleanHelper.getDistance(1, 1, 1); assertTrue("Distances: " + distanceFalse2 + "/" + distanceFalse3, distanceFalse2 == distanceFalse3); assertTrue("Distances: " + distanceTrue2 + "/" + distanceTrue3, distanceTrue2 == distanceTrue3); BooleanHelper.pushPredicate(1, 1); int distanceFalse4 = BooleanHelper.getDistance(1, 1, 0); int distanceTrue4 = BooleanHelper.getDistance(1, 1, 1); assertTrue("Distances: " + distanceFalse4 + "/" + distanceFalse3, distanceFalse4 == distanceFalse3); assertTrue("Distances: " + distanceTrue4 + "/" + distanceTrue3, distanceTrue4 == distanceTrue3); } @Test public void test7() { BooleanHelper.pushPredicate(1, 1); int lastDistance = BooleanHelper.getDistance(1, 1, 1); assertTrue(lastDistance > 0); for (int i = 2; i < 10; i++) { BooleanHelper.pushPredicate(i, 1); int distance = BooleanHelper.getDistance(1, 1, 1); assertTrue("Iteration " + i + ": Expecting " + distance + " > " + lastDistance, distance > lastDistance); lastDistance = distance; } } @Test public void test8() { BooleanHelper.pushPredicate(1, 1); int lastDistance = BooleanHelper.getDistance(1, 1, 1); assertTrue(lastDistance > 0); for (int i = 10; i < 100000; i += 100) { BooleanHelper.pushPredicate(i, 1); int distance = BooleanHelper.getDistance(1, 1, 1); assertTrue("Iteration " + i + ": Expecting " + distance + " > " + lastDistance, distance > lastDistance); lastDistance = distance; } } @Test public void test9() { BooleanHelper.pushPredicate(1, 1); int distanceFalse1 = BooleanHelper.getDistance(1, 1, 0); int distanceTrue1 = BooleanHelper.getDistance(1, 1, 1); int distanceFalse2 = BooleanHelper.getDistance(1, 2, 0); int distanceTrue2 = BooleanHelper.getDistance(1, 2, 1); assertTrue("Distances: " + distanceFalse1 + "/" + distanceFalse2, distanceFalse1 < distanceFalse2); assertTrue("Distances: " + distanceTrue1 + "/" + distanceTrue2, distanceTrue1 > distanceTrue2); } @Test public void test10() { BooleanHelper.pushPredicate(34227, 1); int distanceFalse1 = BooleanHelper.getDistance(1, 1, 0); int distanceTrue1 = BooleanHelper.getDistance(1, 1, 1); BooleanHelper.pushPredicate(35608, 1); int distanceFalse2 = BooleanHelper.getDistance(1, 1, 0); int distanceTrue2 = BooleanHelper.getDistance(1, 1, 1); assertTrue("Distances: " + distanceFalse1 + "/" + distanceFalse2, distanceFalse1 > distanceFalse2); assertTrue("Distances: " + distanceTrue1 + "/" + distanceTrue2, distanceTrue1 < distanceTrue2); } }