/**
* This file is licensed under the University of Illinois/NCSA Open Source License. See LICENSE.TXT for details.
*/
package edu.illinois.keshmesh.detector.tests.vna00j;
import static org.junit.Assert.assertEquals;
import static org.junit.Assume.assumeNotNull;
import junit.framework.Assert;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.OperationCanceledException;
import org.junit.Test;
import edu.illinois.keshmesh.detector.VNA00JIntermediateResults;
import edu.illinois.keshmesh.detector.bugs.BugInstance;
import edu.illinois.keshmesh.detector.bugs.BugPattern;
import edu.illinois.keshmesh.detector.bugs.BugPatterns;
import edu.illinois.keshmesh.detector.bugs.FixInformation;
import edu.illinois.keshmesh.detector.bugs.VNA00JFixInformation;
import edu.illinois.keshmesh.detector.tests.AbstractTestCase;
import edu.illinois.keshmesh.detector.tests.BugInstanceCreator;
/**
*
* @author Mohsen Vakilian
* @author Stas Negara
*
*/
abstract public class VNA00JTest extends AbstractTestCase {
@Override
protected BugPattern getBugPattern() {
return BugPatterns.VNA00J;
}
@Override
protected void fixBugInstance(BugInstance bugInstance) throws OperationCanceledException, CoreException {
Assert.assertNotNull("Could not find bug instance.", bugInstance);
}
protected String getExpectedThreadSafeClasses() {
return null;
}
@Test
public void testThreadSafeClasses() {
assumeNotNull(getExpectedThreadSafeClasses());
VNA00JIntermediateResults actualIntermediateResults = (VNA00JIntermediateResults) getIntermediateResults();
assertEquals(getExpectedThreadSafeClasses(), actualIntermediateResults.getThreadSafeClasses());
}
protected String getExpectedUnprotectedInstructionsThatMayAccessUnsafelySharedFields() {
return null;
}
@Test
public void testUnprotectedInstructionsThatMayAccessUnsafelySharedFields() {
assumeNotNull(getExpectedUnprotectedInstructionsThatMayAccessUnsafelySharedFields());
VNA00JIntermediateResults actualIntermediateResults = (VNA00JIntermediateResults) getIntermediateResults();
assertEquals(getExpectedUnprotectedInstructionsThatMayAccessUnsafelySharedFields(), actualIntermediateResults.getUnprotectedInstructionsThatMayAccessUnsafelySharedFields());
}
@Override
protected BugInstanceCreator getBugInstanceCreator() {
return new VNA00JBugInstanceCreator();
}
protected static class VNA00JBugInstanceCreator extends AbstractTestCase.GeneralBugInstanceCreator {
@Override
public FixInformation createFixInformation(String... replacements) {
return new VNA00JFixInformation();
}
}
}