From eb879a743ed5c6461cac40cd397c82ea61efedac Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 24 Jan 2025 09:19:16 -0800 Subject: [PATCH] test: add tests for `ensure_alternating_roles` function --- tests/basic/test_sendchat.py | 71 ++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) 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