diff options
| author | Martin Bielik <martin.bielik@instea.sk> | 2024-12-20 17:34:20 +0100 |
|---|---|---|
| committer | Martin Bielik <martin.bielik@instea.sk> | 2024-12-21 00:45:31 +0100 |
| commit | 933a90d43ce9e360bb139dda2040b4360b9b12ce (patch) | |
| tree | 2313e9e412801fcc73371ba525842ced4d2daeb6 /tests/chat_test.py | |
| parent | 0f448c88e3eec091cedde2de535f69294cec5b63 (diff) | |
| download | vim-ai-933a90d43ce9e360bb139dda2040b4360b9b12ce.tar.gz | |
parse chat messages tests
Diffstat (limited to 'tests/chat_test.py')
| -rw-r--r-- | tests/chat_test.py | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/tests/chat_test.py b/tests/chat_test.py new file mode 100644 index 0000000..9acfecb --- /dev/null +++ b/tests/chat_test.py @@ -0,0 +1,140 @@ +from utils import parse_chat_messages +import os + +curr_dir = os.path.dirname(__file__) + +def strip_text(txt): + txt = txt.strip() + lines = txt.splitlines() + return "\n".join([line.lstrip() for line in lines]) + +def test_parse_user_message(): + chat_content = strip_text( + """ + >>> user + + generate lorem ipsum + """) + messages = parse_chat_messages(chat_content) + assert 1 == len(messages) + assert 'user' == messages[0]['role'] + assert 'generate lorem ipsum' == messages[0]['content'] + + +def test_parse_system_message(): + chat_content = strip_text(""" + >>> system + + you are general assystant + + >>> user + + generate lorem ipsum + """) + messages = parse_chat_messages(chat_content) + assert 2 == len(messages) + assert 'system' == messages[0]['role'] + assert 'you are general assystant' == messages[0]['content'] + assert 'user' == messages[1]['role'] + assert 'generate lorem ipsum' == messages[1]['content'] + +def test_parse_assistant_message(): + chat_content = strip_text(""" + >>> user + + generate lorem ipsum + + <<< assistant + + bla bla bla + + >>> user + + again + """) + messages = parse_chat_messages(chat_content) + assert 3 == len(messages) + assert 'user' == messages[0]['role'] + assert 'generate lorem ipsum' == messages[0]['content'] + assert 'assistant' == messages[1]['role'] + assert 'bla bla bla' == messages[1]['content'] + assert 'user' == messages[2]['role'] + assert 'again' == messages[2]['content'] + +def test_parse_include_single_file_message(): + chat_content = strip_text(f""" + >>> user + + translate to human language + + >>> include + + {curr_dir}/resources/test1.include.txt + """) + messages = parse_chat_messages(chat_content) + assert 2 == len(messages) + assert 'user' == messages[0]['role'] + assert 'translate to human language' == messages[0]['content'] + assert 'user' == messages[1]['role'] + expected_content = strip_text(f""" + ==> {curr_dir}/resources/test1.include.txt <== + hello world + """) + assert expected_content == messages[1]['content'] + +def test_parse_include_multiple_files_message(): + chat_content = strip_text(f""" + >>> user + + translate to human language + + >>> include + + {curr_dir}/resources/test1.include.txt + {curr_dir}/resources/test2.include.txt + """) + messages = parse_chat_messages(chat_content) + assert 2 == len(messages) + assert 'user' == messages[0]['role'] + assert 'translate to human language' == messages[0]['content'] + assert 'user' == messages[1]['role'] + expected_content = strip_text(f""" + ==> {curr_dir}/resources/test1.include.txt <== + hello world + + ==> {curr_dir}/resources/test2.include.txt <== + vim is awesome + """) + assert expected_content == messages[1]['content'] + +def test_parse_include_glob_files_message(): + chat_content = strip_text(f""" + >>> user + + translate to human language + + >>> include + + {curr_dir}/**/*.include.txt + """) + messages = parse_chat_messages(chat_content) + assert 2 == len(messages) + assert 'user' == messages[0]['role'] + assert 'translate to human language' == messages[0]['content'] + assert 'user' == messages[1]['role'] + expected_content = strip_text(f""" + ==> {curr_dir}/resources/test1.include.txt <== + hello world + + ==> {curr_dir}/resources/test2.include.txt <== + vim is awesome + """) + assert expected_content == messages[1]['content'] + +def test_parse_include_image_message(): + # TODO + pass + +def test_parse_include_image_with_files_message(): + # TODO + pass |