def assertRoundtrip(self, diagram): (before, ) = [terminal_dsl.parse_term_state(x)[1] for x in terminal_dsl.divide_term_states(diagram)] with UndoScenario(before) as t: UndoScenario.initialize(t, before) after = terminal_dsl.TerminalState.from_tmux_pane(t) self.assertEqual(before, after, before.visible_diff(after))
def assert_undo(self, diagram, slow=False): states = [terminal_dsl.parse_term_state(x)[1] for x in terminal_dsl.divide_term_states(diagram)] if len(states) < 2: raise ValueError("Diagram has only one state") with UndoScenario(states[0]) as t: UndoScenario.initialize(t, states[0]) if slow: time.sleep(1) for before, after in zip(states[:-1], states[1:]): self.resize(before, after, t) if slow: time.sleep(1) if self.should_undo(before, after): restore(t) if slow: time.sleep(1) actual = terminal_dsl.TerminalState.from_tmux_pane(t) self.assertEqual(after, actual, after.visible_diff(actual)) self.assertEqual(tmux.all_contents(t), rewrite.linesplit(after.lines, after.width))