Sha256: 08e40a610980c57358f60446f65991b1ba9a33497de3e76eae82efbe1c163247

Contents?: true

Size: 1.62 KB

Versions: 64

Compression:

Stored size: 1.62 KB

Contents

"""Tests for the nucleotide-count exercise

Implementation note:
The count function must raise a ValueError with a meaningful error message
in case of a bad argument.
"""
import unittest

from nucleotide_count import count, nucleotide_counts


class DNATest(unittest.TestCase):
    def test_empty_dna_string_has_no_adenosine(self):
        self.assertEqual(count('', 'A'), 0)

    def test_empty_dna_string_has_no_nucleotides(self):
        expected = {'A': 0, 'T': 0, 'C': 0, 'G': 0}
        self.assertEqual(nucleotide_counts(""), expected)

    def test_repetitive_cytidine_gets_counted(self):
        self.assertEqual(count('CCCCC', 'C'), 5)

    def test_repetitive_sequence_has_only_guanosine(self):
        expected = {'A': 0, 'T': 0, 'C': 0, 'G': 8}
        self.assertEqual(nucleotide_counts('GGGGGGGG'), expected)

    def test_counts_only_thymidine(self):
        self.assertEqual(count('GGGGGTAACCCGG', 'T'), 1)

    def test_validates_nucleotides(self):
        with self.assertRaisesWithMessage(ValueError):
            count("GACT", 'X')

    def test_counts_all_nucleotides(self):
        dna = ('AGCTTTTCATTCTGACTGCAACGGGCAATATGTCT'
               'CTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC')
        expected = {'A': 20, 'T': 21, 'G': 17, 'C': 12}
        self.assertEqual(nucleotide_counts(dna), expected)

    # Utility functions
    def setUp(self):
        try:
            self.assertRaisesRegex
        except AttributeError:
            self.assertRaisesRegex = self.assertRaisesRegexp

    def assertRaisesWithMessage(self, exception):
        return self.assertRaisesRegex(exception, r".+")


if __name__ == '__main__':
    unittest.main()

Version data entries

64 entries across 64 versions & 1 rubygems

Version Path
trackler-2.2.1.160 tracks/python/exercises/nucleotide-count/nucleotide_count_test.py
trackler-2.2.1.159 tracks/python/exercises/nucleotide-count/nucleotide_count_test.py
trackler-2.2.1.158 tracks/python/exercises/nucleotide-count/nucleotide_count_test.py
trackler-2.2.1.157 tracks/python/exercises/nucleotide-count/nucleotide_count_test.py
trackler-2.2.1.156 tracks/python/exercises/nucleotide-count/nucleotide_count_test.py
trackler-2.2.1.155 tracks/python/exercises/nucleotide-count/nucleotide_count_test.py
trackler-2.2.1.154 tracks/python/exercises/nucleotide-count/nucleotide_count_test.py
trackler-2.2.1.153 tracks/python/exercises/nucleotide-count/nucleotide_count_test.py
trackler-2.2.1.152 tracks/python/exercises/nucleotide-count/nucleotide_count_test.py
trackler-2.2.1.151 tracks/python/exercises/nucleotide-count/nucleotide_count_test.py
trackler-2.2.1.150 tracks/python/exercises/nucleotide-count/nucleotide_count_test.py
trackler-2.2.1.149 tracks/python/exercises/nucleotide-count/nucleotide_count_test.py
trackler-2.2.1.148 tracks/python/exercises/nucleotide-count/nucleotide_count_test.py
trackler-2.2.1.147 tracks/python/exercises/nucleotide-count/nucleotide_count_test.py
trackler-2.2.1.146 tracks/python/exercises/nucleotide-count/nucleotide_count_test.py
trackler-2.2.1.145 tracks/python/exercises/nucleotide-count/nucleotide_count_test.py
trackler-2.2.1.144 tracks/python/exercises/nucleotide-count/nucleotide_count_test.py
trackler-2.2.1.143 tracks/python/exercises/nucleotide-count/nucleotide_count_test.py
trackler-2.2.1.142 tracks/python/exercises/nucleotide-count/nucleotide_count_test.py
trackler-2.2.1.141 tracks/python/exercises/nucleotide-count/nucleotide_count_test.py