/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package net.sourceforge.pmd.cpd; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.Iterator; import org.junit.Test; public class MatchTest { @Test public void testSimple() { int lineCount1 = 10; String codeFragment1 = "code fragment"; Mark mark1 = createMark("public", "/var/Foo.java", 1, lineCount1, codeFragment1); int lineCount2 = 20; String codeFragment2 = "code fragment 2"; Mark mark2 = createMark("class", "/var/Foo.java", 1, lineCount2, codeFragment2); Match match = new Match(1, mark1, mark2); assertEquals(1, match.getTokenCount()); // Returns the line count of the first mark assertEquals(lineCount1, match.getLineCount()); // Returns the source code of the first mark assertEquals(codeFragment1, match.getSourceCodeSlice()); Iterator<Mark> i = match.iterator(); Mark occurrence1 = i.next(); Mark occurrence2 = i.next(); assertFalse(i.hasNext()); assertEquals(mark1, occurrence1); assertEquals(lineCount1, occurrence1.getLineCount()); assertEquals(codeFragment1, occurrence1.getSourceCodeSlice()); assertEquals(mark2, occurrence2); assertEquals(lineCount2, occurrence2.getLineCount()); assertEquals(codeFragment2, occurrence2.getSourceCodeSlice()); } @Test public void testCompareTo() { Match m1 = new Match(1, new TokenEntry("public", "/var/Foo.java", 1), new TokenEntry("class", "/var/Foo.java", 1)); Match m2 = new Match(2, new TokenEntry("Foo", "/var/Foo.java", 1), new TokenEntry("{", "/var/Foo.java", 1)); assertTrue(m2.compareTo(m1) < 0); } private Mark createMark(String image, String tokenSrcID, int beginLine, int lineCount, String code) { Mark result = new Mark(new TokenEntry(image, tokenSrcID, beginLine)); result.setLineCount(lineCount); result.setSourceCode(new SourceCode(new SourceCode.StringCodeLoader(code))); return result; } public static junit.framework.Test suite() { return new junit.framework.JUnit4TestAdapter(MatchTest.class); } }