/* * Copyright (c) 2006-2011 Rogério Liesenfeld * This file is subject to the terms of the MIT license (see LICENSE.txt). */ package integrationTests; import org.junit.*; public final class BooleanExpressionsTest extends CoverageTest { BooleanExpressions tested; @Test public void evalOnlySomeCombinations() { assertTrue(tested.eval1(true, true, 0)); assertFalse(tested.eval1(true, false, 0)); findMethodData(7, "eval1"); assertPaths(4, 2, 2); } @Test public void evalBuggyCombination() { // Only this combination will fail if the third condition in eval1 is changed to "z < 0", // which demonstrates that a more sophisticated metric than branch coverage is needed. assertTrue(tested.eval1(true, false, 1)); findMethodData(7, "eval1"); assertPaths(4, 3, 3); } @Test public void evalAllCombinations() { assertTrue(tested.eval2(true, true, 0)); assertTrue(tested.eval2(true, false, 1)); assertFalse(tested.eval2(true, false, 0)); assertFalse(tested.eval2(false, true, 0)); findMethodData(12, "eval2"); assertPaths(4, 4, 4); } @Test public void evalOnlyFirstBranch() { assertFalse(tested.eval3(false, true, false)); findMethodData(17, "eval3"); assertPaths(4, 1, 1); } @Test public void evalAllPaths() { assertFalse(tested.eval3(false, true, false)); assertTrue(tested.eval3(true, true, false)); assertTrue(tested.eval3(true, false, true)); assertFalse(tested.eval3(true, false, false)); findMethodData(17, "eval3"); assertPaths(4, 4, 5); } @Test public void evalOnlyFirstAndSecondBranches() { assertFalse(tested.eval4(false, true, false)); assertFalse(tested.eval4(false, false, false)); assertFalse(tested.eval4(false, true, true)); assertFalse(tested.eval4(false, false, true)); assertTrue(tested.eval4(true, false, false)); assertTrue(tested.eval4(true, false, true)); findMethodData(22, "eval4"); assertPaths(4, 2, 6); } @Test public void eval5() { assertFalse(tested.eval5(false, true, true)); assertTrue(tested.eval5(false, false, false)); findMethodData(27, "eval5"); assertPaths(5, 2, 2); } @Test public void methodWithComplexExpressionWhichCallsAnotherInSameClass() { BooleanExpressions.isSameTypeIgnoringAutoBoxing(int.class, Integer.class); findMethodData(35, "isSameTypeIgnoringAutoBoxing"); assertPaths(8, 1, 1); findMethodData(43, "isWrapperOfPrimitiveType"); assertPaths(63, 1, 1); } }