from duptective import * import unittest class TestIt(unittest.TestCase): def test_compressedSize(self): self.assertEquals(30, compressedSize("foo\nbar\nbaz\n")) self.assertEquals(43, compressedSize("foo\nbar\nbaz\n"*120)) def test_infoInChunks(self): c = ["a", "b", "c"] self.assertEquals(compressedSize("abc"), infoInChunks(c, -1)) self.assertEquals(compressedSize("bc"), infoInChunks(c, 0)) c2 = ["foobarbaz", "b", "c"] self.assertEquals(compressedSize("bc"), infoInChunks(c2, 0)) self.assertEquals(compressedSize("foobarbazc"), infoInChunks(c2, 1)) def test_addInfoToChunks(self): chunks = self.codeChunks tot = addInfoToChunks(chunks) self.assertEquals((239, ['Chunk(0, 131, 63, 239)', 'Chunk(1, 164, 3, 239)', 'Chunk(2, 165, 5, 239)', 'Chunk(3, 144, 30, 239)']), (239, [c.__repr__() for c in chunks])) codeChunksTexts = [ """\ def compressedSize(s): mi, mo = popen2.popen2("gzip | wc -c") mo.write(s) mo.close() return int(mi.read().strip()) """, """\ def infoInChunks(chunks, omitNum): s = '' for i in xrange(0, len(chunks)): if i != omitNum: s += chunks[i] return compressedSize(s) """, """\ def infoInChunks1(chunks, omitNum): s = '' for i in xrange(0, len(chunks)): if i != omitNum: s += chunks[i] return compressedSize(s) """, """\ def infoInChunks2(a, b): c = '' for d in xrange(0, len(a)): if d != omitNum: c += a[d] return compressedSize(c) """] codeChunks = [Chunk(t, 0, 0, None) for t in codeChunksTexts] def foo(self, exp, act): for i in range(len(exp)): if exp[i] != act[i]: print "%d: '%s' != '%s'" % (i, exp[i], act[i]) def test_parseChunks(self): r = Report() exp = self.codeChunksTexts chunks = r.parseChunks("".join(self.codeChunksTexts)) act = [c.getText() for c in chunks] self.assertEquals(exp, act) act = [c.getRange() for c in chunks] self.assertEquals([(0, 5, None), (5, 11, None), (11, 17, None), (17, 23, None)], act) def test_parseFile(self): r = Report() ch = r.parseFile("georgeTurtles.py") boundaries = [c.end for c in ch] self.assertEquals([3, 8, 11, 17, 23, 26, 29, 35, 43, 49, 55, 63, 65, 69, 71, 72, 73, 74, 75, 76, 78, 82, 96, 104, 105, 112, 114, 130, 134, 137, 141, 145, 148, 150], boundaries) #print "--------------------" #for c in ch: # print c, "--------------------" def test_report(self): r = Report(0,5) ##r.reportFile("georgeTurtles.py") ## add asserts r.reportFiles(["findchanges.py", "georgeTurtles.py"]) pass def test_reportChunks(self): pass def test_firstSignalStrengthAbove(self): pass class TestInterface(unittest.TestCase): def test_parseArgs(self): i = Interface() self.assertEquals((10, 0, []), i.parseArgs([])) self.assertEquals((10, 0, ["foo.py"]), i.parseArgs(["foo.py"])) self.assertEquals((10, 0, ["foo.py", "bar.py"]), i.parseArgs(["foo.py", "bar.py"])) self.assertEquals((5, 0, ["foo.py", "bar.py"]), i.parseArgs(["-5", "foo.py", "bar.py"])) self.assertEquals((5, 0, ["foo.py", "bar.py"]), i.parseArgs(["foo.py", "bar.py", "-5"])) self.assertEquals((0, 20, ["foo.py", "bar.py"]), i.parseArgs(["-20%", "foo.py", "bar.py"])) self.assertEquals((0, 20, ["foo.py", "bar.py"]), i.parseArgs(["-5", "foo.py", "bar.py", "-20%"])) self.assertEquals((5, 0, ["foo.py", "bar.py"]), i.parseArgs(["-20%", "foo.py", "bar.py", "-5"])) self.assertEquals((0, 0, ["foo.py", "bar.py"]), i.parseArgs(["-all", "foo.py", "bar.py"])) self.assertEquals((0, 0, ["foo.py", "bar.py"]), i.parseArgs(["-20%", "foo.py", "bar.py", "-all"])) self.assertEquals((0, 0, ["foo.py", "bar.py"]), i.parseArgs(["-5", "foo.py", "bar.py", "-all"])) if __name__ == '__main__': unittest.main()