Add did you mean tests for settings.

- Checks varying degrees of typos until the edit distance becomes to large.
- Also updated did you mean to always uppercase it's input so we catch caps
  errors.
This commit is contained in:
Thomas Adamcik 2012-09-01 12:28:32 +02:00
parent 1f8289a256
commit e4d425d37a
2 changed files with 25 additions and 0 deletions

View File

@ -202,6 +202,7 @@ def did_you_mean(setting, defaults):
if not defaults:
return None
setting = setting.upper()
candidates = [(levenshtein(setting, d), d) for d in defaults]
candidates.sort()

View File

@ -217,3 +217,27 @@ class FormatSettingListTest(unittest.TestCase):
self.assert_("""FRONTEND:
(u'mopidy.frontends.mpd.MpdFrontend',
u'mopidy.frontends.lastfm.LastfmFrontend')""" in result, result)
class DidYouMeanTest(unittest.TestCase):
def testSuggestoins(self):
defaults = {
'MPD_SERVER_HOSTNAME': '::',
'MPD_SERVER_PORT': 6600,
'SPOTIFY_BITRATE': 160,
}
suggestion = setting_utils.did_you_mean('spotify_bitrate', defaults)
self.assertEqual(suggestion, 'SPOTIFY_BITRATE')
suggestion = setting_utils.did_you_mean('SPOTIFY_BITROTE', defaults)
self.assertEqual(suggestion, 'SPOTIFY_BITRATE')
suggestion = setting_utils.did_you_mean('SPITIFY_BITROT', defaults)
self.assertEqual(suggestion, 'SPOTIFY_BITRATE')
suggestion = setting_utils.did_you_mean('SPTIFY_BITROT', defaults)
self.assertEqual(suggestion, 'SPOTIFY_BITRATE')
suggestion = setting_utils.did_you_mean('SPTIFY_BITRO', defaults)
self.assertEqual(suggestion, None)