/**
* This file is licensed under the University of Illinois/NCSA Open Source License. See LICENSE.TXT for details.
*/
package edu.illinois.keshmesh.detector.tests.lck03j;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import junit.framework.Assert;
import org.eclipse.core.runtime.Path;
import org.junit.Before;
import org.junit.Test;
import edu.illinois.keshmesh.detector.bugs.BugPatterns;
import edu.illinois.keshmesh.detector.tests.BugInstanceParser;
import edu.illinois.keshmesh.detector.tests.NumberedBugInstance;
import edu.illinois.keshmesh.util.Modes;
/**
*
* @author Mohsen Vakilian
* @author Stas Negara
* @author Samira Tasharofi
*
*/
public class LCK03JTestBugInstanceParser {
private static final String REENTRANT_LOCK = "java.util.concurrent.locks.ReentrantLock";
private static final String CONDITION_OBJECT = "java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject";
private static final String FIX_INFO = REENTRANT_LOCK + ", " + CONDITION_OBJECT;
BugInstanceParser bugInstanceParser;
private Path path;
private LCK03JTest.LCK03JBugInstanceCreator bugInstanceCreator;
@Before
public void setup() {
Modes.setInTestMode(true);
BugPatterns.enableBugPatterns(BugPatterns.LCK03J);
path = new Path(".");
bugInstanceCreator = new LCK03JTest.LCK03JBugInstanceCreator();
bugInstanceParser = new BugInstanceParser(bugInstanceCreator, path);
}
@Test
public void shouldParseLCK03J() {
ensureIsFound("/*[LCK03J,01," + FIX_INFO + "*/", "/*]*/");
}
@Test
public void shouldParseLCK03JWithSpaces() {
ensureIsFound("/* [LCK03J,01," + FIX_INFO + " */", "/* ] */");
}
private void ensureIsFound(String beginOpenMarker, String beginCloseMarker) {
List<String> lines = Arrays.asList(new String[] { beginOpenMarker, beginCloseMarker });
Set<NumberedBugInstance> actualNumberedBugInstances = bugInstanceParser.parseExpectedBugInstances(lines.iterator());
Assert.assertEquals(1, actualNumberedBugInstances.size());
Set<NumberedBugInstance> expectedNumberedBugInstances = new HashSet<NumberedBugInstance>();
expectedNumberedBugInstances.add(new NumberedBugInstance(bugInstanceCreator.createTestBugInstance(BugPatterns.LCK03J, 1, 2, path, REENTRANT_LOCK, CONDITION_OBJECT), "01"));
Assert.assertEquals(expectedNumberedBugInstances, actualNumberedBugInstances);
}
}