mirror of
https://github.com/profanity-im/profanity.git
synced 2024-12-04 14:46:46 -05:00
Added contact module
This commit is contained in:
parent
30dbbad544
commit
6e46e8fec0
9
Makefile
9
Makefile
@ -7,8 +7,8 @@ CPPLIB = -lstdc++
|
|||||||
CFLAGS = -I ~/include -O3 $(WARNS) $(LIBS) `pkg-config --cflags glib-2.0`
|
CFLAGS = -I ~/include -O3 $(WARNS) $(LIBS) `pkg-config --cflags glib-2.0`
|
||||||
OBJS = log.o windows.o title_bar.o status_bar.o input_win.o jabber.o \
|
OBJS = log.o windows.o title_bar.o status_bar.o input_win.o jabber.o \
|
||||||
profanity.o util.o command.o history.o contact_list.o prof_history.o \
|
profanity.o util.o command.o history.o contact_list.o prof_history.o \
|
||||||
main.o
|
contact.o main.o
|
||||||
TESTOBJS = test_contact_list.o contact_list.o \
|
TESTOBJS = test_contact_list.o contact_list.o contact.o \
|
||||||
test_util.o test_prof_history.o prof_history.o util.o
|
test_util.o test_prof_history.o prof_history.o util.o
|
||||||
|
|
||||||
profanity: $(OBJS)
|
profanity: $(OBJS)
|
||||||
@ -24,11 +24,12 @@ profanity.o: log.h windows.h jabber.h command.h
|
|||||||
util.o: util.h
|
util.o: util.h
|
||||||
command.o: command.h util.h history.h contact_list.h
|
command.o: command.h util.h history.h contact_list.h
|
||||||
history.o: history.h prof_history.h
|
history.o: history.h prof_history.h
|
||||||
contact_list.o: contact_list.h
|
contact_list.o: contact_list.h contact.h
|
||||||
prof_history.o: prof_history.h
|
prof_history.o: prof_history.h
|
||||||
|
contact.o: contact.h
|
||||||
main.o: profanity.h
|
main.o: profanity.h
|
||||||
|
|
||||||
test_contact_list.o: contact_list.h
|
test_contact_list.o: contact_list.h contact.h
|
||||||
test_util.o: util.h
|
test_util.o: util.h
|
||||||
test_prof_history.o: prof_history.h
|
test_prof_history.o: prof_history.h
|
||||||
|
|
||||||
|
61
contact.c
Normal file
61
contact.c
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "contact.h"
|
||||||
|
|
||||||
|
struct p_contact_t {
|
||||||
|
char *name;
|
||||||
|
char *show;
|
||||||
|
char *status;
|
||||||
|
};
|
||||||
|
|
||||||
|
PContact p_contact_new(const char * const name, const char * const show,
|
||||||
|
const char * const status)
|
||||||
|
{
|
||||||
|
PContact contact = malloc(sizeof(struct p_contact_t));
|
||||||
|
contact->name = strdup(name);
|
||||||
|
|
||||||
|
if (show == NULL || (strcmp(show, "") == 0))
|
||||||
|
contact->show = strdup("online");
|
||||||
|
else
|
||||||
|
contact->show = strdup(show);
|
||||||
|
|
||||||
|
if (status != NULL)
|
||||||
|
contact->status = strdup(status);
|
||||||
|
else
|
||||||
|
contact->status = NULL;
|
||||||
|
|
||||||
|
return contact;
|
||||||
|
}
|
||||||
|
|
||||||
|
void p_contact_free(PContact contact)
|
||||||
|
{
|
||||||
|
free(contact->name);
|
||||||
|
|
||||||
|
if (contact->show != NULL) {
|
||||||
|
free(contact->show);
|
||||||
|
contact->show = NULL;
|
||||||
|
}
|
||||||
|
if (contact->status != NULL) {
|
||||||
|
free(contact->status);
|
||||||
|
contact->status = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
free(contact);
|
||||||
|
contact = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
char * p_contact_name(PContact contact)
|
||||||
|
{
|
||||||
|
return contact->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
char * p_contact_show(PContact contact)
|
||||||
|
{
|
||||||
|
return contact->show;
|
||||||
|
}
|
||||||
|
|
||||||
|
char * p_contact_status(PContact contact)
|
||||||
|
{
|
||||||
|
return contact->status;
|
||||||
|
}
|
13
contact.h
Normal file
13
contact.h
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#ifndef CONTACT_H
|
||||||
|
#define CONTACT_H
|
||||||
|
|
||||||
|
typedef struct p_contact_t *PContact;
|
||||||
|
|
||||||
|
PContact p_contact_new(const char * const name, const char * const show,
|
||||||
|
const char * const status);
|
||||||
|
void p_contact_free(PContact contact);
|
||||||
|
char * p_contact_name(PContact contact);
|
||||||
|
char * p_contact_show(PContact contact);
|
||||||
|
char * p_contact_status(PContact contact);
|
||||||
|
|
||||||
|
#endif
|
@ -24,6 +24,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "contact.h"
|
||||||
#include "contact_list.h"
|
#include "contact_list.h"
|
||||||
|
|
||||||
// internal contact list
|
// internal contact list
|
||||||
@ -37,9 +38,6 @@ static char * _search_str = NULL;
|
|||||||
static char * _search_contact_list_from(struct contact_node_t * curr);
|
static char * _search_contact_list_from(struct contact_node_t * curr);
|
||||||
static struct contact_node_t * _make_contact_node(const char * const name,
|
static struct contact_node_t * _make_contact_node(const char * const name,
|
||||||
const char * const show, const char * const status);
|
const char * const show, const char * const status);
|
||||||
static struct contact_t * _new_contact(const char * const name,
|
|
||||||
const char * const show, const char * const status);
|
|
||||||
static void _destroy_contact(struct contact_t *contact);
|
|
||||||
static struct contact_node_t * _copy_contact_list(struct contact_node_t *node);
|
static struct contact_node_t * _copy_contact_list(struct contact_node_t *node);
|
||||||
static void _insert_contact(struct contact_node_t *curr,
|
static void _insert_contact(struct contact_node_t *curr,
|
||||||
struct contact_node_t *prev, const char * const name,
|
struct contact_node_t *prev, const char * const name,
|
||||||
@ -51,8 +49,8 @@ void contact_list_clear(void)
|
|||||||
|
|
||||||
if (curr) {
|
if (curr) {
|
||||||
while(curr) {
|
while(curr) {
|
||||||
struct contact_t *contact = curr->contact;
|
PContact contact = curr->contact;
|
||||||
_destroy_contact(contact);
|
p_contact_free(contact);
|
||||||
curr = curr->next;
|
curr = curr->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,8 +64,8 @@ void contact_list_clear(void)
|
|||||||
void destroy_list(struct contact_node_t *list)
|
void destroy_list(struct contact_node_t *list)
|
||||||
{
|
{
|
||||||
while(list) {
|
while(list) {
|
||||||
struct contact_t *contact = list->contact;
|
PContact contact = list->contact;
|
||||||
_destroy_contact(contact);
|
p_contact_free(contact);
|
||||||
list = list->next;
|
list = list->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,8 +91,8 @@ int contact_list_remove(const char * const name)
|
|||||||
struct contact_node_t *prev = NULL;
|
struct contact_node_t *prev = NULL;
|
||||||
|
|
||||||
while(curr) {
|
while(curr) {
|
||||||
struct contact_t *contact = curr->contact;
|
PContact contact = curr->contact;
|
||||||
if (strcmp(contact->name, name) == 0) {
|
if (strcmp(p_contact_name(contact), name) == 0) {
|
||||||
if (prev)
|
if (prev)
|
||||||
prev->next = curr->next;
|
prev->next = curr->next;
|
||||||
else
|
else
|
||||||
@ -102,10 +100,11 @@ int contact_list_remove(const char * const name)
|
|||||||
|
|
||||||
// reset last found if it points at the node to be removed
|
// reset last found if it points at the node to be removed
|
||||||
if (_last_found != NULL)
|
if (_last_found != NULL)
|
||||||
if (strcmp(_last_found->contact->name, contact->name) == 0)
|
if (strcmp(p_contact_name(_last_found->contact),
|
||||||
|
p_contact_name(contact)) == 0)
|
||||||
_last_found = NULL;
|
_last_found = NULL;
|
||||||
|
|
||||||
_destroy_contact(contact);
|
p_contact_free(contact);
|
||||||
free(curr);
|
free(curr);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
@ -132,16 +131,16 @@ int contact_list_add(const char * const name, const char * const show,
|
|||||||
struct contact_node_t *prev = NULL;
|
struct contact_node_t *prev = NULL;
|
||||||
|
|
||||||
while(curr) {
|
while(curr) {
|
||||||
struct contact_t *curr_contact = curr->contact;
|
PContact curr_contact = curr->contact;
|
||||||
|
|
||||||
// insert
|
// insert
|
||||||
if (strcmp(curr_contact->name, name) > 0) {
|
if (strcmp(p_contact_name(curr_contact), name) > 0) {
|
||||||
_insert_contact(curr, prev, name, show, status);
|
_insert_contact(curr, prev, name, show, status);
|
||||||
return 0;
|
return 0;
|
||||||
// update
|
// update
|
||||||
} else if (strcmp(curr_contact->name, name) == 0) {
|
} else if (strcmp(p_contact_name(curr_contact), name) == 0) {
|
||||||
_destroy_contact(curr->contact);
|
p_contact_free(curr->contact);
|
||||||
curr->contact = _new_contact(name, show, status);
|
curr->contact = p_contact_new(name, show, status);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,11 +173,11 @@ struct contact_node_t * _copy_contact_list(struct contact_node_t *node)
|
|||||||
if (node == NULL) {
|
if (node == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
struct contact_t *curr_contact = node->contact;
|
PContact curr_contact = node->contact;
|
||||||
struct contact_node_t *copy =
|
struct contact_node_t *copy =
|
||||||
_make_contact_node(curr_contact->name,
|
_make_contact_node(p_contact_name(curr_contact),
|
||||||
curr_contact->show,
|
p_contact_show(curr_contact),
|
||||||
curr_contact->status);
|
p_contact_status(curr_contact));
|
||||||
|
|
||||||
copy->next = _copy_contact_list(node->next);
|
copy->next = _copy_contact_list(node->next);
|
||||||
|
|
||||||
@ -235,18 +234,21 @@ int get_size(struct contact_node_t *list)
|
|||||||
static char * _search_contact_list_from(struct contact_node_t * curr)
|
static char * _search_contact_list_from(struct contact_node_t * curr)
|
||||||
{
|
{
|
||||||
while(curr) {
|
while(curr) {
|
||||||
struct contact_t *curr_contact = curr->contact;
|
PContact curr_contact = curr->contact;
|
||||||
|
|
||||||
// match found
|
// match found
|
||||||
if (strncmp(curr_contact->name, _search_str, strlen(_search_str)) == 0) {
|
if (strncmp(p_contact_name(curr_contact),
|
||||||
|
_search_str,
|
||||||
|
strlen(_search_str)) == 0) {
|
||||||
char *result =
|
char *result =
|
||||||
(char *) malloc((strlen(curr_contact->name) + 1) * sizeof(char));
|
(char *) malloc((strlen(p_contact_name(curr_contact)) + 1)
|
||||||
|
* sizeof(char));
|
||||||
|
|
||||||
// set pointer to last found
|
// set pointer to last found
|
||||||
_last_found = curr;
|
_last_found = curr;
|
||||||
|
|
||||||
// return the contact, must be free'd by caller
|
// return the contact, must be free'd by caller
|
||||||
strcpy(result, curr_contact->name);
|
strcpy(result, p_contact_name(curr_contact));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,55 +263,12 @@ static struct contact_node_t * _make_contact_node(const char * const name,
|
|||||||
{
|
{
|
||||||
struct contact_node_t *new =
|
struct contact_node_t *new =
|
||||||
(struct contact_node_t *) malloc(sizeof(struct contact_node_t));
|
(struct contact_node_t *) malloc(sizeof(struct contact_node_t));
|
||||||
new->contact = _new_contact(name, show, status);
|
new->contact = p_contact_new(name, show, status);
|
||||||
new->next = NULL;
|
new->next = NULL;
|
||||||
|
|
||||||
return new;
|
return new;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct contact_t * _new_contact(const char * const name,
|
|
||||||
const char * const show, const char * const status)
|
|
||||||
{
|
|
||||||
struct contact_t *new =
|
|
||||||
(struct contact_t *) malloc(sizeof(struct contact_t));
|
|
||||||
new->name = (char *) malloc((strlen(name) + 1) * sizeof(char));
|
|
||||||
strcpy(new->name, name);
|
|
||||||
|
|
||||||
if (show == NULL || (strcmp(show, "") == 0)) {
|
|
||||||
new->show = (char *) malloc((strlen("online") + 1) * sizeof(char));
|
|
||||||
strcpy(new->show, "online");
|
|
||||||
} else {
|
|
||||||
new->show = (char *) malloc((strlen(show) + 1) * sizeof(char));
|
|
||||||
strcpy(new->show, show);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (status != NULL) {
|
|
||||||
new->status = (char *) malloc((strlen(status) + 1) * sizeof(char));
|
|
||||||
strcpy(new->status, status);
|
|
||||||
} else {
|
|
||||||
new->status = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return new;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void _destroy_contact(struct contact_t *contact)
|
|
||||||
{
|
|
||||||
free(contact->name);
|
|
||||||
|
|
||||||
if (contact->show != NULL) {
|
|
||||||
free(contact->show);
|
|
||||||
contact->show = NULL;
|
|
||||||
}
|
|
||||||
if (contact->status != NULL) {
|
|
||||||
free(contact->status);
|
|
||||||
contact->status = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
free(contact);
|
|
||||||
contact = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void _insert_contact(struct contact_node_t *curr,
|
static void _insert_contact(struct contact_node_t *curr,
|
||||||
struct contact_node_t *prev, const char * const name,
|
struct contact_node_t *prev, const char * const name,
|
||||||
const char * const show, const char * const status)
|
const char * const show, const char * const status)
|
||||||
|
@ -23,6 +23,8 @@
|
|||||||
#ifndef CONTACT_LIST_H
|
#ifndef CONTACT_LIST_H
|
||||||
#define CONTACT_LIST_H
|
#define CONTACT_LIST_H
|
||||||
|
|
||||||
|
#include "contact.h"
|
||||||
|
|
||||||
struct contact_t {
|
struct contact_t {
|
||||||
char *name;
|
char *name;
|
||||||
char *show;
|
char *show;
|
||||||
@ -30,7 +32,7 @@ struct contact_t {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct contact_node_t {
|
struct contact_node_t {
|
||||||
struct contact_t *contact;
|
PContact contact;
|
||||||
struct contact_node_t *next;
|
struct contact_node_t *next;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include <head-unit.h>
|
#include <head-unit.h>
|
||||||
|
|
||||||
|
#include "contact.h"
|
||||||
#include "contact_list.h"
|
#include "contact_list.h"
|
||||||
|
|
||||||
static void beforetest(void)
|
static void beforetest(void)
|
||||||
@ -33,9 +36,9 @@ static void first_element_correct(void)
|
|||||||
{
|
{
|
||||||
contact_list_add("James", NULL, NULL);
|
contact_list_add("James", NULL, NULL);
|
||||||
struct contact_node_t *list = get_contact_list();
|
struct contact_node_t *list = get_contact_list();
|
||||||
struct contact_t *james = list->contact;
|
PContact james = list->contact;
|
||||||
|
|
||||||
assert_string_equals("James", james->name);
|
assert_string_equals("James", p_contact_name(james));
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,11 +58,11 @@ static void first_and_second_elements_correct(void)
|
|||||||
contact_list_add("Dave", NULL, NULL);
|
contact_list_add("Dave", NULL, NULL);
|
||||||
struct contact_node_t *list = get_contact_list();
|
struct contact_node_t *list = get_contact_list();
|
||||||
|
|
||||||
struct contact_t *dave = list->contact;
|
PContact dave = list->contact;
|
||||||
struct contact_t *james = (list->next)->contact;
|
PContact james = (list->next)->contact;
|
||||||
|
|
||||||
assert_string_equals("James", james->name);
|
assert_string_equals("James", p_contact_name(james));
|
||||||
assert_string_equals("Dave", dave->name);
|
assert_string_equals("Dave", p_contact_name(dave));
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,13 +83,13 @@ static void first_three_elements_correct(void)
|
|||||||
contact_list_add("Dave", NULL, NULL);
|
contact_list_add("Dave", NULL, NULL);
|
||||||
contact_list_add("James", NULL, NULL);
|
contact_list_add("James", NULL, NULL);
|
||||||
struct contact_node_t *list = get_contact_list();
|
struct contact_node_t *list = get_contact_list();
|
||||||
struct contact_t *bob = list->contact;
|
PContact bob = list->contact;
|
||||||
struct contact_t *dave = (list->next)->contact;
|
PContact dave = (list->next)->contact;
|
||||||
struct contact_t *james = ((list->next)->next)->contact;
|
PContact james = ((list->next)->next)->contact;
|
||||||
|
|
||||||
assert_string_equals("James", james->name);
|
assert_string_equals("James", p_contact_name(james));
|
||||||
assert_string_equals("Dave", dave->name);
|
assert_string_equals("Dave", p_contact_name(dave));
|
||||||
assert_string_equals("Bob", bob->name);
|
assert_string_equals("Bob", p_contact_name(bob));
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,14 +100,14 @@ static void add_twice_at_beginning_adds_once(void)
|
|||||||
contact_list_add("Dave", NULL, NULL);
|
contact_list_add("Dave", NULL, NULL);
|
||||||
contact_list_add("Bob", NULL, NULL);
|
contact_list_add("Bob", NULL, NULL);
|
||||||
struct contact_node_t *list = get_contact_list();
|
struct contact_node_t *list = get_contact_list();
|
||||||
struct contact_t *bob = list->contact;
|
PContact bob = list->contact;
|
||||||
struct contact_t *dave = (list->next)->contact;
|
PContact dave = (list->next)->contact;
|
||||||
struct contact_t *james = ((list->next)->next)->contact;
|
PContact james = ((list->next)->next)->contact;
|
||||||
|
|
||||||
assert_int_equals(3, get_size(list));
|
assert_int_equals(3, get_size(list));
|
||||||
assert_string_equals("James", james->name);
|
assert_string_equals("James", p_contact_name(james));
|
||||||
assert_string_equals("Dave", dave->name);
|
assert_string_equals("Dave", p_contact_name(dave));
|
||||||
assert_string_equals("Bob", bob->name);
|
assert_string_equals("Bob", p_contact_name(bob));
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,14 +118,14 @@ static void add_twice_in_middle_adds_once(void)
|
|||||||
contact_list_add("James", NULL, NULL);
|
contact_list_add("James", NULL, NULL);
|
||||||
contact_list_add("Bob", NULL, NULL);
|
contact_list_add("Bob", NULL, NULL);
|
||||||
struct contact_node_t *list = get_contact_list();
|
struct contact_node_t *list = get_contact_list();
|
||||||
struct contact_t *bob = list->contact;
|
PContact bob = list->contact;
|
||||||
struct contact_t *dave = (list->next)->contact;
|
PContact dave = (list->next)->contact;
|
||||||
struct contact_t *james = ((list->next)->next)->contact;
|
PContact james = ((list->next)->next)->contact;
|
||||||
|
|
||||||
assert_int_equals(3, get_size(list));
|
assert_int_equals(3, get_size(list));
|
||||||
assert_string_equals("James", james->name);
|
assert_string_equals("James", p_contact_name(james));
|
||||||
assert_string_equals("Dave", dave->name);
|
assert_string_equals("Dave", p_contact_name(dave));
|
||||||
assert_string_equals("Bob", bob->name);
|
assert_string_equals("Bob", p_contact_name(bob));
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -133,14 +136,14 @@ static void add_twice_at_end_adds_once(void)
|
|||||||
contact_list_add("Bob", NULL, NULL);
|
contact_list_add("Bob", NULL, NULL);
|
||||||
contact_list_add("James", NULL, NULL);
|
contact_list_add("James", NULL, NULL);
|
||||||
struct contact_node_t *list = get_contact_list();
|
struct contact_node_t *list = get_contact_list();
|
||||||
struct contact_t *bob = list->contact;
|
PContact bob = list->contact;
|
||||||
struct contact_t *dave = (list->next)->contact;
|
PContact dave = (list->next)->contact;
|
||||||
struct contact_t *james = ((list->next)->next)->contact;
|
PContact james = ((list->next)->next)->contact;
|
||||||
|
|
||||||
assert_int_equals(3, get_size(list));
|
assert_int_equals(3, get_size(list));
|
||||||
assert_string_equals("James", james->name);
|
assert_string_equals("James", p_contact_name(james));
|
||||||
assert_string_equals("Dave", dave->name);
|
assert_string_equals("Dave", p_contact_name(dave));
|
||||||
assert_string_equals("Bob", bob->name);
|
assert_string_equals("Bob", p_contact_name(bob));
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,8 +175,8 @@ static void remove_first_when_two(void)
|
|||||||
struct contact_node_t *list = get_contact_list();
|
struct contact_node_t *list = get_contact_list();
|
||||||
|
|
||||||
assert_int_equals(1, get_size(list));
|
assert_int_equals(1, get_size(list));
|
||||||
struct contact_t *dave = list->contact;
|
PContact dave = list->contact;
|
||||||
assert_string_equals("Dave", dave->name);
|
assert_string_equals("Dave", p_contact_name(dave));
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -186,8 +189,8 @@ static void remove_second_when_two(void)
|
|||||||
struct contact_node_t *list = get_contact_list();
|
struct contact_node_t *list = get_contact_list();
|
||||||
|
|
||||||
assert_int_equals(1, get_size(list));
|
assert_int_equals(1, get_size(list));
|
||||||
struct contact_t *james = list->contact;
|
PContact james = list->contact;
|
||||||
assert_string_equals("James", james->name);
|
assert_string_equals("James", p_contact_name(james));
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -201,11 +204,11 @@ static void remove_first_when_three(void)
|
|||||||
struct contact_node_t *list = get_contact_list();
|
struct contact_node_t *list = get_contact_list();
|
||||||
|
|
||||||
assert_int_equals(2, get_size(list));
|
assert_int_equals(2, get_size(list));
|
||||||
struct contact_t *bob = list->contact;
|
PContact bob = list->contact;
|
||||||
struct contact_t *dave = (list->next)->contact;
|
PContact dave = (list->next)->contact;
|
||||||
|
|
||||||
assert_string_equals("Dave", dave->name);
|
assert_string_equals("Dave", p_contact_name(dave));
|
||||||
assert_string_equals("Bob", bob->name);
|
assert_string_equals("Bob", p_contact_name(bob));
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -219,11 +222,11 @@ static void remove_second_when_three(void)
|
|||||||
struct contact_node_t *list = get_contact_list();
|
struct contact_node_t *list = get_contact_list();
|
||||||
|
|
||||||
assert_int_equals(2, get_size(list));
|
assert_int_equals(2, get_size(list));
|
||||||
struct contact_t *bob = list->contact;
|
PContact bob = list->contact;
|
||||||
struct contact_t *james = (list->next)->contact;
|
PContact james = (list->next)->contact;
|
||||||
|
|
||||||
assert_string_equals("James", james->name);
|
assert_string_equals("James", p_contact_name(james));
|
||||||
assert_string_equals("Bob", bob->name);
|
assert_string_equals("Bob", p_contact_name(bob));
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -237,11 +240,11 @@ static void remove_third_when_three(void)
|
|||||||
struct contact_node_t *list = get_contact_list();
|
struct contact_node_t *list = get_contact_list();
|
||||||
|
|
||||||
assert_int_equals(2, get_size(list));
|
assert_int_equals(2, get_size(list));
|
||||||
struct contact_t *dave = list->contact;
|
PContact dave = list->contact;
|
||||||
struct contact_t *james = (list->next)->contact;
|
PContact james = (list->next)->contact;
|
||||||
|
|
||||||
assert_string_equals("James", james->name);
|
assert_string_equals("James", p_contact_name(james));
|
||||||
assert_string_equals("Dave", dave->name);
|
assert_string_equals("Dave", p_contact_name(dave));
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,9 +252,9 @@ static void test_show_when_value(void)
|
|||||||
{
|
{
|
||||||
contact_list_add("James", "away", NULL);
|
contact_list_add("James", "away", NULL);
|
||||||
struct contact_node_t *list = get_contact_list();
|
struct contact_node_t *list = get_contact_list();
|
||||||
struct contact_t *james = list->contact;
|
PContact james = list->contact;
|
||||||
|
|
||||||
assert_string_equals("away", james->show);
|
assert_string_equals("away", p_contact_show(james));
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -259,9 +262,9 @@ static void test_show_online_when_no_value(void)
|
|||||||
{
|
{
|
||||||
contact_list_add("James", NULL, NULL);
|
contact_list_add("James", NULL, NULL);
|
||||||
struct contact_node_t *list = get_contact_list();
|
struct contact_node_t *list = get_contact_list();
|
||||||
struct contact_t *james = list->contact;
|
PContact james = list->contact;
|
||||||
|
|
||||||
assert_string_equals("online", james->show);
|
assert_string_equals("online", p_contact_show(james));
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -269,9 +272,9 @@ static void test_show_online_when_empty_string(void)
|
|||||||
{
|
{
|
||||||
contact_list_add("James", "", NULL);
|
contact_list_add("James", "", NULL);
|
||||||
struct contact_node_t *list = get_contact_list();
|
struct contact_node_t *list = get_contact_list();
|
||||||
struct contact_t *james = list->contact;
|
PContact james = list->contact;
|
||||||
|
|
||||||
assert_string_equals("online", james->show);
|
assert_string_equals("online", p_contact_show(james));
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -279,9 +282,9 @@ static void test_status_when_value(void)
|
|||||||
{
|
{
|
||||||
contact_list_add("James", NULL, "I'm not here right now");
|
contact_list_add("James", NULL, "I'm not here right now");
|
||||||
struct contact_node_t *list = get_contact_list();
|
struct contact_node_t *list = get_contact_list();
|
||||||
struct contact_t *james = list->contact;
|
PContact james = list->contact;
|
||||||
|
|
||||||
assert_string_equals("I'm not here right now", james->status);
|
assert_string_equals("I'm not here right now", p_contact_status(james));
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -289,9 +292,9 @@ static void test_status_when_no_value(void)
|
|||||||
{
|
{
|
||||||
contact_list_add("James", NULL, NULL);
|
contact_list_add("James", NULL, NULL);
|
||||||
struct contact_node_t *list = get_contact_list();
|
struct contact_node_t *list = get_contact_list();
|
||||||
struct contact_t *james = list->contact;
|
PContact james = list->contact;
|
||||||
|
|
||||||
assert_is_null(james->status);
|
assert_is_null(p_contact_status(james));
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -302,9 +305,9 @@ static void update_show(void)
|
|||||||
struct contact_node_t *list = get_contact_list();
|
struct contact_node_t *list = get_contact_list();
|
||||||
|
|
||||||
assert_int_equals(1, get_size(list));
|
assert_int_equals(1, get_size(list));
|
||||||
struct contact_t *james = list->contact;
|
PContact james = list->contact;
|
||||||
assert_string_equals("James", james->name);
|
assert_string_equals("James", p_contact_name(james));
|
||||||
assert_string_equals("dnd", james->show);
|
assert_string_equals("dnd", p_contact_show(james));
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -315,9 +318,9 @@ static void set_show_to_null(void)
|
|||||||
struct contact_node_t *list = get_contact_list();
|
struct contact_node_t *list = get_contact_list();
|
||||||
|
|
||||||
assert_int_equals(1, get_size(list));
|
assert_int_equals(1, get_size(list));
|
||||||
struct contact_t *james = list->contact;
|
PContact james = list->contact;
|
||||||
assert_string_equals("James", james->name);
|
assert_string_equals("James", p_contact_name(james));
|
||||||
assert_string_equals("online", james->show);
|
assert_string_equals("online", p_contact_show(james));
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -328,9 +331,9 @@ static void update_status(void)
|
|||||||
struct contact_node_t *list = get_contact_list();
|
struct contact_node_t *list = get_contact_list();
|
||||||
|
|
||||||
assert_int_equals(1, get_size(list));
|
assert_int_equals(1, get_size(list));
|
||||||
struct contact_t *james = list->contact;
|
PContact james = list->contact;
|
||||||
assert_string_equals("James", james->name);
|
assert_string_equals("James", p_contact_name(james));
|
||||||
assert_string_equals("Gone to lunch", james->status);
|
assert_string_equals("Gone to lunch", p_contact_status(james));
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -341,9 +344,9 @@ static void set_status_to_null(void)
|
|||||||
struct contact_node_t *list = get_contact_list();
|
struct contact_node_t *list = get_contact_list();
|
||||||
|
|
||||||
assert_int_equals(1, get_size(list));
|
assert_int_equals(1, get_size(list));
|
||||||
struct contact_t *james = list->contact;
|
PContact james = list->contact;
|
||||||
assert_string_equals("James", james->name);
|
assert_string_equals("James", p_contact_name(james));
|
||||||
assert_is_null(james->status);
|
assert_is_null(p_contact_status(james));
|
||||||
destroy_list(list);
|
destroy_list(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
15
windows.c
15
windows.c
@ -22,9 +22,12 @@
|
|||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <ncurses.h>
|
#include <ncurses.h>
|
||||||
|
|
||||||
#include "windows.h"
|
#include "windows.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
#include "contact.h"
|
||||||
|
|
||||||
#define CONS_WIN_TITLE "_cons"
|
#define CONS_WIN_TITLE "_cons"
|
||||||
#define PAD_SIZE 200
|
#define PAD_SIZE 200
|
||||||
@ -299,14 +302,14 @@ void cons_show_online_contacts(struct contact_node_t *list)
|
|||||||
struct contact_node_t *curr = list;
|
struct contact_node_t *curr = list;
|
||||||
|
|
||||||
while(curr) {
|
while(curr) {
|
||||||
struct contact_t *contact = curr->contact;
|
PContact contact = curr->contact;
|
||||||
_win_show_time(_cons_win);
|
_win_show_time(_cons_win);
|
||||||
wattron(_cons_win, COLOR_PAIR(2));
|
wattron(_cons_win, COLOR_PAIR(2));
|
||||||
wprintw(_cons_win, "%s", contact->name);
|
wprintw(_cons_win, "%s", p_contact_name(contact));
|
||||||
if (contact->show)
|
if (p_contact_show(contact))
|
||||||
wprintw(_cons_win, " is %s", contact->show);
|
wprintw(_cons_win, " is %s", p_contact_show(contact));
|
||||||
if (contact->status)
|
if (p_contact_status(contact))
|
||||||
wprintw(_cons_win, ", \"%s\"", contact->status);
|
wprintw(_cons_win, ", \"%s\"", p_contact_status(contact));
|
||||||
wprintw(_cons_win, "\n");
|
wprintw(_cons_win, "\n");
|
||||||
wattroff(_cons_win, COLOR_PAIR(2));
|
wattroff(_cons_win, COLOR_PAIR(2));
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user