class Test_write_wrapping: def setUp(self): self.realm = RootRealm(Mock()) self.p = Mock() self.realm.addProtocol(self.p) def test_line_insertion_with_hard_line_end_no_sls(self): self.realm._last_line_end = 'hard' self.realm.write(simpleml("foo", sentinel.fore, sentinel.back)) rcvd = [ml for ((ml,), _) in self.p.metalineReceived.call_args_list] assert rcvd == [simpleml("\nfoo", sentinel.fore, sentinel.back)] def test_line_insertion_with_hard_line_end_sls(self): self.realm._last_line_end = 'hard' ml = simpleml("foo", sentinel.fore, sentinel.back) ml.soft_line_start = True expected = ml.copy() expected.insert(0, '\n') self.realm.write(ml) rcvd = [ml for ((ml,), _) in self.p.metalineReceived.call_args_list] assert rcvd == [expected] def test_line_insertion_sle_no_sls(self): self.realm._last_line_end = 'soft' self.realm.write(simpleml("foo", sentinel.fore, sentinel.back)) rcvd = [ml for ((ml,), _) in self.p.metalineReceived.call_args_list] assert rcvd == [simpleml("\nfoo", sentinel.fore, sentinel.back)] def test_line_no_insertion_sle_sls(self): self.realm._last_line_end = 'soft' ml = simpleml("foo", sentinel.fore, sentinel.back) ml.soft_line_start = True expected = ml.copy() self.realm.write(ml) rcvd = [ml for ((ml,), _) in self.p.metalineReceived.call_args_list] assert rcvd == [expected] def test_respects_no_line_end(self): self.realm._last_line_end = None ml = simpleml("foo", sentinel.fore, sentinel.back) expected = ml self.realm.write(ml) rcvd = [ml for ((ml,), _) in self.p.metalineReceived.call_args_list] assert rcvd == [expected], rcvd def test_last_line_end_setting(self): ml = simpleml("foo", sentinel.fore, sentinel.back) ml.line_end = sentinel.line_end self.realm.write(ml) assert self.realm._last_line_end == sentinel.line_end def test_last_line_end_is_defaultly_None(self): assert self.realm._last_line_end is None def test_with_wrap(self): ml = simpleml("bar", sentinel.fore1, sentinel.fore2) ml.wrapped = Mock() ml.wrapped.return_value = ml2 = simpleml("foo", sentinel.fore, sentinel.back) self.realm.write(ml) assert ml.wrapped.called rcvd = [ml for ((ml,), _) in self.p.metalineReceived.call_args_list] assert rcvd == [ml2]
class Test_write: def setUp(self): self.realm = RootRealm(Mock()) self.realm.telnet = Mock() self.p = Mock() self.realm.addProtocol(self.p) self.noting_line = simpleml("foo", Mock(), Mock()) def writer(self, match, realm): print 'writer called!' realm.write(self.noting_line) @property def lines_gotten(self): return [line for ((line,), kwargs) in self.p.metalineReceived.call_args_list] def test_from_not_a_string(self): self.realm.write(42) assert len(self.lines_gotten) == 1 assert self.lines_gotten[0].line == '42' def test_from_string(self): self.realm.write('spam') assert len(self.lines_gotten) == 1 assert self.lines_gotten[0].line == 'spam' def test_from_metaline(self): ml = Metaline('foo', None, None) self.realm.write(ml) assert self.lines_gotten == [ml] def test_no_colourbleed_fg(self): self.realm.write("eggs") cols = self.lines_gotten[0].fores.items() expected = [(0, fg_code(WHITE, False))] assert cols == expected, (cols, expected) def test_no_colourbleed_bg(self): self.realm.write("eggs") cols = self.lines_gotten[0].backs.items() assert cols == [(0, bg_code(BLACK))], cols def test_passes_on_wrap_default(self): self.realm.write("eggs") assert not self.lines_gotten[0].wrap def test_soft_line_start_default_is_off(self): self.realm.write("barbaz") assert not self.lines_gotten[0].soft_line_start def test_passes_on_soft_line_start(self): self.realm.write('foo', soft_line_start = True) assert self.lines_gotten[0].soft_line_start noting_trigger = binding_trigger('bar')(writer) noting_alias = binding_alias('bar')(writer) def test_write_writes_after_during_matching_triggers(self): self.realm.triggers.append(self.noting_trigger) inline = Metaline('bar', set(), set()) self.realm.metalineReceived(inline) assert self.lines_gotten == [inline, self.noting_line], \ self.lines_gotten def test_write_writes_after_during_alias_matching(self): self.realm.aliases.append(self.noting_alias) inline = Metaline('bar', RunLengthList([(0, fg_code(WHITE, False))]), RunLengthList([(0, bg_code(BLACK))]), soft_line_start = True) self.realm.send('bar') print self.lines_gotten print expected = [inline, self.noting_line] print expected assert self.lines_gotten == expected def tracer(self, match, realm): realm.trace("Foo") tracing_trigger = binding_trigger("baz")(tracer) tracing_alias = binding_alias("baz")(tracer) def test_trace_writes_after_during_matching_triggers(self): self.realm.tracing = True self.realm.triggers.append(self.tracing_trigger) inline = Metaline('baz', set(), set()) self.realm.metalineReceived(inline) expected_lines = [simpleml("\nTRACE: %s matched!" % self.tracing_trigger, fg_code(WHITE, False), bg_code(BLACK)), simpleml("\nTRACE: Foo", fg_code(WHITE, False), bg_code(BLACK))] print self.lines_gotten print expected = [inline] + expected_lines print expected assert self.lines_gotten == expected def test_trace_writes_after_during_alias_matching(self): self.realm.tracing = True self.realm.aliases.append(self.tracing_alias) inline = Metaline('baz', RunLengthList([(0, fg_code(WHITE, False))]), RunLengthList([(0, bg_code(BLACK))]), soft_line_start = True) self.realm.send('baz') expected_lines = [simpleml("\nTRACE: %s matched!" % self.tracing_alias, fg_code(WHITE, False), bg_code(BLACK)), simpleml("\nTRACE: Foo", fg_code(WHITE, False), bg_code(BLACK))] print self.lines_gotten print expected = [inline] + expected_lines print expected assert self.lines_gotten == expected