mirror of
https://codeberg.org/cblanken/boggler.git
synced 2026-07-25 19:19:20 -04:00
Replace unittest with pytest
- Pytest requires test modules to start with the "test_" prefix. The new test_solve_4x4_board.py module replaces the functional_tests.py module
This commit is contained in:
+4
-1
@@ -21,7 +21,7 @@ classifiers = [
|
||||
[tool.poetry]
|
||||
name = "boggler"
|
||||
version = "2.0.1"
|
||||
description = "Utilities for solving the Boggle wod game."
|
||||
description = "Utilities for solving the Boggle word game."
|
||||
authors = ["Cameron Blankenbuehler <cameron.blankenbuehler@protonmail.com>"]
|
||||
readme = "README.md"
|
||||
|
||||
@@ -32,6 +32,9 @@ python = "^3.11"
|
||||
boggler = "boggler.__main__:main"
|
||||
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
pytest = "^7.3.1"
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core"]
|
||||
build-backend = "poetry.core.masonry.api"
|
||||
|
||||
@@ -1,201 +0,0 @@
|
||||
import unittest
|
||||
from functools import reduce
|
||||
from itertools import chain
|
||||
from os import path
|
||||
from boggler.boggler_utils import BoggleBoard, build_full_boggle_tree
|
||||
|
||||
class Solve4x4BoardTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.wordlists_dir = path.abspath("./boggler/wordlists/dwyl/")
|
||||
self.letters = [
|
||||
['u','n','r','e'],
|
||||
['qu','n','i','l'],
|
||||
['i','s','h','a'],
|
||||
['s','e','l','b']
|
||||
]
|
||||
|
||||
self.expected_words_max_4 = [
|
||||
"u", "un", "unn", "uns", "uni", "unie", "uni", "unie", "un", "unn", "uni",
|
||||
"unie", "n", "ni", "nis", "nisi", "nil", "nile", "nu", "nun", "nuns", "nr", "r",
|
||||
"rin", "rie", "riel", "risqu", "rise", "riss", "ria", "rial", "rial", "rin",
|
||||
"rins", "rile", "rn", "rle", "rn", "re", "rel", "rei", "rein", "reis", "rein",
|
||||
"e", "el", "ela", "elhi", "eli", "elia", "eir", "eila", "er", "erin", "eris",
|
||||
"eria", "erin", "ern", "erns", "ern", "qu", "qui", "quin", "quis", "quis", "n",
|
||||
"nu", "nun", "nr", "ns", "ni", "nis", "nies", "nies", "nis", "nisi", "ni",
|
||||
"nis", "nisi", "nil", "nile", "i", "ir", "ire", "in", "inn", "inns", "ie",
|
||||
"ihs", "is", "isn", "ise", "isl", "isle", "isis", "ish", "ia", "in", "inn",
|
||||
"ins", "il", "ile", "ila", "l", "le", "lei", "leis", "ler", "lr", "la", "lai",
|
||||
"lair", "lain", "lain", "lab", "lah", "lh", "lhb", "li", "lir", "lire", "lin",
|
||||
"linn", "lie", "lier", "lis", "lise", "liss", "lish", "lin", "linn", "lins",
|
||||
"i", "in", "inn", "ins", "inia", "is", "ise", "ie", "is", "isn", "ise", "isl",
|
||||
"isle", "ish", "s", "sn", "si", "sir", "sire", "sin", "sie", "sier", "sia",
|
||||
"sial", "sial", "sin", "sinh", "sil", "sile", "se", "sei", "seis", "sel", "ss",
|
||||
"ssi", "sl", "sla", "slab", "si", "sin", "sinh", "sis", "sise", "sie", "sh",
|
||||
"shi", "shin", "shia", "shin", "she", "shes", "shel", "sha", "shai", "shab",
|
||||
"h", "hi", "hir", "hire", "hin", "hie", "his", "hisn", "hiss", "hia", "hin",
|
||||
"hins", "hile", "hila", "hl", "hler", "hl", "he", "hes", "hei", "hein", "hes",
|
||||
"hel", "hb", "hs", "hsi", "hsi", "ha", "hal", "hale", "hair", "hain", "hain",
|
||||
"hail", "hab", "hal", "hals", "hale", "a", "al", "ale", "alin", "alin", "ai",
|
||||
"air", "airn", "airn", "aire", "ain", "ainu", "aiel", "ais", "ain", "ainu",
|
||||
"ains", "ail", "aile", "ab", "abl", "able", "al", "als", "ale", "ales", "ales",
|
||||
"alb", "ah", "ahi", "ahir", "ahs", "s", "si", "sin", "sins", "sinh", "sie",
|
||||
"sis", "sisi", "sise", "sish", "ss", "ssi", "ssi", "se", "sei", "seis", "sel",
|
||||
"sels", "e", "es", "ess", "eh", "es", "ess", "el", "elhi", "els", "ela", "elb",
|
||||
"l", "lh", "lhb", "ls", "la", "lai", "lair", "lain", "lain", "lab", "lah", "le",
|
||||
"les", "less", "lei", "leis", "leis", "lehi", "les", "less", "lb", "b", "ba",
|
||||
"bal", "bale", "balr", "bali", "bai", "bain", "bais", "bain", "bail", "bal",
|
||||
"bals", "bale", "bah", "bhil", "bl", "bls", "blah"
|
||||
]
|
||||
|
||||
self.expected_words_max_8 = [
|
||||
"u", "un", "unn", "unrein", "uns", "unsin", "unslain", "unshale", "unshale",
|
||||
"uni", "unie", "unhale", "unhair", "unhale", "uni", "unie", "un", "unn", "uni",
|
||||
"unie", "unrein", "n", "ni", "nihal", "nihal", "nis", "nisei", "niseis",
|
||||
"nisse", "nisi", "nil", "nile", "nu", "nun", "nuns", "nr", "r", "rin", "rie",
|
||||
"riel", "risqu", "rise", "rises", "riss", "rissel", "ria", "rial", "rial",
|
||||
"rials", "rin", "rins", "rinse", "rinses", "rile", "rn", "rle", "rn", "re",
|
||||
"rel", "relais", "relish", "relishes", "reliable", "rei", "rein", "reis",
|
||||
"rein", "reins", "e", "el", "ela", "elain", "elain", "elains", "elhi", "eli",
|
||||
"elisha", "elia", "eir", "eila", "er", "erin", "eris", "eria", "erin", "ern",
|
||||
"erns", "ernie", "ern", "qu", "qui", "quin", "quins", "quinse", "quinin",
|
||||
"quiniela", "quinia", "quis", "quis", "quisle", "n", "nu", "nun", "nr", "ns",
|
||||
"ni", "nis", "nisse", "nies", "nies", "niels", "nis", "nisi", "nisse", "ni",
|
||||
"nihal", "nihal", "nis", "nisei", "niseis", "nisse", "nisi", "nil", "nile", "i",
|
||||
"ir", "ire", "in", "inn", "inns", "ie", "ihs", "is", "isn", "ise", "issei",
|
||||
"isl", "isle", "isles", "isis", "ish", "ia", "in", "inn", "ins", "inisle",
|
||||
"inhale", "inhaler", "inhale", "inhales", "inhales", "il", "ile", "ila", "l",
|
||||
"le", "lei", "leis", "leiss", "ler", "lr", "la", "lai", "lair", "lain",
|
||||
"laisse", "lain", "lab", "lah", "lh", "lhb", "li", "lir", "lire", "lin", "linn",
|
||||
"linns", "linquish", "lie", "lier", "lis", "lise", "liss", "lisle", "lisles",
|
||||
"lish", "liable", "lin", "linn", "lins", "linie", "linha", "linquish", "i",
|
||||
"in", "inn", "ins", "inhale", "inhaler", "inhale", "inhales", "inhales",
|
||||
"inisle", "inia", "inial", "inial", "is", "ise", "ie", "is", "isn", "ise",
|
||||
"isl", "isle", "isles", "ish", "s", "sn", "snies", "snirl", "squin", "si",
|
||||
"sir", "sire", "sin", "sie", "sier", "sia", "sial", "sial", "sin", "sinh",
|
||||
"sil", "sile", "se", "sei", "seis", "sel", "selah", "ss", "ssi", "sl", "sla",
|
||||
"slain", "slain", "slab", "si", "sin", "sinh", "sis", "sise", "sisel", "sie",
|
||||
"sh", "shi", "shirl", "shire", "shin", "shinnies", "shiel", "shier", "shia",
|
||||
"shin", "she", "shes", "shel", "shela", "sha", "shale", "shalier", "shai",
|
||||
"shairn", "shairn", "shab", "shale", "shales", "h", "hi", "hir", "hire", "hin",
|
||||
"hinnies", "hinnies", "hie", "his", "hisn", "hiss", "hissel", "hisis", "hia",
|
||||
"hin", "hins", "hile", "hila", "hl", "hler", "hl", "he", "hes", "hei", "hein",
|
||||
"heinie", "hes", "hel", "hb", "hs", "hsi", "hsi", "ha", "hal", "hale", "haler",
|
||||
"hair", "haire", "hain", "hain", "hail", "hailer", "hab", "hable", "hal",
|
||||
"hals", "halse", "hale", "hales", "hales", "a", "al", "ale", "alin", "alish",
|
||||
"alin", "ai", "air", "airn", "airns", "airn", "aire", "ain", "ainu", "aiel",
|
||||
"ais", "aisle", "aisles", "ain", "ainu", "ains", "ail", "aile", "ab", "abl",
|
||||
"able", "ables", "ables", "al", "als", "ale", "ales", "ales", "alb", "ah",
|
||||
"ahi", "ahir", "ahs", "s", "si", "sin", "sins", "sinh", "sinhs", "sie", "sis",
|
||||
"sisi", "sise", "sisel", "sish", "ss", "ssi", "ssi", "se", "sesqui", "sesia",
|
||||
"sei", "seis", "seisin", "seisin", "sel", "sels", "selah", "selahs", "e", "es",
|
||||
"ess", "eshin", "eshin", "eh", "es", "ess", "essie", "el", "elhi", "els",
|
||||
"elsin", "elsin", "elsin", "elshin", "elshin", "ela", "elain", "elain",
|
||||
"elains", "elb", "l", "lh", "lhb", "ls", "la", "lai", "lair", "lain", "laisse",
|
||||
"lain", "lab", "lah", "le", "les", "less", "lei", "leis", "leiss", "leis",
|
||||
"leiss", "lehi", "les", "less", "lessn", "lb", "b", "ba", "bal", "bale",
|
||||
"balei", "baleise", "baler", "balr", "bali", "bai", "bairn", "bairns",
|
||||
"bairnie", "bairnish", "bairn", "bain", "bais", "bain", "bainie", "bail",
|
||||
"baile", "bailer", "bal", "bals", "bale", "bales", "balei", "bales", "bah",
|
||||
"bhil", "bl", "bls", "blair", "blain", "blain", "blains", "blah", "blahs",
|
||||
"bless", "bless"
|
||||
]
|
||||
|
||||
self.expected_words_max_17 = [
|
||||
"u", "un", "unn", "unrelinquishable", "unrelishable", "unreliable", "unrein",
|
||||
"uns", "unsin", "unslain", "unshale", "unshale", "uni", "unie", "unhale",
|
||||
"unhair", "unhale", "uni", "unie", "un", "unn", "uni", "unie", "unrelishable",
|
||||
"unreliable", "unrelinquishable", "unrein", "n", "ni", "nihal", "nihal", "nis",
|
||||
"nisei", "niseis", "nisse", "nisi", "nil", "nile", "nu", "nun", "nuns", "nr",
|
||||
"r", "rin", "rie", "riel", "risqu", "rise", "rises", "riss", "rissel", "ria",
|
||||
"rial", "rial", "rials", "rin", "rins", "rinse", "rinses", "rile", "rn", "rle",
|
||||
"rn", "re", "rel", "relais", "relinquish", "relinquishes", "relish", "relishes",
|
||||
"relishable", "reliable", "relinquish", "relinquishes", "rei", "rein", "reis",
|
||||
"rein", "reins", "e", "el", "ela", "elain", "elain", "elains", "elhi", "eli",
|
||||
"elisha", "elia", "eir", "eila", "er", "erin", "eris", "eria", "erin", "ern",
|
||||
"erns", "ernie", "ern", "qu", "qui", "quin", "quins", "quinse", "quinin",
|
||||
"quiniela", "quinia", "quis", "quis", "quisle", "n", "nu", "nun", "nr", "ns",
|
||||
"ni", "nis", "nisse", "nies", "nies", "niels", "nis", "nisi", "nisse", "ni",
|
||||
"nihal", "nihal", "nis", "nisei", "niseis", "nisse", "nisi", "nil", "nile", "i",
|
||||
"ir", "ire", "in", "inn", "inns", "ie", "ihs", "is", "isn", "ise", "issei",
|
||||
"isl", "isle", "isles", "isis", "ish", "ia", "in", "inn", "ins", "inisle",
|
||||
"inhale", "inhaler", "inhale", "inhales", "inhales", "il", "ile", "ila", "l",
|
||||
"le", "lei", "leis", "leiss", "ler", "lr", "la", "lai", "lair", "lain",
|
||||
"laisse", "lain", "lab", "lah", "lh", "lhb", "li", "lir", "lire", "lin", "linn",
|
||||
"linns", "linquish", "lie", "lier", "lis", "lise", "liss", "lisle", "lisles",
|
||||
"lish", "liable", "lin", "linn", "lins", "linie", "linha", "linquish", "i",
|
||||
"in", "inn", "ins", "inhale", "inhaler", "inhale", "inhales", "inhales",
|
||||
"inisle", "inia", "inial", "inial", "is", "ise", "ie", "is", "isn", "ise",
|
||||
"isl", "isle", "isles", "ish", "s", "sn", "snies", "snirl", "squin",
|
||||
"squinnier", "si", "sir", "sire", "sin", "sie", "sier", "sia", "sial", "sial",
|
||||
"sin", "sinh", "sil", "sile", "se", "sei", "seis", "sel", "selah", "ss", "ssi",
|
||||
"sl", "sla", "slain", "slain", "slab", "si", "sin", "sinh", "sis", "sise",
|
||||
"sisel", "sie", "sh", "shi", "shirl", "shire", "shin", "shinnies", "shiel",
|
||||
"shier", "shia", "shin", "she", "shes", "shel", "shela", "sha", "shale",
|
||||
"shalier", "shai", "shairn", "shairn", "shab", "shale", "shales", "h", "hi",
|
||||
"hir", "hire", "hin", "hinnies", "hinnies", "hie", "his", "hisn", "hiss",
|
||||
"hissel", "hisis", "hia", "hin", "hins", "hile", "hila", "hl", "hler", "hl",
|
||||
"he", "hes", "hei", "hein", "heinie", "hes", "hel", "hb", "hs", "hsi", "hsi",
|
||||
"ha", "hal", "hale", "haler", "hair", "haire", "hain", "hain", "hail", "hailer",
|
||||
"hab", "hable", "hal", "hals", "halse", "hale", "hales", "hales", "a", "al",
|
||||
"ale", "alin", "alish", "alin", "ai", "air", "airn", "airns", "airn", "aire",
|
||||
"ain", "ainu", "aiel", "ais", "aisle", "aisles", "ain", "ainu", "ains", "ail",
|
||||
"aile", "ab", "abl", "able", "ables", "ables", "al", "als", "ale", "ales",
|
||||
"ales", "alb", "ah", "ahi", "ahir", "ahs", "s", "si", "sin", "sins", "sinh",
|
||||
"sinhs", "sie", "sis", "sisi", "sise", "sisel", "sish", "ss", "ssi", "ssi",
|
||||
"se", "sesqui", "sesia", "sei", "seis", "seisin", "seisin", "sel", "sels",
|
||||
"selah", "selahs", "e", "es", "ess", "eshin", "eshin", "eh", "es", "ess",
|
||||
"essie", "el", "elhi", "els", "elsin", "elsin", "elsin", "elshin", "elshin",
|
||||
"ela", "elain", "elain", "elains", "elb", "l", "lh", "lhb", "ls", "la", "lai",
|
||||
"lair", "lain", "laisse", "lain", "lab", "lah", "le", "les", "less", "lei",
|
||||
"leis", "leiss", "leis", "leiss", "lehi", "les", "less", "lessn", "lb", "b",
|
||||
"ba", "bal", "bale", "balei", "baleise", "baler", "balr", "bali", "bai",
|
||||
"bairn", "bairns", "bairnie", "bairnish", "bairn", "bain", "bais", "bain",
|
||||
"bainie", "bail", "baile", "bailer", "bal", "bals", "bale", "bales", "balei",
|
||||
"bales", "bah", "bhil", "bl", "bls", "blair", "blain", "blain", "blains",
|
||||
"blah", "blahs", "bless", "bless"
|
||||
]
|
||||
|
||||
# Init for word tree (4 letters or less)
|
||||
self.board_4 = BoggleBoard(self.letters, 4)
|
||||
self.tree_4 = build_full_boggle_tree(self.board_4, self.wordlists_dir)
|
||||
self.found_words_4 = list(chain.from_iterable([x.word_paths for x in self.tree_4.values()]))
|
||||
|
||||
# Init for word tree (8 letters or less)
|
||||
self.board_8 = BoggleBoard(self.letters, 8)
|
||||
self.tree_8 = build_full_boggle_tree(self.board_8, self.wordlists_dir)
|
||||
self.found_words_8 = list(chain.from_iterable([x.word_paths for x in self.tree_8.values()]))
|
||||
|
||||
# Init for word tree (17 letters or less)
|
||||
self.board_17 = BoggleBoard(self.letters, 17)
|
||||
self.tree_17 = build_full_boggle_tree(self.board_17, self.wordlists_dir)
|
||||
self.found_words_17 = list(chain.from_iterable([x.word_paths for x in self.tree_17.values()]))
|
||||
|
||||
def test_word_count_4_letters_max(self):
|
||||
self.assertEqual(len(self.expected_words_max_4), sum(map(lambda x: len(x.word_paths), self.tree_4.values())))
|
||||
|
||||
def test_words_full_4_letters_max(self):
|
||||
found_words = [x.word_paths for x in self.tree_4.values()]
|
||||
for letter, subtree in self.tree_4.items():
|
||||
for i in range(0, min(len(self.expected_words_max_4), len(self.found_words_4))):
|
||||
self.assertEqual(self.expected_words_max_4[i], self.found_words_4[i][0])
|
||||
|
||||
def test_word_count_8_letters_max(self):
|
||||
self.assertEqual(len(self.expected_words_max_8), sum(map(lambda x: len(x.word_paths), self.tree_8.values())))
|
||||
|
||||
def test_words_full_8_letters_max(self):
|
||||
found_words = [x.word_paths for x in self.tree_8.values()]
|
||||
for letter, subtree in self.tree_8.items():
|
||||
for i in range(0, min(len(self.expected_words_max_8), len(self.found_words_8))):
|
||||
self.assertEqual(self.expected_words_max_8[i], self.found_words_8[i][0])
|
||||
|
||||
def test_word_count_17_letters_max(self):
|
||||
self.assertEqual(len(self.expected_words_max_17), sum(map(lambda x: len(x.word_paths), self.tree_17.values())))
|
||||
|
||||
def test_words_full_17_letters_max(self):
|
||||
found_words = [x.word_paths for x in self.tree_17.values()]
|
||||
for letter, subtree in self.tree_17.items():
|
||||
for i in range(0, min(len(self.expected_words_max_17), len(self.found_words_17))):
|
||||
self.assertEqual(self.expected_words_max_17[i], self.found_words_17[i][0])
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Executable
+134
@@ -0,0 +1,134 @@
|
||||
import unittest
|
||||
from functools import reduce
|
||||
from itertools import chain
|
||||
from os import path
|
||||
import pytest
|
||||
from boggler.boggler_utils import BoggleBoard, build_full_boggle_tree
|
||||
|
||||
wordlists_dir = path.abspath("./boggler/wordlists/dwyl/")
|
||||
letters = [
|
||||
['u','n','r','e'],
|
||||
['qu','n','i','l'],
|
||||
['i','s','h','a'],
|
||||
['s','e','l','b']
|
||||
]
|
||||
|
||||
expected_words_max_4 = [
|
||||
"u", "un", "unn", "uns", "uni", "unie", "uni", "unie", "un", "unn", "uni",
|
||||
"unie", "n", "ni", "nis", "nisi", "nil", "nile", "nu", "nun", "nuns", "nr", "r",
|
||||
"rin", "rie", "riel", "risqu", "rise", "riss", "ria", "rial", "rial", "rin",
|
||||
"rins", "rile", "rn", "rle", "rn", "re", "rel", "rei", "rein", "reis", "rein",
|
||||
"e", "el", "ela", "elhi", "eli", "elia", "eir", "eila", "er", "erin", "eris",
|
||||
"eria", "erin", "ern", "erns", "ern", "qu", "qui", "quin", "quis", "quis", "n",
|
||||
"nu", "nun", "nr", "ns", "ni", "nis", "nies", "nies", "nis", "nisi", "ni",
|
||||
"nis", "nisi", "nil", "nile", "i", "ir", "ire", "in", "inn", "inns", "ie",
|
||||
"ihs", "is", "isn", "ise", "isl", "isle", "isis", "ish", "ia", "in", "inn",
|
||||
"ins", "il", "ile", "ila", "l", "le", "lei", "leis", "ler", "lr", "la", "lai",
|
||||
"lair", "lain", "lain", "lab", "lah", "lh", "lhb", "li", "lir", "lire", "lin",
|
||||
"linn", "lie", "lier", "lis", "lise", "liss", "lish", "lin", "linn", "lins",
|
||||
"i", "in", "inn", "ins", "inia", "is", "ise", "ie", "is", "isn", "ise", "isl",
|
||||
"isle", "ish", "s", "sn", "si", "sir", "sire", "sin", "sie", "sier", "sia",
|
||||
"sial", "sial", "sin", "sinh", "sil", "sile", "se", "sei", "seis", "sel", "ss",
|
||||
"ssi", "sl", "sla", "slab", "si", "sin", "sinh", "sis", "sise", "sie", "sh",
|
||||
"shi", "shin", "shia", "shin", "she", "shes", "shel", "sha", "shai", "shab",
|
||||
"h", "hi", "hir", "hire", "hin", "hie", "his", "hisn", "hiss", "hia", "hin",
|
||||
"hins", "hile", "hila", "hl", "hler", "hl", "he", "hes", "hei", "hein", "hes",
|
||||
"hel", "hb", "hs", "hsi", "hsi", "ha", "hal", "hale", "hair", "hain", "hain",
|
||||
"hail", "hab", "hal", "hals", "hale", "a", "al", "ale", "alin", "alin", "ai",
|
||||
"air", "airn", "airn", "aire", "ain", "ainu", "aiel", "ais", "ain", "ainu",
|
||||
"ains", "ail", "aile", "ab", "abl", "able", "al", "als", "ale", "ales", "ales",
|
||||
"alb", "ah", "ahi", "ahir", "ahs", "s", "si", "sin", "sins", "sinh", "sie",
|
||||
"sis", "sisi", "sise", "sish", "ss", "ssi", "ssi", "se", "sei", "seis", "sel",
|
||||
"sels", "e", "es", "ess", "eh", "es", "ess", "el", "elhi", "els", "ela", "elb",
|
||||
"l", "lh", "lhb", "ls", "la", "lai", "lair", "lain", "lain", "lab", "lah", "le",
|
||||
"les", "less", "lei", "leis", "leis", "lehi", "les", "less", "lb", "b", "ba",
|
||||
"bal", "bale", "balr", "bali", "bai", "bain", "bais", "bain", "bail", "bal",
|
||||
"bals", "bale", "bah", "bhil", "bl", "bls", "blah"
|
||||
]
|
||||
|
||||
expected_words_max_20 = [
|
||||
"u","un","unn","unrelinquishable","unrelishable","unreliable","unrein","uns",
|
||||
"unsin","unslain","unshale","unshale","uni","unie","unhale","unhair","unhale",
|
||||
"uni","unie","un","unn","uni","unie","unrelishable","unreliable",
|
||||
"unrelinquishable","unrein","n","ni","nihal","nihal","nis","nisei","niseis",
|
||||
"nisse","nisi","nil","nile","nu","nun","nuns","nr","r","rin","rie",
|
||||
"riel","risqu","rise","rises","riss","rissel","ria","rial","rial",
|
||||
"rials","rin","rins","rinse","rinses","rile","rn","rle","rn",
|
||||
"re","rel","relais","relinquish","relinquishes","relish","relishes",
|
||||
"relishable","reliable","relinquish","relinquishes","rei","rein","reis",
|
||||
"rein","reins","e","el","ela","elain","elain","elains","elhi","eli","elisha",
|
||||
"elia","eir","eila","er","erin","eris","eria","erin","ern","erns","ernie",
|
||||
"ern","qu","qui","quin","quins","quinse","quinin","quiniela","quinia",
|
||||
"quis","quis","quisle","n","nu","nun","nr","ns","ni",
|
||||
"nis","nisse","nies","nies","niels","nis","nisi","nisse","ni",
|
||||
"nihal","nihal","nis","nisei","niseis","nisse","nisi","nil","nile",
|
||||
"i","ir","ire","in","inn","inns","ie","ihs","is",
|
||||
"isn","ise","issei","isl","isle","isles","isis","ish","ia",
|
||||
"in","inn","ins","inisle","inhale","inhaler","inhale","inhales","inhales",
|
||||
"il","ile","ila","l","le","lei","leis","leiss","ler",
|
||||
"lr","la","lai","lair","lain","laisse","lain","lab","lah",
|
||||
"lh","lhb","li","lir","lire","lin","linn","linns","linquish",
|
||||
"lie","lier","lis","lise","liss","lisle","lisles","lish","liable",
|
||||
"lin","linn","lins","linie","linha","linquish","i","in","inn",
|
||||
"ins","inhale","inhaler","inhale","inhales","inhales","inisle","inia","inial",
|
||||
"inial","is","ise","ie","is","isn","ise","isl","isle",
|
||||
"isles","ish","s","sn","snies","snirl","squin","squinnier","si",
|
||||
"sir","sire","sin","sie","sier","sia","sial","sial","sin",
|
||||
"sinh","sil","sile","se","sei","seis","sel","selah","ss",
|
||||
"ssi","sl","sla","slain","slain","slab","si","sin","sinh",
|
||||
"sis","sise","sisel","sie","sh","shi","shirl","shire","shin",
|
||||
"shinnies","shiel","shier","shia","shin","she","shes","shel","shela",
|
||||
"sha","shale","shalier","shai","shairn","shairn","shab","shale","shales",
|
||||
"h","hi","hir","hire","hin","hinnies","hinnies","hie","his",
|
||||
"hisn","hiss","hissel","hisis","hia","hin","hins","hile","hila",
|
||||
"hl","hler","hl","he","hes","hei","hein","heinie","hes",
|
||||
"hel","hb","hs","hsi","hsi","ha","hal","hale","haler",
|
||||
"hair","haire","hain","hain","hail","hailer","hab","hable","hal",
|
||||
"hals","halse","hale","hales","hales","a","al","ale","alin",
|
||||
"alish","alin","ai","air","airn","airns","airn","aire","ain",
|
||||
"ainu","aiel","ais","aisle","aisles","ain","ainu","ains","ail",
|
||||
"aile","ab","abl","able","ables","ables","al","als","ale",
|
||||
"ales","ales","alb","ah","ahi","ahir","ahs","s","si",
|
||||
"sin","sins","sinh","sinhs","sie","sis","sisi","sise","sisel",
|
||||
"sish","ss","ssi","ssi","se","sesqui","sesia","sei","seis",
|
||||
"seisin","seisin","sel","sels","selah","selahs","e","es","ess",
|
||||
"eshin","eshin","eh","es","ess","essie","el","elhi","els",
|
||||
"elsin","elsin","elsin","elshin","elshin","ela","elain","elain","elains",
|
||||
"elb","l","lh","lhb","ls","la","lai","lair","lain",
|
||||
"laisse","lain","lab","lah","le","les","less","lei","leis",
|
||||
"leiss","leis","leiss","lehi","les","less","lessn","lb","b",
|
||||
"ba","bal","bale","balei","baleise","baler","balr","bali","bai",
|
||||
"bairn","bairns","bairnie","bairnish","bairn","bain","bais","bain","bainie",
|
||||
"bail","baile","bailer","bal","bals","bale","bales","balei","bales",
|
||||
"bah","bhil","bl","bls","blair","blain","blain","blains","blah",
|
||||
"blahs","bless","bless"
|
||||
]
|
||||
|
||||
# Init for word tree (4 letters or less)
|
||||
board_4 = BoggleBoard(letters, 4)
|
||||
tree_4 = build_full_boggle_tree(board_4, wordlists_dir)
|
||||
found_words_4 = list(chain.from_iterable([x.word_paths for x in tree_4.values()]))
|
||||
|
||||
# Init for word tree (20 letters or less)
|
||||
board_20 = BoggleBoard(letters, 20)
|
||||
tree_20 = build_full_boggle_tree(board_20, wordlists_dir)
|
||||
found_words_20 = list(chain.from_iterable([x.word_paths for x in tree_20.values()]))
|
||||
|
||||
def test_word_count_4_letters_max():
|
||||
assert len(expected_words_max_4) == sum(map(lambda x: len(x.word_paths), tree_4.values()))
|
||||
|
||||
def test_words_full_4_letters_max():
|
||||
found_words = [x.word_paths for x in tree_4.values()]
|
||||
for letter, subtree in tree_4.items():
|
||||
for i in range(0, min(len(expected_words_max_4), len(found_words_4))):
|
||||
assert expected_words_max_4[i] == found_words_4[i][0]
|
||||
|
||||
def test_word_count_20_letters_max():
|
||||
assert len(expected_words_max_20) == sum(map(lambda x: len(x.word_paths), tree_20.values()))
|
||||
|
||||
def test_words_full_20_letters_max():
|
||||
found_words = [x.word_paths for x in tree_20.values()]
|
||||
for letter, subtree in tree_20.items():
|
||||
for i in range(0, min(len(expected_words_max_20), len(found_words_20))):
|
||||
assert expected_words_max_20[i] == found_words_20[i][0]
|
||||
|
||||
Reference in New Issue
Block a user