/** * Returns list of inspector methods in a given class. * An inspector is a cheap-pure method with no arguments. * * @param className A class name */ public static List<String> getInspectors(String className) { List<String> pureMethods = CheapPurityAnalyzer.getInstance().getPureMethods(className); List<String> inspectors = new ArrayList<>(); for (String pm : pureMethods) { if ((Type.getArgumentTypes(pm.substring(pm.indexOf('('))).length == 0) && ! (pm.substring(0, pm.indexOf("(")).equals("<clinit>"))) inspectors.add(pm); } return inspectors; } }
if (!CheapPurityAnalyzer.getInstance().isPure(method)) { return false;
if (!CheapPurityAnalyzer.getInstance().isPure(method)) { cluster.addModifier(new GenericClass(clazz), genericMethod);
String methodName = "equals"; String descriptor = Type.getMethodDescriptor(Type.BOOLEAN_TYPE, Type.getType(Object.class)); CheapPurityAnalyzer cheapPurityAnalyzer = CheapPurityAnalyzer.getInstance(); if (!cheapPurityAnalyzer.isPure(className, methodName, descriptor)) continue; //Don't compare using impure equals(Object) methods
cluster.addModifier(new GenericClass(clazz), genericMethod); } else { if (!CheapPurityAnalyzer.getInstance().isPure(method)) { cluster.addModifier(new GenericClass(clazz), genericMethod);
CheapPurityAnalyzer purityAnalyzer = CheapPurityAnalyzer.getInstance(); cv = new PurityAnalysisClassVisitor(cv, className, purityAnalyzer);
if (invokedStatement instanceof MethodStatement) { if (fieldReference.equals(((MethodStatement) invokedStatement).getCallee())) { if (!CheapPurityAnalyzer.getInstance() .isPure(((MethodStatement) invokedStatement).getMethod().getMethod())) { moreClassesForStaticReset
@Test public void test() { EvoSuite evosuite = new EvoSuite(); String targetClass = ImpureEqualsTarget.class.getCanonicalName(); Properties.TARGET_CLASS = targetClass; Properties.OUTPUT_VARIABLES=""+RuntimeVariable.HadUnstableTests; String[] command = new String[] { "-generateSuite", "-class", targetClass }; Object result = evosuite.parseCommandLine(command); GeneticAlgorithm<?> ga = getGAFromResult(result); TestSuiteChromosome best = (TestSuiteChromosome) ga.getBestIndividual(); System.out.println("EvolvedTestSuite:\n" + best); double best_fitness = best.getFitness(); Assert.assertTrue("Optimal coverage was not achieved ", best_fitness == 0.0); CheapPurityAnalyzer purityAnalyzer = CheapPurityAnalyzer.getInstance(); String descriptor = Type.getMethodDescriptor(Type.BOOLEAN_TYPE, Type.getType(Object.class)); boolean equals = purityAnalyzer.isPure(targetClass, "equals", descriptor); assertFalse(equals); Map<String, OutputVariable<?>> map = DebugStatisticsBackend.getLatestWritten(); Assert.assertNotNull(map); OutputVariable unstable = map.get(RuntimeVariable.HadUnstableTests.toString()); Assert.assertNotNull(unstable); Assert.assertEquals(Boolean.FALSE, unstable.getValue()); }
@Test public void testImpureToString() { EvoSuite evosuite = new EvoSuite(); String targetClass = ImpureToStringInspector.class.getCanonicalName(); Properties.TARGET_CLASS = targetClass; Properties.OUTPUT_VARIABLES=""+RuntimeVariable.HadUnstableTests; String[] command = new String[] { "-generateSuite", "-class", targetClass }; Object result = evosuite.parseCommandLine(command); GeneticAlgorithm<?> ga = getGAFromResult(result); TestSuiteChromosome best = (TestSuiteChromosome) ga.getBestIndividual(); System.out.println("EvolvedTestSuite:\n" + best); double best_fitness = best.getFitness(); Assert.assertTrue("Optimal coverage was not achieved ", best_fitness == 0.0); CheapPurityAnalyzer purityAnalyzer = CheapPurityAnalyzer.getInstance(); String descriptor = Type .getMethodDescriptor(Type.getType(String.class)); boolean toString = purityAnalyzer.isPure(targetClass, "toString", descriptor); assertFalse(toString); Map<String, OutputVariable<?>> map = DebugStatisticsBackend.getLatestWritten(); Assert.assertNotNull(map); OutputVariable unstable = map.get(RuntimeVariable.HadUnstableTests.toString()); Assert.assertNotNull(unstable); Assert.assertEquals(Boolean.FALSE, unstable.getValue()); }
best_fitness == 0.0); CheapPurityAnalyzer purityAnalyzer = CheapPurityAnalyzer.getInstance();
@Test public void test() { EvoSuite evosuite = new EvoSuite(); String targetClass = PureEquals.class.getCanonicalName(); Properties.TARGET_CLASS = targetClass; Properties.OUTPUT_VARIABLES=""+RuntimeVariable.HadUnstableTests; String[] command = new String[] { "-generateSuite", "-class", targetClass }; Object result = evosuite.parseCommandLine(command); GeneticAlgorithm<?> ga = getGAFromResult(result); TestSuiteChromosome best = (TestSuiteChromosome) ga.getBestIndividual(); System.out.println("EvolvedTestSuite:\n" + best); double best_fitness = best.getFitness(); Assert.assertTrue("Optimal coverage was not achieved ", best_fitness == 0.0); CheapPurityAnalyzer purityAnalyzer = CheapPurityAnalyzer.getInstance(); String descriptor = Type.getMethodDescriptor(Type.BOOLEAN_TYPE, Type.getType(Object.class)); boolean equals = purityAnalyzer.isPure(targetClass, "equals", descriptor); assertTrue(equals); Map<String, OutputVariable<?>> map = DebugStatisticsBackend.getLatestWritten(); Assert.assertNotNull(map); OutputVariable unstable = map.get(RuntimeVariable.HadUnstableTests.toString()); Assert.assertNotNull(unstable); Assert.assertEquals(Boolean.FALSE, unstable.getValue()); }
@Test public void testRandom() { EvoSuite evosuite = new EvoSuite(); String targetClass = RandomUser.class.getCanonicalName(); Properties.TARGET_CLASS = targetClass; Properties.OUTPUT_VARIABLES=""+RuntimeVariable.HadUnstableTests; String[] command = new String[] { "-generateSuite", "-class", targetClass }; Object result = evosuite.parseCommandLine(command); GeneticAlgorithm<?> ga = getGAFromResult(result); TestSuiteChromosome best = (TestSuiteChromosome) ga.getBestIndividual(); System.out.println("EvolvedTestSuite:\n" + best); CheapPurityAnalyzer purityAnalyzer = CheapPurityAnalyzer.getInstance(); String descriptor = Type.getMethodDescriptor(Type.INT_TYPE); boolean nextInt = purityAnalyzer.isPure(targetClass, "nextInt", descriptor); assertFalse(nextInt); boolean randomNextInt = purityAnalyzer.isPure(java.util.Random.class.getCanonicalName(), "nextInt", descriptor); assertFalse(randomNextInt); boolean secureRandomNextInt = purityAnalyzer.isPure(java.security.SecureRandom.class.getCanonicalName(), "nextInt", descriptor); assertFalse(secureRandomNextInt ); Map<String, OutputVariable<?>> map = DebugStatisticsBackend.getLatestWritten(); Assert.assertNotNull(map); OutputVariable unstable = map.get(RuntimeVariable.HadUnstableTests.toString()); Assert.assertNotNull(unstable); Assert.assertEquals(Boolean.FALSE, unstable.getValue()); }
@Test public void test() { EvoSuite evosuite = new EvoSuite(); String targetClass = Foo.class.getCanonicalName(); Properties.TARGET_CLASS = targetClass; Properties.OUTPUT_VARIABLES=""+RuntimeVariable.HadUnstableTests; String[] command = new String[] { "-generateSuite", "-class", targetClass }; Object result = evosuite.parseCommandLine(command); GeneticAlgorithm<?> ga = getGAFromResult(result); TestSuiteChromosome best = (TestSuiteChromosome) ga.getBestIndividual(); System.out.println("EvolvedTestSuite:\n" + best); double best_fitness = best.getFitness(); Assert.assertTrue("Optimal coverage was not achieved ", best_fitness == 0.0); CheapPurityAnalyzer purityAnalyzer = CheapPurityAnalyzer.getInstance(); String descriptor = Type.getMethodDescriptor(Type.BOOLEAN_TYPE, Type.getType(Object.class)); boolean equals = purityAnalyzer.isPure(targetClass, "equals", descriptor); assertFalse(equals); Map<String, OutputVariable<?>> map = DebugStatisticsBackend.getLatestWritten(); Assert.assertNotNull(map); OutputVariable unstable = map.get(RuntimeVariable.HadUnstableTests.toString()); Assert.assertNotNull(unstable); Assert.assertEquals(Boolean.FALSE, unstable.getValue()); }
best_fitness == 0.0); CheapPurityAnalyzer purityAnalyzer = CheapPurityAnalyzer.getInstance();
@Test public void test() { EvoSuite evosuite = new EvoSuite(); String targetClass = JdkPureInspector.class.getCanonicalName(); Properties.TARGET_CLASS = targetClass; Properties.OUTPUT_VARIABLES=""+RuntimeVariable.HadUnstableTests; String[] command = new String[] { "-generateSuite", "-class", targetClass }; Object result = evosuite.parseCommandLine(command); GeneticAlgorithm<?> ga = getGAFromResult(result); TestSuiteChromosome best = (TestSuiteChromosome) ga.getBestIndividual(); System.out.println("EvolvedTestSuite:\n" + best); double best_fitness = best.getFitness(); Assert.assertTrue("Optimal coverage was not achieved ", best_fitness == 0.0); CheapPurityAnalyzer purityAnalyzer = CheapPurityAnalyzer.getInstance(); String descriptor = Type.getMethodDescriptor(Type.BOOLEAN_TYPE); boolean equalsToZ = purityAnalyzer.isPure(targetClass, "equalsToZ", descriptor); assertTrue(equalsToZ); boolean isLowerCase = purityAnalyzer.isPure(targetClass, "isLowerCase", descriptor); assertTrue(isLowerCase); Map<String, OutputVariable<?>> map = DebugStatisticsBackend.getLatestWritten(); Assert.assertNotNull(map); OutputVariable unstable = map.get(RuntimeVariable.HadUnstableTests.toString()); Assert.assertNotNull(unstable); Assert.assertEquals(Boolean.FALSE, unstable.getValue()); }
@Test public void test() { EvoSuite evosuite = new EvoSuite(); String targetClass = ImpureJdkInspector.class.getCanonicalName(); Properties.TARGET_CLASS = targetClass; Properties.OUTPUT_VARIABLES=""+RuntimeVariable.HadUnstableTests; String[] command = new String[] { "-generateSuite", "-class", targetClass }; Object result = evosuite.parseCommandLine(command); GeneticAlgorithm<?> ga = getGAFromResult(result); TestSuiteChromosome best = (TestSuiteChromosome) ga.getBestIndividual(); System.out.println("EvolvedTestSuite:\n" + best); double best_fitness = best.getFitness(); Assert.assertTrue("Optimal coverage was not achieved ", best_fitness == 0.0); CheapPurityAnalyzer purityAnalyzer = CheapPurityAnalyzer.getInstance(); String descriptor = Type.getMethodDescriptor(Type.INT_TYPE); boolean getPureSize = purityAnalyzer.isPure(targetClass, "getPureSize", descriptor); assertTrue(getPureSize); boolean getImpureSize = purityAnalyzer.isPure( targetClass, "getImpureSize", descriptor); assertFalse(getImpureSize); Map<String, OutputVariable<?>> map = DebugStatisticsBackend.getLatestWritten(); Assert.assertNotNull(map); OutputVariable unstable = map.get(RuntimeVariable.HadUnstableTests.toString()); Assert.assertNotNull(unstable); Assert.assertEquals(Boolean.FALSE, unstable.getValue()); }
best_fitness == 0.0); CheapPurityAnalyzer purityAnalyzer = CheapPurityAnalyzer.getInstance();
best_fitness == 0.0); CheapPurityAnalyzer purityAnalyzer = CheapPurityAnalyzer.getInstance();
best_fitness == 0.0); CheapPurityAnalyzer purityAnalyzer = CheapPurityAnalyzer.getInstance();
best_fitness == 0.0); CheapPurityAnalyzer purityAnalyzer = CheapPurityAnalyzer.getInstance();