def test_dictionary_guesses(self): # Case match = { "token": "aaaaa", "rank": 32 } msg = "base guesses == the rank" self.assertEqual(scoring.dictionary_guesses(match), 32, msg) # Case match = { "token": "AAAaaa", "rank": 32 } msg = "extra guesses are added for capitalization" self.assertEqual(scoring.dictionary_guesses(match), 32 * scoring.uppercase_variations(match), msg) # Case match = { "token": "aaa", "rank": 32, "reversed": True } msg = "guesses are doubled when word is reversed" self.assertEqual(scoring.dictionary_guesses(match), 32 * 2, msg) # Case match = { "token": 'aaa@@@', "rank": 32, "l33t": True, "sub": {'@': 'a'} } msg = "extra guesses are added for common l33t substitutions" self.assertEqual(scoring.dictionary_guesses(match), 32 * scoring.l33t_variations(match), msg) # Case match = { "token": 'AaA@@@', "rank": 32, "l33t": True, "sub": {'@': 'a'} } msg = "extra guesses are added for both capitalization and common l33t substitutions" expected = 32 * scoring.l33t_variations(match) * scoring.uppercase_variations(match) self.assertEqual(scoring.dictionary_guesses(match), expected, msg)
def test_uppercase_variations(self): # Case pattern_list = [['', 1], ['a', 1], ['A', 2], ['abcdef', 1], ['Abcdef', 2], ['abcdeF', 2], ['ABCDEF', 2], ['aBcdef', binom(6, 1)], ['aBcDef', binom(6, 1) + binom(6, 2)], ['ABCDEf', binom(6, 1)], ['aBCDEf', binom(6, 1) + binom(6, 2)], ['ABCdef', binom(6, 1) + binom(6, 2) + binom(6, 3)]] for word, variants in pattern_list: msg = "guess multiplier of {} is {}".format(word, variants) self.assertEqual(scoring.uppercase_variations({"token": word}), variants, msg)
def test_uppercase_variations(self): # Case pattern_list = [ ['', 1], ['a', 1], ['A', 2], ['abcdef', 1], ['Abcdef', 2], ['abcdeF', 2], ['ABCDEF', 2], ['aBcdef', binom(6, 1)], ['aBcDef', binom(6, 1) + binom(6, 2)], ['ABCDEf', binom(6, 1)], ['aBCDEf', binom(6, 1) + binom(6, 2)], ['ABCdef', binom(6, 1) + binom(6, 2) + binom(6, 3)] ] for word, variants in pattern_list: msg = "guess multiplier of {} is {}".format(word, variants) self.assertEqual(scoring.uppercase_variations({"token": word}), variants, msg)