diff --git a/soitool/coder.py b/soitool/coder.py index 5212ce7b756bedf027e6275de9c60f3bf0b4a177..9060c4d1767f0d8907de8130b1f95dca596f2acf 100644 --- a/soitool/coder.py +++ b/soitool/coder.py @@ -26,12 +26,14 @@ def get_code(code_length, mode="ascii"): code = "" i = 0 - characters = string.ascii_uppercase - - if mode == "digits": + if mode == "ascii": + characters = string.ascii_uppercase + elif mode == "digits": characters = string.digits elif mode == "combo": characters = string.ascii_uppercase + string.digits + else: + raise ValueError("Invalid value for argument 'mode'") while i < code_length: letter = secrets.choice(characters) @@ -71,8 +73,7 @@ def get_code_set(count, code_length, mode="ascii"): def get_code_length_needed(number_of_entries): """ - Get code length needed to support one - unique code for each entry. + Get code length needed to support one unique code for each entry. Parameters ---------- diff --git a/soitool/database.py b/soitool/database.py index 32731e82222adaf0d75ba528907224c27b11ed68..dcd2bf54bebaf60b8ef2194bef7e8cbc27fb4cef 100644 --- a/soitool/database.py +++ b/soitool/database.py @@ -72,7 +72,7 @@ class Database: file.close() # Generate codes - code_len = soitool.coder.get_code_length(len(entries)) + code_len = soitool.coder.get_code_length_needed(len(entries)) codes = soitool.coder.get_code_set(len(entries), code_len) # Insert data in db @@ -180,7 +180,7 @@ class Database: # Get number of entries number_of_entries = len(words) # Generate new codes - code_len = soitool.coder.get_code_length(number_of_entries) + code_len = soitool.coder.get_code_length_needed(number_of_entries) codes = soitool.coder.get_code_set(number_of_entries, code_len) # Statement for update stmt = "UPDATE CodeBook SET Code = ?" @@ -214,9 +214,11 @@ class Database: if number_of_entries < 2: actual_code_len = len(self.conn.execute(stmt).fetchall()[1][0]) else: - actual_code_len = soitool.coder.get_code_length(0) + actual_code_len = soitool.coder.get_code_length_needed(0) - needed_code_len = soitool.coder.get_code_length(number_of_entries) + needed_code_len = soitool.coder.get_code_length_needed( + number_of_entries + ) if actual_code_len < needed_code_len: self.update_codebook() diff --git a/test/test_coder.py b/test/test_coder.py index eca8a15d8627ae56946d9bf790df2cfbd190b937..d51e3575286a88442b5d996366c540ceb4f69872 100644 --- a/test/test_coder.py +++ b/test/test_coder.py @@ -44,9 +44,13 @@ class CoderTest(unittest.TestCase): def test_get_code_length(self): """Test return correct codelenght.""" - self.assertEqual(self.LEN, coder.get_code_length(0)) - self.assertEqual(self.LEN, coder.get_code_length(self.COMBINATIONS)) - self.assertEqual(3, coder.get_code_length(self.COMBINATIONS + 1)) + self.assertEqual(self.LEN, coder.get_code_length_needed(0)) + self.assertEqual( + self.LEN, coder.get_code_length_needed(self.COMBINATIONS) + ) + self.assertEqual( + 3, coder.get_code_length_needed(self.COMBINATIONS + 1) + ) if __name__ == "__main__": diff --git a/test/test_database.py b/test/test_database.py index dbd64c52e8ac2a07688f86663448165a09b10e35..842dc9a48136412028ed5fccbf4dadb25e422cd7 100644 --- a/test/test_database.py +++ b/test/test_database.py @@ -4,7 +4,7 @@ from pathlib import Path import unittest import json from soitool.database import Database -from soitool.coder import get_code_length +from soitool.coder import get_code_length_needed TESTDATA_PATH = Path(__file__).parent.parent / "soitool/testdata" @@ -96,7 +96,7 @@ class DatabaseTest(unittest.TestCase): self.assertEqual(len(expected), len(actual)) # Get expected length of codes - code_len = get_code_length(len(expected)) + code_len = get_code_length_needed(len(expected)) # Check equality for i, entry in enumerate(expected): @@ -138,7 +138,7 @@ class DatabaseTest(unittest.TestCase): # Compare lenth self.assertEqual(len(expected), len(actual)) # Get expected length of codes - code_len = get_code_length(len(expected)) + code_len = get_code_length_needed(len(expected)) # Compare contents for i, entry in enumerate(expected): self.assertEqual(entry["word"], actual[i]["word"]) @@ -163,7 +163,7 @@ class DatabaseTest(unittest.TestCase): # Compare lenght self.assertEqual(len(expected), len(actual)) # Get expected length of codes - code_len = get_code_length(len(expected)) + code_len = get_code_length_needed(len(expected)) # Compare contents for i, entry in enumerate(expected): self.assertEqual(entry["word"], actual[i]["word"]) @@ -217,7 +217,7 @@ class DatabaseTest(unittest.TestCase): code_len = len( self.database.conn.execute(stmt_code).fetchall()[0][0] ) - self.assertEqual(code_len, get_code_length(numb_of_entries)) + self.assertEqual(code_len, get_code_length_needed(numb_of_entries)) else: print("ERROR: Database is not 675 entries long, cant run test")