diff --git a/tests/basic/test_sendchat.py b/tests/basic/test_sendchat.py index fb2b6fb5a..815aba282 100644 --- a/tests/basic/test_sendchat.py +++ b/tests/basic/test_sendchat.py @@ -93,3 +93,74 @@ class TestSendChat(unittest.TestCase): assert result is None # Should only print the error message assert mock_print.call_count == 1 + + def test_ensure_alternating_roles_empty(self): + from aider.sendchat import ensure_alternating_roles + messages = [] + result = ensure_alternating_roles(messages) + assert result == [] + + def test_ensure_alternating_roles_single_message(self): + from aider.sendchat import ensure_alternating_roles + messages = [{"role": "user", "content": "Hello"}] + result = ensure_alternating_roles(messages) + assert result == messages + + def test_ensure_alternating_roles_already_alternating(self): + from aider.sendchat import ensure_alternating_roles + messages = [ + {"role": "user", "content": "Hello"}, + {"role": "assistant", "content": "Hi there"}, + {"role": "user", "content": "How are you?"}, + ] + result = ensure_alternating_roles(messages) + assert result == messages + + def test_ensure_alternating_roles_consecutive_user(self): + from aider.sendchat import ensure_alternating_roles + messages = [ + {"role": "user", "content": "Hello"}, + {"role": "user", "content": "Are you there?"}, + ] + expected = [ + {"role": "user", "content": "Hello"}, + {"role": "assistant", "content": ""}, + {"role": "user", "content": "Are you there?"}, + ] + result = ensure_alternating_roles(messages) + assert result == expected + + def test_ensure_alternating_roles_consecutive_assistant(self): + from aider.sendchat import ensure_alternating_roles + messages = [ + {"role": "assistant", "content": "Hi there"}, + {"role": "assistant", "content": "How can I help?"}, + ] + expected = [ + {"role": "assistant", "content": "Hi there"}, + {"role": "user", "content": ""}, + {"role": "assistant", "content": "How can I help?"}, + ] + result = ensure_alternating_roles(messages) + assert result == expected + + def test_ensure_alternating_roles_mixed_sequence(self): + from aider.sendchat import ensure_alternating_roles + messages = [ + {"role": "user", "content": "Hello"}, + {"role": "user", "content": "Are you there?"}, + {"role": "assistant", "content": "Yes"}, + {"role": "assistant", "content": "How can I help?"}, + {"role": "user", "content": "Write code"}, + ] + expected = [ + {"role": "user", "content": "Hello"}, + {"role": "assistant", "content": ""}, + {"role": "user", "content": "Are you there?"}, + {"role": "assistant", "content": "Yes"}, + {"role": "user", "content": ""}, + {"role": "assistant", "content": "How can I help?"}, + {"role": "user", "content": "Write code"}, + ] + result = ensure_alternating_roles(messages) + assert result == expected