+ def test_render_work_efficient(self):
+ text = render_prefix_sum_diagram(16, work_efficient=True, plus="@")
+ expected = r"""
+ | | | | | | | | | | | | | | | |
+ ● | ● | ● | ● | ● | ● | ● | ● |
+ |\ | |\ | |\ | |\ | |\ | |\ | |\ | |\ |
+ | \| | \| | \| | \| | \| | \| | \| | \|
+ | @ | @ | @ | @ | @ | @ | @ | @
+ | |\ | | | |\ | | | |\ | | | |\ | |
+ | | \| | | | \| | | | \| | | | \| |
+ | | X | | | X | | | X | | | X |
+ | | |\ | | | |\ | | | |\ | | | |\ |
+ | | | \| | | | \| | | | \| | | | \|
+ | | | @ | | | @ | | | @ | | | @
+ | | | |\ | | | | | | | |\ | | | |
+ | | | | \| | | | | | | | \| | | |
+ | | | | X | | | | | | | X | | |
+ | | | | |\ | | | | | | | |\ | | |
+ | | | | | \| | | | | | | | \| | |
+ | | | | | X | | | | | | | X | |
+ | | | | | |\ | | | | | | | |\ | |
+ | | | | | | \| | | | | | | | \| |
+ | | | | | | X | | | | | | | X |
+ | | | | | | |\ | | | | | | | |\ |
+ | | | | | | | \| | | | | | | | \|
+ | | | | | | | @ | | | | | | | @
+ | | | | | | | |\ | | | | | | | |
+ | | | | | | | | \| | | | | | | |
+ | | | | | | | | X | | | | | | |
+ | | | | | | | | |\ | | | | | | |
+ | | | | | | | | | \| | | | | | |
+ | | | | | | | | | X | | | | | |
+ | | | | | | | | | |\ | | | | | |
+ | | | | | | | | | | \| | | | | |
+ | | | | | | | | | | X | | | | |
+ | | | | | | | | | | |\ | | | | |
+ | | | | | | | | | | | \| | | | |
+ | | | | | | | | | | | X | | | |
+ | | | | | | | | | | | |\ | | | |
+ | | | | | | | | | | | | \| | | |
+ | | | | | | | | | | | | X | | |
+ | | | | | | | | | | | | |\ | | |
+ | | | | | | | | | | | | | \| | |
+ | | | | | | | | | | | | | X | |
+ | | | | | | | | | | | | | |\ | |
+ | | | | | | | | | | | | | | \| |
+ | | | | | | | | | | | | | | X |
+ | | | | | | | | | | | | | | |\ |
+ | | | | | | | | | | | | | | | \|
+ | | | | | | | ● | | | | | | | @
+ | | | | | | | |\ | | | | | | | |
+ | | | | | | | | \| | | | | | | |
+ | | | | | | | | X | | | | | | |
+ | | | | | | | | |\ | | | | | | |
+ | | | | | | | | | \| | | | | | |
+ | | | | | | | | | X | | | | | |
+ | | | | | | | | | |\ | | | | | |
+ | | | | | | | | | | \| | | | | |
+ | | | | | | | | | | X | | | | |
+ | | | | | | | | | | |\ | | | | |
+ | | | | | | | | | | | \| | | | |
+ | | | ● | | | ● | | | @ | | | |
+ | | | |\ | | | |\ | | | |\ | | | |
+ | | | | \| | | | \| | | | \| | | |
+ | | | | X | | | X | | | X | | |
+ | | | | |\ | | | |\ | | | |\ | | |
+ | | | | | \| | | | \| | | | \| | |
+ | ● | ● | @ | ● | @ | ● | @ | |
+ | |\ | |\ | |\ | |\ | |\ | |\ | |\ | |
+ | | \| | \| | \| | \| | \| | \| | \| |
+ | | @ | @ | @ | @ | @ | @ | @ |
+ | | | | | | | | | | | | | | | |
+"""
+ expected = expected[1:-1] # trim newline at start and end
+ if text != expected:
+ print("text:")
+ print(text)
+ print()
+ self.assertEqual(expected, text)
+
+ def test_render_not_work_efficient(self):
+ text = render_prefix_sum_diagram(16, work_efficient=False, plus="@")
+ expected = r"""
+ | | | | | | | | | | | | | | | |
+ ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● |
+ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |
+ | \| \| \| \| \| \| \| \| \| \| \| \| \| \| \|
+ ● @ @ @ @ @ @ @ @ @ @ @ @ @ @ @
+ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ | |
+ | \| \| \| \| \| \| \| \| \| \| \| \| \| \| |
+ | X X X X X X X X X X X X X X |
+ | |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |
+ | | \| \| \| \| \| \| \| \| \| \| \| \| \| \|
+ ● ● @ @ @ @ @ @ @ @ @ @ @ @ @ @
+ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ | | | |
+ | \| \| \| \| \| \| \| \| \| \| \| \| | | |
+ | X X X X X X X X X X X X | | |
+ | |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ | | |
+ | | \| \| \| \| \| \| \| \| \| \| \| \| | |
+ | | X X X X X X X X X X X X | |
+ | | |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ | |
+ | | | \| \| \| \| \| \| \| \| \| \| \| \| |
+ | | | X X X X X X X X X X X X |
+ | | | |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |\ |
+ | | | | \| \| \| \| \| \| \| \| \| \| \| \|
+ ● ● ● ● @ @ @ @ @ @ @ @ @ @ @ @
+ |\ |\ |\ |\ |\ |\ |\ |\ | | | | | | | |
+ | \| \| \| \| \| \| \| \| | | | | | | |
+ | X X X X X X X X | | | | | | |
+ | |\ |\ |\ |\ |\ |\ |\ |\ | | | | | | |
+ | | \| \| \| \| \| \| \| \| | | | | | |
+ | | X X X X X X X X | | | | | |
+ | | |\ |\ |\ |\ |\ |\ |\ |\ | | | | | |
+ | | | \| \| \| \| \| \| \| \| | | | | |
+ | | | X X X X X X X X | | | | |
+ | | | |\ |\ |\ |\ |\ |\ |\ |\ | | | | |
+ | | | | \| \| \| \| \| \| \| \| | | | |
+ | | | | X X X X X X X X | | | |
+ | | | | |\ |\ |\ |\ |\ |\ |\ |\ | | | |
+ | | | | | \| \| \| \| \| \| \| \| | | |
+ | | | | | X X X X X X X X | | |
+ | | | | | |\ |\ |\ |\ |\ |\ |\ |\ | | |
+ | | | | | | \| \| \| \| \| \| \| \| | |
+ | | | | | | X X X X X X X X | |
+ | | | | | | |\ |\ |\ |\ |\ |\ |\ |\ | |
+ | | | | | | | \| \| \| \| \| \| \| \| |
+ | | | | | | | X X X X X X X X |
+ | | | | | | | |\ |\ |\ |\ |\ |\ |\ |\ |
+ | | | | | | | | \| \| \| \| \| \| \| \|
+ | | | | | | | | @ @ @ @ @ @ @ @
+ | | | | | | | | | | | | | | | |
+"""
+ expected = expected[1:-1] # trim newline at start and end
+ if text != expected:
+ print("text:")
+ print(text)
+ print()
+ self.assertEqual(expected, text)
+