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"):
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
----------
......
......@@ -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()
......
......@@ -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__":
......
......@@ -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")
......
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