package codemining.java.codeutils.binding; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.io.File; import java.io.IOException; import java.util.Collection; import java.util.List; import org.apache.commons.io.FileUtils; import org.junit.Before; import org.junit.Test; import codemining.java.codeutils.JavaAstExtractorTest; import codemining.languagetools.bindings.TokenNameBinding; public class JavaApproximateVariableBindingExtractorTest { private static <T> void allAreContained(final Collection<T> collection, final Collection<T> in) { for (final T element : collection) { assertTrue(in.contains(element)); } } File classContent; File classContent2; String methodContent; @Before public void setUp() throws IOException { classContent = new File(JavaAstExtractorTest.class.getClassLoader() .getResource("SampleClass.txt").getFile()); classContent2 = new File(JavaAstExtractorTest.class.getClassLoader() .getResource("SampleClass2.txt").getFile()); methodContent = FileUtils.readFileToString(new File( JavaAstExtractorTest.class.getClassLoader() .getResource("SampleMethod.txt").getFile())); } @Test public void testClassBindings() throws IOException { final JavaApproximateVariableBindingExtractor jabe = new JavaApproximateVariableBindingExtractor(); final JavaExactVariableBindingsExtractor jbe = new JavaExactVariableBindingsExtractor(); final List<TokenNameBinding> classVariableBindings = jabe .getNameBindings(classContent); final List<TokenNameBinding> classVariableBindingsExact = jbe .getNameBindings(classContent); BindingTester .checkAllBindings(classVariableBindings); assertEquals(classVariableBindings.size(), 5); final List<TokenNameBinding> classVariableBindings2 = jabe .getNameBindings(classContent2); final List<TokenNameBinding> classVariableBindings2Exact = jbe .getNameBindings(classContent2); assertEquals(classVariableBindings2.size(), 9); allAreContained(classVariableBindingsExact, classVariableBindings); allAreContained(classVariableBindings2Exact, classVariableBindings2); } @Test public void testMethodBinding() { final JavaApproximateVariableBindingExtractor jabe = new JavaApproximateVariableBindingExtractor(); final List<TokenNameBinding> methodVariableBindings = jabe .getNameBindings(methodContent); BindingTester .checkAllBindings(methodVariableBindings); assertEquals(methodVariableBindings.size(), 3); } }