Skip to content
Snippets Groups Projects
Commit 3f0137f8 authored by morkolai's avatar morkolai
Browse files

#29 Fikset de siste unresolved threads

parent 377754d9
No related branches found
No related tags found
1 merge request!15Kodebok-koder
Pipeline #73820 passed
...@@ -26,12 +26,14 @@ def get_code(code_length, mode="ascii"): ...@@ -26,12 +26,14 @@ def get_code(code_length, mode="ascii"):
code = "" code = ""
i = 0 i = 0
characters = string.ascii_uppercase if mode == "ascii":
characters = string.ascii_uppercase
if mode == "digits": elif mode == "digits":
characters = string.digits characters = string.digits
elif mode == "combo": elif mode == "combo":
characters = string.ascii_uppercase + string.digits characters = string.ascii_uppercase + string.digits
else:
raise ValueError("Invalid value for argument 'mode'")
while i < code_length: while i < code_length:
letter = secrets.choice(characters) letter = secrets.choice(characters)
...@@ -71,8 +73,7 @@ def get_code_set(count, code_length, mode="ascii"): ...@@ -71,8 +73,7 @@ def get_code_set(count, code_length, mode="ascii"):
def get_code_length_needed(number_of_entries): def get_code_length_needed(number_of_entries):
""" """
Get code length needed to support one Get code length needed to support one unique code for each entry.
unique code for each entry.
Parameters Parameters
---------- ----------
......
...@@ -72,7 +72,7 @@ class Database: ...@@ -72,7 +72,7 @@ class Database:
file.close() file.close()
# Generate codes # 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) codes = soitool.coder.get_code_set(len(entries), code_len)
# Insert data in db # Insert data in db
...@@ -180,7 +180,7 @@ class Database: ...@@ -180,7 +180,7 @@ class Database:
# Get number of entries # Get number of entries
number_of_entries = len(words) number_of_entries = len(words)
# Generate new codes # 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) codes = soitool.coder.get_code_set(number_of_entries, code_len)
# Statement for update # Statement for update
stmt = "UPDATE CodeBook SET Code = ?" stmt = "UPDATE CodeBook SET Code = ?"
...@@ -214,9 +214,11 @@ class Database: ...@@ -214,9 +214,11 @@ class Database:
if number_of_entries < 2: if number_of_entries < 2:
actual_code_len = len(self.conn.execute(stmt).fetchall()[1][0]) actual_code_len = len(self.conn.execute(stmt).fetchall()[1][0])
else: 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: if actual_code_len < needed_code_len:
self.update_codebook() self.update_codebook()
......
...@@ -44,9 +44,13 @@ class CoderTest(unittest.TestCase): ...@@ -44,9 +44,13 @@ class CoderTest(unittest.TestCase):
def test_get_code_length(self): def test_get_code_length(self):
"""Test return correct codelenght.""" """Test return correct codelenght."""
self.assertEqual(self.LEN, coder.get_code_length(0)) self.assertEqual(self.LEN, coder.get_code_length_needed(0))
self.assertEqual(self.LEN, coder.get_code_length(self.COMBINATIONS)) self.assertEqual(
self.assertEqual(3, coder.get_code_length(self.COMBINATIONS + 1)) self.LEN, coder.get_code_length_needed(self.COMBINATIONS)
)
self.assertEqual(
3, coder.get_code_length_needed(self.COMBINATIONS + 1)
)
if __name__ == "__main__": if __name__ == "__main__":
......
...@@ -4,7 +4,7 @@ from pathlib import Path ...@@ -4,7 +4,7 @@ from pathlib import Path
import unittest import unittest
import json import json
from soitool.database import Database 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" TESTDATA_PATH = Path(__file__).parent.parent / "soitool/testdata"
...@@ -96,7 +96,7 @@ class DatabaseTest(unittest.TestCase): ...@@ -96,7 +96,7 @@ class DatabaseTest(unittest.TestCase):
self.assertEqual(len(expected), len(actual)) self.assertEqual(len(expected), len(actual))
# Get expected length of codes # Get expected length of codes
code_len = get_code_length(len(expected)) code_len = get_code_length_needed(len(expected))
# Check equality # Check equality
for i, entry in enumerate(expected): for i, entry in enumerate(expected):
...@@ -138,7 +138,7 @@ class DatabaseTest(unittest.TestCase): ...@@ -138,7 +138,7 @@ class DatabaseTest(unittest.TestCase):
# Compare lenth # Compare lenth
self.assertEqual(len(expected), len(actual)) self.assertEqual(len(expected), len(actual))
# Get expected length of codes # Get expected length of codes
code_len = get_code_length(len(expected)) code_len = get_code_length_needed(len(expected))
# Compare contents # Compare contents
for i, entry in enumerate(expected): for i, entry in enumerate(expected):
self.assertEqual(entry["word"], actual[i]["word"]) self.assertEqual(entry["word"], actual[i]["word"])
...@@ -163,7 +163,7 @@ class DatabaseTest(unittest.TestCase): ...@@ -163,7 +163,7 @@ class DatabaseTest(unittest.TestCase):
# Compare lenght # Compare lenght
self.assertEqual(len(expected), len(actual)) self.assertEqual(len(expected), len(actual))
# Get expected length of codes # Get expected length of codes
code_len = get_code_length(len(expected)) code_len = get_code_length_needed(len(expected))
# Compare contents # Compare contents
for i, entry in enumerate(expected): for i, entry in enumerate(expected):
self.assertEqual(entry["word"], actual[i]["word"]) self.assertEqual(entry["word"], actual[i]["word"])
...@@ -217,7 +217,7 @@ class DatabaseTest(unittest.TestCase): ...@@ -217,7 +217,7 @@ class DatabaseTest(unittest.TestCase):
code_len = len( code_len = len(
self.database.conn.execute(stmt_code).fetchall()[0][0] 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: else:
print("ERROR: Database is not 675 entries long, cant run test") print("ERROR: Database is not 675 entries long, cant run test")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment