improvements to test_random_delimiter
authorSteven Tobin <redacted>
Mon, 20 Nov 2023 23:03:46 +0000 (23:03 +0000)
committerSteven Tobin <redacted>
Mon, 20 Nov 2023 23:03:46 +0000 (23:03 +0000)
check both expected string length and expected number of delimiters

tests/test_xkcdpass.py

index 826f2c46bfca3640edb4ee4a37e4eafd03325d5a..505bc42de48e084931131d00e691215594aad6dd 100644 (file)
@@ -49,10 +49,21 @@ class XkcdPasswordTests(unittest.TestCase):
         self.assertIsNotNone(re.match('([a-z]+(_|$))+', result))
 
     def test_random_delimiter(self):
-        wordlist = xkcd_password.generate_wordlist(WORDFILE, min_length=3, max_length=3)
-        result = xkcd_password.generate_xkcdpassword(wordlist, numwords=3, random_delimiters=True)
-        # result can be length 9, 10, or 11 depending on which random delimiters are chose
-        self.assertTrue(len(result) in {9, 10, 11})
+        wordlength = 4
+        numwords = 3
+        wordlist = xkcd_password.generate_wordlist(
+            WORDFILE, min_length=wordlength, max_length=wordlength
+        )
+        result = xkcd_password.generate_xkcdpassword(
+            wordlist, numwords=numwords, random_delimiters=True
+        )
+        # check that the result is the right length
+        self.assertEquals(len(result), numwords * wordlength + (numwords - 1))
+        # check we have the right number of delimiters
+        self.assertEqual(
+            len([x for x in result if x in set(xkcd_password.DEFAULT_DELIMITERS)]),
+            numwords - 1
+        )
 
     def test_set_case(self):
         words = "this is only a GREAT Test".lower().split()
git clone https://git.99rst.org/PROJECT