def testParseMultiple(self): self.mtd1.addReference(self.inv11) self.mtd1.addReference(self.inv12) self.mtd2.addReference(self.inv21) self.mtd2.addReference(self.inv22) rsf = iostr(self.line11 + self.line12 + self.line21 + self.line22) self.executeParseTest(rsf) # order of input shouldn't matter rsf = iostr(self.line12 + self.line11 + self.line22 + self.line21) self.executeParseTest(rsf) # idem rsf = iostr(self.line21 + self.line22 + self.line11 + self.line12) self.executeParseTest(rsf)
def testCloneInSelf(self): ''' A method where the first half is identical to the second''' self.lines1[3] = 'ComInvoke\t223\t11\t178\t10\tUut.a()\tMyTest.testOne()\tMyTest.java\n' self.lines1[4] = 'ComInvoke\t225\t11\t180\t11\tUut.b()\tMyTest.testOne()\tMyTest.java\n' self.lines1[5] = 'ComInvoke\t227\t11\t182\t13\tUut.c()\tMyTest.testOne()\tMyTest.java\n' self.inv1[3] = Reference(223, 10, 178, "Uut.a()") self.inv1[4] = Reference(225, 11, 180, "Uut.b()") self.inv1[5] = Reference(227, 13, 182, "Uut.c()") self.mtd1.addReferences(Sequence(self.inv1[0:6])) self.mtd2 = self.mtd1 self.rsf = iostr("".join(self.lines1[0:6])) self.executeCloneTest(Sequence(self.inv1[0:3]), Sequence(self.inv1[3:6]))
def testTripleDuplication(self): self.setUpThirdMethod() self.rsf = iostr("".join(self.lines1[0:6]) +\ "".join(self.lines2[0:6]) +\ "".join(self.lines3[0:6])) mtds = self.reader.parse(self.rsf) cf = CloneFinder(4) dupli = cf.investigate(mtds) dupli = cf.squashCombinations(dupli) self.assertTrue(self.inv1.refStr == self.inv2.refStr == self.inv3.refStr) refStr = self.inv1.refStr self.assertEquals(1, len(dupli)) self.assertTrue(refStr in dupli) self.assertTrue((self.mtd1, self.inv1.start, self.inv1.end) in dupli[refStr]) self.assertTrue((self.mtd2, self.inv2.start, self.inv2.end) in dupli[refStr]) self.assertTrue((self.mtd3, self.inv3.start, self.inv3.end) in dupli[refStr])
def initMthds(self, start1, end1, start2, end2): self.mtd1.addReferences(Sequence(self.inv1[start1:end1])) self.mtd2.addReferences(Sequence(self.inv2[start2:end2])) self.rsf = iostr("".join(self.lines1[start1:end1]) + \ "".join(self.lines2[start2:end2]))
def testParse(self): rsf = iostr(self.line11 + self.line21) self.mtd1.addReference(self.inv11) self.mtd2.addReference(self.inv21) self.executeParseTest(rsf)