def test_create_name_title_case(self): name = dungeonsanddragons.generate_name(3) self.assertEqual(name[0], name[0].upper()) self.assertEqual(name[1], name[1].lower()) self.assertEqual(name[2], name[2].lower()) self.assertEqual(name[3], name[3].lower()) self.assertEqual(name[4], name[4].lower()) self.assertEqual(name[5], name[5].lower())
def test_odds_are_consonants(self): test_name = dungeonsanddragons.generate_name(9) for i in range(0, len(test_name), 2): self.assertIn(test_name[i].lower(), [ 'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z' ])
def test_consonant_and_verb_order(self): name = generate_name(20) verbs = 'aeiouy' consonants = 'bcdfghjklmnpqrstvwxz' for i in range(len(name)): if i % 2 == 1: self.assertIn(name[i], verbs) else: self.assertIn(name[i], consonants)
def test_generate_name_consonant(self): name = generate_name(100).lower() for i in range(len(name)): if i % 2 == 0: self.assertTrue(name[i] in "bcdfghjklmnpqrstvwxyz")
def test_generate_name_capitalized(self): self.assertTrue(generate_name(1)[0].isupper())
def test_generate_name_vowel(self): name = generate_name(100) for i in range(len(name)): if i % 2 == 1: self.assertTrue(name[i] in "aeiouy")
def test_correct_name_length(self): for i in range(20): name = generate_name(i) self.assertTrue(len(name) == (i * 2))
def test_generate_name_alpha(self): dnd_name = dungeonsanddragons.generate_name(3) self.assertTrue(dnd_name.isalpha())
def test_generate_name_title_case(self): syllables = 5 name = generate_name(syllables) self.assertEqual(name, name.title())
def test_generate_name_len(self): syllables = 10 expected = 20 self.assertEqual(expected, len(generate_name(syllables)))
def test_length(self): self.assertEqual(6, len(generate_name(3)))
def test_type(self): self.assertIsInstance(generate_name(3), str)
def test_vowels(self): for i in range(1, len(generate_name(4)), 2): # every odd letter should be a vowel self.assertIn((generate_name(4))[i], 'aeiouy')
def test_consonants(self): for i in range(2, len(generate_name(4)), 2): # every even letter after the first should be a consonant self.assertIn((generate_name(4))[i], 'bcdfghjklmnpqrstvwxyz')
def test_first_capital(self): # first letter should be a capital consonant self.assertIn((generate_name(4))[0], 'BCDFGHJKLMNPQRSTVWXYZ')
def test_generate_name_type(self): self.assertEqual(type(dungeonsanddragons.generate_name(2)), str)
def test_generate_name_length(self): self.assertEqual(len(dungeonsanddragons.generate_name(3)), 6)
def test_generate_name_string(self): self.assertEqual(type(generate_name(1)), str)
def test_evens_are_vowels(self): test_name = dungeonsanddragons.generate_name(9) for i in range(1, len(test_name), 2): self.assertIn(test_name[i], ['a', 'e', 'i', 'o', 'u', 'y'])
def test_generate_name_length_short(self): self.assertEqual(len(generate_name(1)), 2)
def test_create_name_type(self): self.assertIsInstance(dungeonsanddragons.generate_name(4), str)
def test_generate_name_3(self, mock_letter): syllables = 3 expected = "Badehi" self.assertEqual(expected, generate_name(syllables))
def test_wrong_input(self): with self.assertRaises(TypeError): generate_name('ferg')
def test_generate_name_length(self): # each syllable contains 2 characters, # therefore len(generate_name) should always be syllable * 2 self.assertEqual(len(dungeonsanddragons.generate_name(3)), 3 * 2)
def test_generate_name_length_long(self): self.assertEqual(len(generate_name(100)), 200)
def test_create_name_letters(self): name = dungeonsanddragons.generate_name(2) self.assertIn(name[0], string.ascii_letters) self.assertIn(name[1], string.ascii_letters) self.assertIn(name[2], string.ascii_letters) self.assertIn(name[3], string.ascii_letters)
def test_generate_name_random(self): random.seed(2) self.assertEqual(dungeonsanddragons.generate_name(2), "Cadi")
def test_choose_generate_name_with_empty_str(self): with self.assertRaises(TypeError): dungeonsanddragons.generate_name("")
def test_generate_name_correct_length(self): test_name = dungeonsanddragons.generate_name(4) self.assertEqual(len(test_name), 8)