2014-04-07 22:32:31 -03:00
|
|
|
import unittest
|
|
|
|
|
|
2014-09-27 11:24:48 +02:00
|
|
|
import hamming
|
2014-06-11 15:06:22 +02:00
|
|
|
|
2014-04-07 22:32:31 -03:00
|
|
|
|
2014-09-27 11:24:48 +02:00
|
|
|
class HammingTest(unittest.TestCase):
|
2014-04-07 22:32:31 -03:00
|
|
|
|
2016-11-24 14:42:42 +01:00
|
|
|
def test_identical_strands(self):
|
|
|
|
|
self.assertEqual(0, hamming.distance("A", "A"))
|
2014-04-07 22:32:31 -03:00
|
|
|
|
2016-11-24 14:42:42 +01:00
|
|
|
def test_long_identical_strands(self):
|
|
|
|
|
self.assertEqual(0, hamming.distance("GGACTGA", "GGACTGA"))
|
2014-04-07 22:32:31 -03:00
|
|
|
|
2016-11-24 14:42:42 +01:00
|
|
|
def test_complete_distance_in_single_nucleotide_strands(self):
|
|
|
|
|
self.assertEqual(1, hamming.distance("A", "G"))
|
2014-04-07 22:32:31 -03:00
|
|
|
|
2016-11-24 14:42:42 +01:00
|
|
|
def test_complete_distance_in_small_strands(self):
|
|
|
|
|
self.assertEqual(2, hamming.distance("AG", "CT"))
|
2014-04-07 22:32:31 -03:00
|
|
|
|
2016-11-24 14:42:42 +01:00
|
|
|
def test_small_distance_in_small_strands(self):
|
|
|
|
|
self.assertEqual(1, hamming.distance("AT", "CT"))
|
2014-04-07 22:32:31 -03:00
|
|
|
|
2016-11-24 14:42:42 +01:00
|
|
|
def test_small_distance(self):
|
|
|
|
|
self.assertEqual(1, hamming.distance("GGACG", "GGTCG"))
|
2014-04-07 22:32:31 -03:00
|
|
|
|
2016-11-24 14:42:42 +01:00
|
|
|
def test_small_distance_in_long_strands(self):
|
|
|
|
|
self.assertEqual(2, hamming.distance("ACCAGGG", "ACTATGG"))
|
|
|
|
|
|
|
|
|
|
def test_non_unique_character_in_first_strand(self):
|
|
|
|
|
self.assertEqual(1, hamming.distance("AGA", "AGG"))
|
|
|
|
|
|
|
|
|
|
def test_non_unique_character_in_second_strand(self):
|
|
|
|
|
self.assertEqual(1, hamming.distance("AGG", "AGA"))
|
|
|
|
|
|
|
|
|
|
def test_same_nucleotides_in_different_positions(self):
|
|
|
|
|
self.assertEqual(2, hamming.distance("TAG", "GAT"))
|
|
|
|
|
|
|
|
|
|
def test_large_distance(self):
|
|
|
|
|
self.assertEqual(4, hamming.distance("GATACA", "GCATAA"))
|
|
|
|
|
|
|
|
|
|
def test_large_distance_in_off_by_one_strand(self):
|
|
|
|
|
self.assertEqual(9, hamming.distance("GGACGGATTCTG", "AGGACGGATTCT"))
|
|
|
|
|
|
|
|
|
|
def test_empty_strands(self):
|
|
|
|
|
self.assertEqual(0, hamming.distance("", ""))
|
|
|
|
|
|
|
|
|
|
def test_disallow_first_strand_longer(self):
|
|
|
|
|
with self.assertRaises(ValueError):
|
|
|
|
|
hamming.distance("AATG", "AAA")
|
|
|
|
|
|
|
|
|
|
def test_disallow_second_strand_longer(self):
|
|
|
|
|
with self.assertRaises(ValueError):
|
|
|
|
|
hamming.distance("ATA", "AGTG")
|
2014-04-07 22:32:31 -03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
unittest.main()
|