1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-06-23 21:45:30 +00:00

Added history and jid tests to cmocka

This commit is contained in:
James Booth 2013-12-14 16:35:56 +00:00
parent 71577c1fdd
commit 0730867326
6 changed files with 198 additions and 159 deletions

View File

@ -83,6 +83,8 @@ test_sources = \
tests/test_autocomplete.c \
tests/test_common.c \
tests/test_command.c \
tests/test_history.c \
tests/test_jid.c \
tests/testsuite.c
main_source = src/main.c

View File

@ -1,34 +1,38 @@
#include <stdio.h>
#include <head-unit.h>
#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <cmocka.h>
#include <stdlib.h>
#include "tools/history.h"
void previous_on_empty_returns_null(void)
void previous_on_empty_returns_null(void **state)
{
History history = history_new(10);
char *item = history_previous(history, "inp");
assert_is_null(item);
assert_null(item);
}
void next_on_empty_returns_null(void)
void next_on_empty_returns_null(void **state)
{
History history = history_new(10);
char *item = history_next(history, "inp");
assert_is_null(item);
assert_null(item);
}
void previous_once_returns_last(void)
void previous_once_returns_last(void **state)
{
History history = history_new(10);
history_append(history, "Hello");
char *item = history_previous(history, "inp");
assert_string_equals("Hello", item);
assert_string_equal("Hello", item);
}
void previous_twice_when_one_returns_first(void)
void previous_twice_when_one_returns_first(void **state)
{
History history = history_new(10);
history_append(history, "Hello");
@ -36,10 +40,10 @@ void previous_twice_when_one_returns_first(void)
char *item1 = history_previous(history, NULL);
char *item2 = history_previous(history, item1);
assert_string_equals("Hello", item2);
assert_string_equal("Hello", item2);
}
void previous_always_stops_at_first(void)
void previous_always_stops_at_first(void **state)
{
History history = history_new(10);
history_append(history, "Hello");
@ -51,10 +55,10 @@ void previous_always_stops_at_first(void)
char *item5 = history_previous(history, item4);
char *item6 = history_previous(history, item5);
assert_string_equals("Hello", item6);
assert_string_equal("Hello", item6);
}
void previous_goes_to_correct_element(void)
void previous_goes_to_correct_element(void **state)
{
History history = history_new(10);
history_append(history, "Hello");
@ -68,10 +72,10 @@ void previous_goes_to_correct_element(void)
char *item2 = history_previous(history, item1);
char *item3 = history_previous(history, item2);
assert_string_equals("going", item3);
assert_string_equal("going", item3);
}
void prev_then_next_returns_empty(void)
void prev_then_next_returns_empty(void **state)
{
History history = history_new(10);
history_append(history, "Hello");
@ -79,10 +83,10 @@ void prev_then_next_returns_empty(void)
char *item1 = history_previous(history, NULL);
char *item2 = history_next(history, item1);
assert_string_equals("", item2);
assert_string_equal("", item2);
}
void prev_with_val_then_next_returns_val(void)
void prev_with_val_then_next_returns_val(void **state)
{
History history = history_new(10);
history_append(history, "Hello");
@ -90,10 +94,10 @@ void prev_with_val_then_next_returns_val(void)
char *item1 = history_previous(history, "Oioi");
char *item2 = history_next(history, item1);
assert_string_equals("Oioi", item2);
assert_string_equal("Oioi", item2);
}
void prev_with_val_then_next_twice_returns_null(void)
void prev_with_val_then_next_twice_returns_null(void **state)
{
History history = history_new(10);
history_append(history, "Hello");
@ -102,10 +106,10 @@ void prev_with_val_then_next_twice_returns_null(void)
char *item2 = history_next(history, item1);
char *item3 = history_next(history, item2);
assert_is_null(item3);
assert_null(item3);
}
void navigate_then_append_new(void)
void navigate_then_append_new(void **state)
{
History history = history_new(10);
history_append(history, "Hello");
@ -115,25 +119,25 @@ void navigate_then_append_new(void)
history_append(history, "append");
char *item1 = history_previous(history, "new text");
assert_string_equals("append", item1);
assert_string_equal("append", item1);
char *item2 = history_previous(history, item1);
assert_string_equals("history", item2);
assert_string_equal("history", item2);
char *item3 = history_previous(history, item2);
assert_string_equals("testing", item3);
assert_string_equal("testing", item3);
char *item4 = history_next(history, item3);
assert_string_equals("history", item4);
assert_string_equal("history", item4);
char *item5 = history_next(history, item4);
assert_string_equals("append", item5);
assert_string_equal("append", item5);
char *item6 = history_next(history, item5);
assert_string_equals("new text", item6);
assert_string_equal("new text", item6);
}
void edit_item_mid_history(void)
void edit_item_mid_history(void **state)
{
History history = history_new(10);
history_append(history, "Hello");
@ -143,37 +147,37 @@ void edit_item_mid_history(void)
history_append(history, "append");
char *item1 = history_previous(history, "new item");
assert_string_equals("append", item1);
assert_string_equal("append", item1);
char *item2 = history_previous(history, item1);
assert_string_equals("history", item2);
assert_string_equal("history", item2);
char *item3 = history_previous(history, item2);
assert_string_equals("testing", item3);
assert_string_equal("testing", item3);
char *item4 = history_previous(history, "EDITED");
assert_string_equals("again", item4);
assert_string_equal("again", item4);
char *item5 = history_previous(history, item4);
assert_string_equals("Hello", item5);
assert_string_equal("Hello", item5);
char *item6 = history_next(history, item5);
assert_string_equals("again", item6);
assert_string_equal("again", item6);
char *item7 = history_next(history, item6);
assert_string_equals("EDITED", item7);
assert_string_equal("EDITED", item7);
char *item8 = history_next(history, item7);
assert_string_equals("history", item8);
assert_string_equal("history", item8);
char *item9 = history_next(history, item8);
assert_string_equals("append", item9);
assert_string_equal("append", item9);
char *item10 = history_next(history, item9);
assert_string_equals("new item", item10);
assert_string_equal("new item", item10);
}
void edit_previous_and_append(void)
void edit_previous_and_append(void **state)
{
History history = history_new(10);
history_append(history, "Hello");
@ -183,51 +187,33 @@ void edit_previous_and_append(void)
history_append(history, "append");
char *item1 = history_previous(history, "new item");
assert_string_equals("append", item1);
assert_string_equal("append", item1);
char *item2 = history_previous(history, item1);
assert_string_equals("history", item2);
assert_string_equal("history", item2);
char *item3 = history_previous(history, item2);
assert_string_equals("testing", item3);
assert_string_equal("testing", item3);
history_append(history, "EDITED");
char *item4 = history_previous(history, NULL);
assert_string_equals("EDITED", item4);
assert_string_equal("EDITED", item4);
}
void start_session_add_new_submit_previous(void)
void start_session_add_new_submit_previous(void **state)
{
History history = history_new(10);
history_append(history, "hello");
char *item1 = history_previous(history, NULL);
assert_string_equals("hello", item1);
assert_string_equal("hello", item1);
char *item2 = history_next(history, item1);
assert_string_equals("", item2);
assert_string_equal("", item2);
char *item3 = history_previous(history, "new text");
assert_string_equals("hello", item3);
assert_string_equal("hello", item3);
history_append(history, item3);
}
void register_history_tests(void)
{
TEST_MODULE("history tests");
TEST(previous_on_empty_returns_null);
TEST(next_on_empty_returns_null);
TEST(previous_once_returns_last);
TEST(previous_twice_when_one_returns_first);
TEST(previous_always_stops_at_first);
TEST(previous_goes_to_correct_element);
TEST(prev_then_next_returns_empty);
TEST(prev_with_val_then_next_returns_val);
TEST(prev_with_val_then_next_twice_returns_null);
TEST(navigate_then_append_new);
TEST(edit_item_mid_history);
TEST(edit_previous_and_append);
TEST(start_session_add_new_submit_previous);
}

13
tests/test_history.h Normal file
View File

@ -0,0 +1,13 @@
void previous_on_empty_returns_null(void **state);
void next_on_empty_returns_null(void **state);
void previous_once_returns_last(void **state);
void previous_twice_when_one_returns_first(void **state);
void previous_always_stops_at_first(void **state);
void previous_goes_to_correct_element(void **state);
void prev_then_next_returns_empty(void **state);
void prev_with_val_then_next_returns_val(void **state);
void prev_with_val_then_next_twice_returns_null(void **state);
void navigate_then_append_new(void **state);
void edit_item_mid_history(void **state);
void edit_previous_and_append(void **state);
void start_session_add_new_submit_previous(void **state);

View File

@ -1,192 +1,167 @@
#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <cmocka.h>
#include <stdlib.h>
#include <string.h>
#include <head-unit.h>
#include "jid.h"
void create_jid_from_null_returns_null(void)
void create_jid_from_null_returns_null(void **state)
{
Jid *result = jid_create(NULL);
assert_is_null(result);
assert_null(result);
}
void create_jid_from_empty_string_returns_null(void)
void create_jid_from_empty_string_returns_null(void **state)
{
Jid *result = jid_create("");
assert_is_null(result);
assert_null(result);
}
void create_jid_from_full_returns_full(void)
void create_jid_from_full_returns_full(void **state)
{
Jid *result = jid_create("myuser@mydomain/laptop");
assert_string_equals("myuser@mydomain/laptop", result->fulljid);
assert_string_equal("myuser@mydomain/laptop", result->fulljid);
}
void create_jid_from_full_returns_bare(void)
void create_jid_from_full_returns_bare(void **state)
{
Jid *result = jid_create("myuser@mydomain/laptop");
assert_string_equals("myuser@mydomain", result->barejid);
assert_string_equal("myuser@mydomain", result->barejid);
}
void create_jid_from_full_returns_resourcepart(void)
void create_jid_from_full_returns_resourcepart(void **state)
{
Jid *result = jid_create("myuser@mydomain/laptop");
assert_string_equals("laptop", result->resourcepart);
assert_string_equal("laptop", result->resourcepart);
}
void create_jid_from_full_returns_localpart(void)
void create_jid_from_full_returns_localpart(void **state)
{
Jid *result = jid_create("myuser@mydomain/laptop");
assert_string_equals("myuser", result->localpart);
assert_string_equal("myuser", result->localpart);
}
void create_jid_from_full_returns_domainpart(void)
void create_jid_from_full_returns_domainpart(void **state)
{
Jid *result = jid_create("myuser@mydomain/laptop");
assert_string_equals("mydomain", result->domainpart);
assert_string_equal("mydomain", result->domainpart);
}
void create_jid_from_full_nolocal_returns_full(void)
void create_jid_from_full_nolocal_returns_full(void **state)
{
Jid *result = jid_create("mydomain/laptop");
assert_string_equals("mydomain/laptop", result->fulljid);
assert_string_equal("mydomain/laptop", result->fulljid);
}
void create_jid_from_full_nolocal_returns_bare(void)
void create_jid_from_full_nolocal_returns_bare(void **state)
{
Jid *result = jid_create("mydomain/laptop");
assert_string_equals("mydomain", result->barejid);
assert_string_equal("mydomain", result->barejid);
}
void create_jid_from_full_nolocal_returns_resourcepart(void)
void create_jid_from_full_nolocal_returns_resourcepart(void **state)
{
Jid *result = jid_create("mydomain/laptop");
assert_string_equals("laptop", result->resourcepart);
assert_string_equal("laptop", result->resourcepart);
}
void create_jid_from_full_nolocal_returns_domainpart(void)
void create_jid_from_full_nolocal_returns_domainpart(void **state)
{
Jid *result = jid_create("mydomain/laptop");
assert_string_equals("mydomain", result->domainpart);
assert_string_equal("mydomain", result->domainpart);
}
void create_jid_from_full_nolocal_returns_null_localpart(void)
void create_jid_from_full_nolocal_returns_null_localpart(void **state)
{
Jid *result = jid_create("mydomain/laptop");
assert_is_null(result->localpart);
assert_null(result->localpart);
}
void create_jid_from_bare_returns_null_full(void)
void create_jid_from_bare_returns_null_full(void **state)
{
Jid *result = jid_create("myuser@mydomain");
assert_is_null(result->fulljid);
assert_null(result->fulljid);
}
void create_jid_from_bare_returns_null_resource(void)
void create_jid_from_bare_returns_null_resource(void **state)
{
Jid *result = jid_create("myuser@mydomain");
assert_is_null(result->resourcepart);
assert_null(result->resourcepart);
}
void create_jid_from_bare_returns_bare(void)
void create_jid_from_bare_returns_bare(void **state)
{
Jid *result = jid_create("myuser@mydomain");
assert_string_equals("myuser@mydomain", result->barejid);
assert_string_equal("myuser@mydomain", result->barejid);
}
void create_jid_from_bare_returns_localpart(void)
void create_jid_from_bare_returns_localpart(void **state)
{
Jid *result = jid_create("myuser@mydomain");
assert_string_equals("myuser", result->localpart);
assert_string_equal("myuser", result->localpart);
}
void create_jid_from_bare_returns_domainpart(void)
void create_jid_from_bare_returns_domainpart(void **state)
{
Jid *result = jid_create("myuser@mydomain");
assert_string_equals("mydomain", result->domainpart);
assert_string_equal("mydomain", result->domainpart);
}
void create_room_jid_returns_room(void)
void create_room_jid_returns_room(void **state)
{
Jid *result = jid_create_from_bare_and_resource("room@conference.domain.org", "myname");
assert_string_equals("room@conference.domain.org", result->barejid);
assert_string_equal("room@conference.domain.org", result->barejid);
}
void create_room_jid_returns_nick(void)
void create_room_jid_returns_nick(void **state)
{
Jid *result = jid_create_from_bare_and_resource("room@conference.domain.org", "myname");
assert_string_equals("myname", result->resourcepart);
assert_string_equal("myname", result->resourcepart);
}
void create_with_slash_in_resource(void)
void create_with_slash_in_resource(void **state)
{
Jid *result = jid_create("room@conference.domain.org/my/nick");
assert_string_equals("room", result->localpart);
assert_string_equals("conference.domain.org", result->domainpart);
assert_string_equals("my/nick", result->resourcepart);
assert_string_equals("room@conference.domain.org", result->barejid);
assert_string_equals("room@conference.domain.org/my/nick", result->fulljid);
assert_string_equal("room", result->localpart);
assert_string_equal("conference.domain.org", result->domainpart);
assert_string_equal("my/nick", result->resourcepart);
assert_string_equal("room@conference.domain.org", result->barejid);
assert_string_equal("room@conference.domain.org/my/nick", result->fulljid);
}
void create_with_at_in_resource(void)
void create_with_at_in_resource(void **state)
{
Jid *result = jid_create("room@conference.domain.org/my@nick");
assert_string_equals("room", result->localpart);
assert_string_equals("conference.domain.org", result->domainpart);
assert_string_equals("my@nick", result->resourcepart);
assert_string_equals("room@conference.domain.org", result->barejid);
assert_string_equals("room@conference.domain.org/my@nick", result->fulljid);
assert_string_equal("room", result->localpart);
assert_string_equal("conference.domain.org", result->domainpart);
assert_string_equal("my@nick", result->resourcepart);
assert_string_equal("room@conference.domain.org", result->barejid);
assert_string_equal("room@conference.domain.org/my@nick", result->fulljid);
}
void create_with_at_and_slash_in_resource(void)
void create_with_at_and_slash_in_resource(void **state)
{
Jid *result = jid_create("room@conference.domain.org/my@nick/something");
assert_string_equals("room", result->localpart);
assert_string_equals("conference.domain.org", result->domainpart);
assert_string_equals("my@nick/something", result->resourcepart);
assert_string_equals("room@conference.domain.org", result->barejid);
assert_string_equals("room@conference.domain.org/my@nick/something", result->fulljid);
assert_string_equal("room", result->localpart);
assert_string_equal("conference.domain.org", result->domainpart);
assert_string_equal("my@nick/something", result->resourcepart);
assert_string_equal("room@conference.domain.org", result->barejid);
assert_string_equal("room@conference.domain.org/my@nick/something", result->fulljid);
}
void create_full_with_trailing_slash(void)
void create_full_with_trailing_slash(void **state)
{
Jid *result = jid_create("room@conference.domain.org/nick/");
assert_string_equals("room", result->localpart);
assert_string_equals("conference.domain.org", result->domainpart);
assert_string_equals("nick/", result->resourcepart);
assert_string_equals("room@conference.domain.org", result->barejid);
assert_string_equals("room@conference.domain.org/nick/", result->fulljid);
}
void register_jid_tests(void)
{
TEST_MODULE("jid tests");
TEST(create_jid_from_null_returns_null);
TEST(create_jid_from_empty_string_returns_null);
TEST(create_jid_from_full_returns_full);
TEST(create_jid_from_full_returns_bare);
TEST(create_jid_from_full_returns_resourcepart);
TEST(create_jid_from_full_returns_localpart);
TEST(create_jid_from_full_returns_domainpart);
TEST(create_jid_from_full_nolocal_returns_full);
TEST(create_jid_from_full_nolocal_returns_bare);
TEST(create_jid_from_full_nolocal_returns_resourcepart);
TEST(create_jid_from_full_nolocal_returns_domainpart);
TEST(create_jid_from_full_nolocal_returns_null_localpart);
TEST(create_jid_from_bare_returns_null_full);
TEST(create_jid_from_bare_returns_null_resource);
TEST(create_jid_from_bare_returns_bare);
TEST(create_jid_from_bare_returns_localpart);
TEST(create_jid_from_bare_returns_domainpart);
TEST(create_room_jid_returns_room);
TEST(create_room_jid_returns_nick);
TEST(create_with_slash_in_resource);
TEST(create_with_at_in_resource);
TEST(create_with_at_and_slash_in_resource);
TEST(create_full_with_trailing_slash);
assert_string_equal("room", result->localpart);
assert_string_equal("conference.domain.org", result->domainpart);
assert_string_equal("nick/", result->resourcepart);
assert_string_equal("room@conference.domain.org", result->barejid);
assert_string_equal("room@conference.domain.org/nick/", result->fulljid);
}

23
tests/test_jid.h Normal file
View File

@ -0,0 +1,23 @@
void create_jid_from_null_returns_null(void **state);
void create_jid_from_empty_string_returns_null(void **state);
void create_jid_from_full_returns_full(void **state);
void create_jid_from_full_returns_bare(void **state);
void create_jid_from_full_returns_resourcepart(void **state);
void create_jid_from_full_returns_localpart(void **state);
void create_jid_from_full_returns_domainpart(void **state);
void create_jid_from_full_nolocal_returns_full(void **state);
void create_jid_from_full_nolocal_returns_bare(void **state);
void create_jid_from_full_nolocal_returns_resourcepart(void **state);
void create_jid_from_full_nolocal_returns_domainpart(void **state);
void create_jid_from_full_nolocal_returns_null_localpart(void **state);
void create_jid_from_bare_returns_null_full(void **state);
void create_jid_from_bare_returns_null_resource(void **state);
void create_jid_from_bare_returns_bare(void **state);
void create_jid_from_bare_returns_localpart(void **state);
void create_jid_from_bare_returns_domainpart(void **state);
void create_room_jid_returns_room(void **state);
void create_room_jid_returns_nick(void **state);
void create_with_slash_in_resource(void **state);
void create_with_at_in_resource(void **state);
void create_with_at_and_slash_in_resource(void **state);
void create_full_with_trailing_slash(void **state);

View File

@ -6,6 +6,8 @@
#include "test_autocomplete.h"
#include "test_common.h"
#include "test_command.h"
#include "test_history.h"
#include "test_jid.h"
int main(int argc, char* argv[]) {
const UnitTest tests[] = {
@ -53,7 +55,45 @@ int main(int argc, char* argv[]) {
unit_test(add_two_and_complete_returns_second),
unit_test(add_two_adds_two),
unit_test(add_two_same_adds_one),
unit_test(add_two_same_updates)
};
unit_test(add_two_same_updates),
unit_test(previous_on_empty_returns_null),
unit_test(next_on_empty_returns_null),
unit_test(previous_once_returns_last),
unit_test(previous_twice_when_one_returns_first),
unit_test(previous_always_stops_at_first),
unit_test(previous_goes_to_correct_element),
unit_test(prev_then_next_returns_empty),
unit_test(prev_with_val_then_next_returns_val),
unit_test(prev_with_val_then_next_twice_returns_null),
unit_test(navigate_then_append_new),
unit_test(edit_item_mid_history),
unit_test(edit_previous_and_append),
unit_test(start_session_add_new_submit_previous),
unit_test(create_jid_from_null_returns_null),
unit_test(create_jid_from_empty_string_returns_null),
unit_test(create_jid_from_full_returns_full),
unit_test(create_jid_from_full_returns_bare),
unit_test(create_jid_from_full_returns_resourcepart),
unit_test(create_jid_from_full_returns_localpart),
unit_test(create_jid_from_full_returns_domainpart),
unit_test(create_jid_from_full_nolocal_returns_full),
unit_test(create_jid_from_full_nolocal_returns_bare),
unit_test(create_jid_from_full_nolocal_returns_resourcepart),
unit_test(create_jid_from_full_nolocal_returns_domainpart),
unit_test(create_jid_from_full_nolocal_returns_null_localpart),
unit_test(create_jid_from_bare_returns_null_full),
unit_test(create_jid_from_bare_returns_null_resource),
unit_test(create_jid_from_bare_returns_bare),
unit_test(create_jid_from_bare_returns_localpart),
unit_test(create_jid_from_bare_returns_domainpart),
unit_test(create_room_jid_returns_room),
unit_test(create_room_jid_returns_nick),
unit_test(create_with_slash_in_resource),
unit_test(create_with_at_in_resource),
unit_test(create_with_at_and_slash_in_resource),
unit_test(create_full_with_trailing_slash)
};
return run_tests(tests);
}