Mercurial > repos > yufei-luo > s_mart
diff SMART/Java/Python/test/Test_F_getLetterDistribution.py @ 18:94ab73e8a190
Uploaded
author | m-zytnicki |
---|---|
date | Mon, 29 Apr 2013 03:20:15 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SMART/Java/Python/test/Test_F_getLetterDistribution.py Mon Apr 29 03:20:15 2013 -0400 @@ -0,0 +1,118 @@ +import os +import sys +import unittest +from SMART.Java.Python.test.MockGetLetterDistribution import MockGetLetterDistributionFasta +from SMART.Java.Python.test.MockGetLetterDistribution import MockGetLetterDistributionFastq +from SMART.Java.Python.test.MockGetLetterDistribution import MockGetLetterDistributionExpectedCSV + +class Test_F_getLetterDistribution(unittest.TestCase): + + def tearDown(self): + os.system("rm tmp*.*") + + def test_getLetterDistributionWithFasta(self): + iFastaMock = MockGetLetterDistributionFasta() + fastaFileName = "MockFasta_GetLetterDistribution.fa" + iFastaMock.write(fastaFileName) + + outputName = "dummy_result_fasta" + os.system("python %s/SMART/Java/Python/getLetterDistribution.py -i %s -f fasta -o %s" % (os.environ["REPET_PATH"], fastaFileName, outputName)) + + self.assertTrue (os.path.exists(outputName + ".png")) + self.assertTrue (os.path.exists(outputName + "PerNt.png")) + + os.remove(outputName + ".png") + os.remove(outputName + "PerNt.png") + os.remove(fastaFileName) + + def test_getLetterDistributionWithFastq(self): + iFastqMock = MockGetLetterDistributionFastq() + fastqFileName = "MockFastq_GetLetterDistribution.fastq" + iFastqMock.write(fastqFileName) + + outputName = "dummy_result_fastq" + os.system("python %s/SMART/Java/Python/getLetterDistribution.py -i %s -f fastq -o %s" % (os.environ["REPET_PATH"], fastqFileName, outputName)) + + self.assertTrue (os.path.exists(outputName + ".png")) + self.assertTrue (os.path.exists(outputName + "PerNt.png")) + + os.remove(fastqFileName) + os.remove(outputName + ".png") + os.remove(outputName + "PerNt.png") + + def test_getLetterDistributionWithFastaCSVOutput(self): + iFastaMock = MockGetLetterDistributionFasta() + fastaFileName = "MockFasta_GetLetterDistribution.fa" + iFastaMock.write(fastaFileName) + + iCSVMock = MockGetLetterDistributionExpectedCSV() + expCSVFileName = "expCSV.csv" + iCSVMock.write(expCSVFileName) + + outputName = "dummy_result_fasta" + os.system("python %s/SMART/Java/Python/getLetterDistribution.py -i %s -f fasta -o %s -c" % (os.environ["REPET_PATH"], fastaFileName, outputName)) + + obsCSVFileName = outputName + ".csv" + + self.assertTrue (os.path.exists(outputName + ".png")) + self.assertTrue (os.path.exists(outputName + "PerNt.png")) + self.assertTrue (self._are2FilesIdentical(expCSVFileName, obsCSVFileName)) + + os.remove(outputName + ".png") + os.remove(outputName + "PerNt.png") + os.remove(fastaFileName) + os.remove(expCSVFileName) + os.remove(obsCSVFileName) + + def test_getLetterDistributionWithFastqCVSOutput(self): + iFastqMock = MockGetLetterDistributionFastq() + fastqFileName = "MockFastq_GetLetterDistribution.fastq" + iFastqMock.write(fastqFileName) + + iCSVMock = MockGetLetterDistributionExpectedCSV() + expCSVFileName = "expCSV.csv" + iCSVMock.write(expCSVFileName) + + outputName = "dummy_result_fastq" + os.system("python %s/SMART/Java/Python/getLetterDistribution.py -i %s -f fastq -o %s -c" % (os.environ["REPET_PATH"], fastqFileName, outputName)) + + obsCSVFileName = outputName + ".csv" + + self.assertTrue (os.path.exists(outputName + ".png")) + self.assertTrue (os.path.exists(outputName + "PerNt.png")) + self.assertTrue (self._are2FilesIdentical(expCSVFileName, obsCSVFileName)) + + os.remove(fastqFileName) + os.remove(outputName + ".png") + os.remove(outputName + "PerNt.png") + os.remove(expCSVFileName) + os.remove(obsCSVFileName) + + def _are2FilesIdentical(self, file1, file2 ): + tmpFile = "diff_%s_%s" % ( os.path.basename(file1), os.path.basename(file2) ) + cmd = "diff %s %s >> %s" % ( file1, file2, tmpFile ) + returnStatus = os.system( cmd ) + if returnStatus != 0: + msg = "ERROR: 'diff' returned '%i'" % ( returnStatus ) + sys.stderr.write( "%s\n" % msg ) + sys.stderr.flush() + os.remove( tmpFile ) + return False + if self.isEmpty( tmpFile ): + os.remove( tmpFile ) + return True + else: + os.remove( tmpFile ) + return False + + def getNbLinesInSingleFile(self, fileName): + fileHandler = open(fileName, "r" ) + lines = fileHandler.readlines() + fileHandler.close() + return len(lines) + + def isEmpty(self, fileName): + return 0 == self.getNbLinesInSingleFile( fileName ) + +if __name__ == "__main__": + unittest.main()