Correct unit tests for grid generator

This commit is contained in:
Griatch 2020-04-11 20:40:15 +02:00
parent 642f17be68
commit 66ed25b885
2 changed files with 6 additions and 14 deletions

View file

@ -264,8 +264,6 @@ class TestFormatGrid(TestCase):
"""Grid with small variations"""
elements = self._generate_elements(3, 1, 30)
rows = utils.format_grid(elements, width=78)
for row in rows:
print(f"'{row}'", len(row))
self.assertEqual(len(rows), 3)
self.assertTrue(all(len(row) == 78 for row in rows))
@ -273,8 +271,6 @@ class TestFormatGrid(TestCase):
"""Grid with big variations"""
elements = self._generate_elements(3, 15, 30)
rows = utils.format_grid(elements, width=82, sep=" ")
for row in rows:
print(f"'{row}'", len(row))
self.assertEqual(len(rows), 8)
self.assertTrue(all(len(row) == 82 for row in rows))
@ -282,8 +278,6 @@ class TestFormatGrid(TestCase):
"""Grid with very long strings"""
elements = self._generate_elements(70, 20, 30)
rows = utils.format_grid(elements, width=78)
for row in rows:
print(f"'{row}'", len(row))
self.assertEqual(len(rows), 30)
self.assertTrue(all(len(row) == 78 for row in rows))
@ -293,19 +287,15 @@ class TestFormatGrid(TestCase):
"copy", "cpattr", "desc", "destroy", "dig",
"examine", "find", "force", "lock")
rows = utils.format_grid(elements, width=78)
for row in rows:
print(f"'{row}'", len(row))
self.assertEqual(len(rows), 2)
for element in elements:
self.assertTrue(element in rows, f"element {element} is missing.")
self.assertTrue(element in "\n".join(rows), f"element {element} is missing.")
def test_breakline(self):
"""Grid with line-long elements in middle"""
elements = self._generate_elements(6, 4, 30)
elements[10] = elements[20] = "-" * 78
rows = utils.format_grid(elements, width=78)
for row in rows:
print(f"'{row}'", len(row))
self.assertEqual(len(rows), 8)
for element in elements:
self.assertTrue(element in rows, f"element {element} is missing.")
self.assertTrue(element in "\n".join(rows), f"element {element} is missing.")

View file

@ -1744,6 +1744,8 @@ def format_grid(elements, width=78, sep=" ", verbatim_elements=None):
elements = [elements[ie] + sep for ie in range(nelements - 1)] + [elements[-1]]
wls = [len(elem) for elem in elements]
wls_percentile = [wl for iw, wl in enumerate(wls) if iw not in verbatim_elements]
# from pudb import debugger
# debugger.Debugger().set_trace()
# get the nth percentile as a good representation of average width
averlen = int(percentile(sorted(wls_percentile), 0.9)) + 2 # include extra space
@ -1752,10 +1754,10 @@ def format_grid(elements, width=78, sep=" ", verbatim_elements=None):
if aver_per_row == 1:
# one line per row, output directly since this is trivial
# we use rstrip here to remove extra spaces added by sep
return "\n".join(
return [
crop(element.rstrip(), width) + " " * max(0, width - len(element.rstrip()))
for iel, element in enumerate(elements)
)
]
indices = [averlen * ind for ind in range(aver_per_row - 1)]