about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2013-01-13 00:19:56 +0000
committerJames Booth <boothj5@gmail.com>2013-01-13 00:19:56 +0000
commit3a22719bd7a59d0eaaa6206c7fd289825365b3ff (patch)
tree317bb2ab3f9a8fe567d9072f968547082a9236e1
parent6607b998728f6c2de8c0db09d491eb304a6ca192 (diff)
downloadprofani-tty-3a22719bd7a59d0eaaa6206c7fd289825365b3ff.tar.gz
Added jid_create_room_jid
-rw-r--r--src/jid.c12
-rw-r--r--src/jid.h1
-rw-r--r--tests/test_jid.c16
3 files changed, 29 insertions, 0 deletions
diff --git a/src/jid.c b/src/jid.c
index 4eef9384..04c69636 100644
--- a/src/jid.c
+++ b/src/jid.c
@@ -20,6 +20,7 @@
  *
  */
 
+#include <stdlib.h>
 #include <string.h>
 
 #include <glib.h>
@@ -98,6 +99,17 @@ jid_create(const gchar * const str)
     }
 }
 
+Jid *
+jid_create_room_jid(const char * const room, const char * const nick)
+{
+    Jid *result;
+    char *jid = create_full_room_jid(room, nick);
+    result = jid_create(jid);
+    free(jid);
+
+    return result;
+}
+
 /*
  * Given a full room JID of the form
  * room@server/nick
diff --git a/src/jid.h b/src/jid.h
index 3b172025..5a34c02e 100644
--- a/src/jid.h
+++ b/src/jid.h
@@ -36,6 +36,7 @@ struct jid_t {
 typedef struct jid_t Jid;
 
 Jid * jid_create(const gchar * const str);
+Jid * jid_create_room_jid(const char * const room, const char * const nick);
 
 gboolean jid_is_room(const char * const room_jid);
 char * create_full_room_jid(const char * const room,
diff --git a/tests/test_jid.c b/tests/test_jid.c
index c86054bd..99ae4f12 100644
--- a/tests/test_jid.c
+++ b/tests/test_jid.c
@@ -105,6 +105,20 @@ void create_jid_from_bare_returns_domainpart(void)
     assert_string_equals("mydomain", result->domainpart);
 }
 
+void create_room_jid_returns_room(void)
+{
+    Jid *result = jid_create_room_jid("room@conference.domain.org", "myname");
+
+    assert_string_equals("room@conference.domain.org", result->barejid);
+}
+
+void create_room_jid_returns_nick(void)
+{
+    Jid *result = jid_create_room_jid("room@conference.domain.org", "myname");
+
+    assert_string_equals("myname", result->resourcepart);
+}
+
 void register_jid_tests(void)
 {
     TEST_MODULE("jid tests");
@@ -125,4 +139,6 @@ void register_jid_tests(void)
     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);
 }