diff tests/test-channel.c @ 958:533639ec5e9c

misc: use sys/queue.h
author David Demelier <markand@malikania.fr>
date Thu, 21 Jan 2021 23:15:20 +0100
parents 95201fd9ad88
children f365e5be1261
line wrap: on
line diff
--- a/tests/test-channel.c	Thu Jan 21 15:34:25 2021 +0100
+++ b/tests/test-channel.c	Thu Jan 21 23:15:20 2021 +0100
@@ -24,33 +24,51 @@
 GREATEST_TEST
 basics_add(void)
 {
-	struct irc_channel ch = {0};
+	struct irc_channel *ch;
+	struct irc_channel_user *user;
+
+	ch = irc_channel_new("#test", NULL, true);
+	GREATEST_ASSERT_STR_EQ("#test", ch->name);
+	GREATEST_ASSERT_STR_EQ("", ch->password);
+	GREATEST_ASSERT(ch->joined);
 
-	irc_channel_add(&ch, "markand", '@');
-	GREATEST_ASSERT_EQ(ch.usersz, 1U);
-	GREATEST_ASSERT_EQ(ch.users[0].mode, '@');
-	GREATEST_ASSERT_STR_EQ(ch.users[0].nickname, "markand");
+	irc_channel_add(ch, "markand", 'o', '@');
+	user = LIST_FIRST(&ch->users);
+	GREATEST_ASSERT_EQ('o', user->mode);
+	GREATEST_ASSERT_EQ('@', user->symbol);
+	GREATEST_ASSERT_STR_EQ("markand", user->nickname);
 
-	irc_channel_add(&ch, "markand", '@');
-	GREATEST_ASSERT_EQ(ch.usersz, 1U);
-	GREATEST_ASSERT_EQ(ch.users[0].mode, '@');
-	GREATEST_ASSERT_STR_EQ(ch.users[0].nickname, "markand");
+	irc_channel_add(ch, "markand", '+', '@');
+	user = LIST_FIRST(&ch->users);
+	GREATEST_ASSERT_EQ('o', user->mode);
+	GREATEST_ASSERT_EQ('@', user->symbol);
+	GREATEST_ASSERT_STR_EQ("markand", user->nickname);
 
-	irc_channel_add(&ch, "jean", 0);
-	GREATEST_ASSERT_EQ(ch.usersz, 2U);
-	GREATEST_ASSERT_EQ(ch.users[0].mode, 0);
-	GREATEST_ASSERT_STR_EQ(ch.users[0].nickname, "jean");
-	GREATEST_ASSERT_EQ(ch.users[1].mode, '@');
-	GREATEST_ASSERT_STR_EQ(ch.users[1].nickname, "markand");
+	irc_channel_add(ch, "jean", 'h', '+');
+	user = LIST_FIRST(&ch->users);
+	GREATEST_ASSERT_EQ('h', user->mode);
+	GREATEST_ASSERT_EQ('+', user->symbol);
+	GREATEST_ASSERT_STR_EQ("jean", user->nickname);
+	user = LIST_NEXT(user, link);
+	GREATEST_ASSERT_EQ('o', user->mode);
+	GREATEST_ASSERT_EQ('@', user->symbol);
+	GREATEST_ASSERT_STR_EQ("markand", user->nickname);
 
-	irc_channel_add(&ch, "zoe", 0);
-	GREATEST_ASSERT_EQ(ch.usersz, 3U);
-	GREATEST_ASSERT_EQ(ch.users[0].mode, 0);
-	GREATEST_ASSERT_STR_EQ(ch.users[0].nickname, "jean");
-	GREATEST_ASSERT_EQ(ch.users[1].mode, '@');
-	GREATEST_ASSERT_STR_EQ(ch.users[1].nickname, "markand");
-	GREATEST_ASSERT_EQ(ch.users[2].mode, 0);
-	GREATEST_ASSERT_STR_EQ(ch.users[2].nickname, "zoe");
+	irc_channel_add(ch, "zoe", 0, 0);
+	user = LIST_FIRST(&ch->users);
+	GREATEST_ASSERT_EQ(0, user->mode);
+	GREATEST_ASSERT_EQ(0, user->symbol);
+	GREATEST_ASSERT_STR_EQ("zoe", user->nickname);
+	user = LIST_NEXT(user, link);
+	GREATEST_ASSERT_EQ('h', user->mode);
+	GREATEST_ASSERT_EQ('+', user->symbol);
+	GREATEST_ASSERT_STR_EQ("jean", user->nickname);
+	user = LIST_NEXT(user, link);
+	GREATEST_ASSERT_EQ('o', user->mode);
+	GREATEST_ASSERT_EQ('@', user->symbol);
+	GREATEST_ASSERT_STR_EQ("markand", user->nickname);
+
+	irc_channel_finish(ch);
 
 	GREATEST_PASS();
 }
@@ -58,58 +76,65 @@
 GREATEST_TEST
 basics_remove(void)
 {
-	struct irc_channel ch = {0};
+	struct irc_channel *ch;
+	struct irc_channel_user *user;
 
-	irc_channel_add(&ch, "markand", '@');
-	irc_channel_add(&ch, "jean", 0);
-	irc_channel_add(&ch, "zoe", 0);
+	ch = irc_channel_new("#test", NULL, true);
+
+	irc_channel_add(ch, "markand", 'o', '@');
+	irc_channel_add(ch, "jean", 0, 0);
+	irc_channel_add(ch, "zoe", 0, 0);
 
-	irc_channel_remove(&ch, "jean");
-	GREATEST_ASSERT_EQ(ch.usersz, 2U);
-	GREATEST_ASSERT_EQ(ch.users[0].mode, '@');
-	GREATEST_ASSERT_STR_EQ(ch.users[0].nickname, "markand");
-	GREATEST_ASSERT_EQ(ch.users[1].mode, 0);
-	GREATEST_ASSERT_STR_EQ(ch.users[1].nickname, "zoe");
+	irc_channel_remove(ch, "jean");
+	user = LIST_FIRST(&ch->users);
+	GREATEST_ASSERT_EQ(0, user->mode);
+	GREATEST_ASSERT_EQ(0, user->symbol);
+	GREATEST_ASSERT_STR_EQ("zoe", user->nickname);
+	user = LIST_NEXT(user, link);
+	GREATEST_ASSERT_EQ('o', user->mode);
+	GREATEST_ASSERT_EQ('@', user->symbol);
+	GREATEST_ASSERT_STR_EQ("markand", user->nickname);
 
-	irc_channel_remove(&ch, "zoe");
-	GREATEST_ASSERT_EQ(ch.usersz, 1U);
-	GREATEST_ASSERT_EQ(ch.users[0].mode, '@');
-	GREATEST_ASSERT_STR_EQ(ch.users[0].nickname, "markand");
+	irc_channel_remove(ch, "zoe");
+	user = LIST_FIRST(&ch->users);
+	GREATEST_ASSERT_EQ('o', user->mode);
+	GREATEST_ASSERT_EQ('@', user->symbol);
+	GREATEST_ASSERT_STR_EQ("markand", user->nickname);
 
-	irc_channel_remove(&ch, "markand");
-	GREATEST_ASSERT_EQ(ch.usersz, 0U);
-	GREATEST_ASSERT(!ch.users);
+	irc_channel_remove(ch, "markand");
+	GREATEST_ASSERT(!LIST_FIRST(&ch->users));
+
+	irc_channel_finish(ch);
 
 	GREATEST_PASS();
 }
 
 GREATEST_TEST
-basics_set_mode(void)
+basics_update(void)
 {
-	struct irc_channel ch = {0};
+	struct irc_channel *ch;
+	struct irc_channel_user *user;
 
-	irc_channel_add(&ch, "jean", '@');
-	irc_channel_set_user_mode(&ch, "jean", '+');
-	irc_channel_set_user_mode(&ch, "nobody", '+');
+	ch = irc_channel_new("#test", NULL, true);
 
-	GREATEST_ASSERT_EQ(ch.usersz, 1);
-	GREATEST_ASSERT_EQ(ch.users[0].mode, '+');
-	GREATEST_ASSERT_STR_EQ(ch.users[0].nickname, "jean");
-	GREATEST_PASS();
-}
+	irc_channel_add(ch, "markand", 'o', '@');
+	irc_channel_add(ch, "jean", 0, 0);
+	irc_channel_add(ch, "zoe", 0, 0);
+	
+	irc_channel_update(ch, "zoe", NULL, 'o', '@');
+	user = LIST_FIRST(&ch->users);
+	GREATEST_ASSERT_EQ('o', user->mode);
+	GREATEST_ASSERT_EQ('@', user->symbol);
+	GREATEST_ASSERT_STR_EQ("zoe", user->nickname);
 
-GREATEST_TEST
-basics_set_nick(void)
-{
-	struct irc_channel ch = {0};
+	irc_channel_update(ch, "zoe", "eoz", -1, -1);
+	user = LIST_FIRST(&ch->users);
+	GREATEST_ASSERT_EQ('o', user->mode);
+	GREATEST_ASSERT_EQ('@', user->symbol);
+	GREATEST_ASSERT_STR_EQ("eoz", user->nickname);
 
-	irc_channel_add(&ch, "jean", '@');
-	irc_channel_set_user_nick(&ch, "jean", "francis");
-	irc_channel_set_user_nick(&ch, "nobody", "francis");
+	irc_channel_finish(ch);
 
-	GREATEST_ASSERT_EQ(ch.usersz, 1);
-	GREATEST_ASSERT_EQ(ch.users[0].mode, '@');
-	GREATEST_ASSERT_STR_EQ(ch.users[0].nickname, "francis");
 	GREATEST_PASS();
 }
 
@@ -117,8 +142,7 @@
 {
 	GREATEST_RUN_TEST(basics_add);
 	GREATEST_RUN_TEST(basics_remove);
-	GREATEST_RUN_TEST(basics_set_mode);
-	GREATEST_RUN_TEST(basics_set_nick);
+	GREATEST_RUN_TEST(basics_update);
 }
 
 GREATEST_MAIN_DEFS();