Commit 7518800e authored by Simon Morlat's avatar Simon Morlat

integrate cast_test to cunit

parent c848bbc3
...@@ -27,25 +27,107 @@ ...@@ -27,25 +27,107 @@
/***************/ /***************/
typedef enum { typedef enum {
BELLE_SIP_DEBUG=1, BELLE_SIP_LOG_DEBUG=1,
BELLE_SIP_MESSAGE=1<<1, BELLE_SIP_LOG_MESSAGE=1<<1,
BELLE_SIP_WARNING=1<<2, BELLE_SIP_LOG_WARNING=1<<2,
BELLE_SIP_ERROR=1<<3, BELLE_SIP_LOG_ERROR=1<<3,
BELLE_SIP_FATAL=1<<4, BELLE_SIP_LOG_FATAL=1<<4,
BELLE_SIP_LOGLEV_END=1<<5 BELLE_SIP_LOG_END=1<<5
} belle_sip_log_level; } belle_sip_log_level;
#define BELLE_SIP_LOG_ALL (0xffff)
typedef void (*belle_sip_log_function_t)(belle_sip_log_level lev, const char *fmt, va_list args); typedef void (*belle_sip_log_function_t)(belle_sip_log_level lev, const char *fmt, va_list args);
BELLE_SIP_BEGIN_DECLS BELLE_SIP_BEGIN_DECLS
extern belle_sip_log_function_t belle_sip_logv_out;
extern unsigned int __belle_sip_log_mask;
#define belle_sip_log_level_enabled(level) (__belle_sip_log_mask & (level))
#if !defined(WIN32) && !defined(_WIN32_WCE)
#define belle_sip_logv(level,fmt,args) \
{\
if (belle_sip_logv_out!=NULL && belle_sip_log_level_enabled(level)) \
belle_sip_logv_out(level,fmt,args);\
if ((level)==BELLE_SIP_LOG_FATAL) abort();\
}while(0)
#else
void belle_sip_logv(int level, const char *fmt, va_list args);
#endif
#ifdef BELLE_SIP_DEBUG_MODE
static inline void belle_sip_debug(const char *fmt,...)
{
va_list args;
va_start (args, fmt);
belle_sip_logv(BELLE_SIP_LOG_DEBUG, fmt, args);
va_end (args);
}
#else
#define belle_sip_debug(...)
#endif
#ifdef BELLE_SIP_NOMESSAGE_MODE
#define belle_sip_log(...)
#define belle_sip_message(...)
#define belle_sip_warning(...)
#else
static inline void belle_sip_log(belle_sip_log_level lev, const char *fmt,...){
va_list args;
va_start (args, fmt);
belle_sip_logv(lev, fmt, args);
va_end (args);
}
static inline void belle_sip_message(const char *fmt,...)
{
va_list args;
va_start (args, fmt);
belle_sip_logv(BELLE_SIP_LOG_MESSAGE, fmt, args);
va_end (args);
}
static inline void belle_sip_warning(const char *fmt,...)
{
va_list args;
va_start (args, fmt);
belle_sip_logv(BELLE_SIP_LOG_WARNING, fmt, args);
va_end (args);
}
#endif
static inline void belle_sip_error(const char *fmt,...)
{
va_list args;
va_start (args, fmt);
belle_sip_logv(BELLE_SIP_LOG_ERROR, fmt, args);
va_end (args);
}
static inline void belle_sip_fatal(const char *fmt,...)
{
va_list args;
va_start (args, fmt);
belle_sip_logv(BELLE_SIP_LOG_FATAL, fmt, args);
va_end (args);
}
void belle_sip_set_log_file(FILE *file); void belle_sip_set_log_file(FILE *file);
void belle_sip_set_log_handler(belle_sip_log_function_t func); void belle_sip_set_log_handler(belle_sip_log_function_t func);
void belle_sip_set_log_level_mask(int levelmask); void belle_sip_set_log_level(int level);
BELLE_SIP_END_DECLS BELLE_SIP_END_DECLS
......
...@@ -279,87 +279,6 @@ belle_sip_list_t * belle_sip_list_free(belle_sip_list_t *list); ...@@ -279,87 +279,6 @@ belle_sip_list_t * belle_sip_list_free(belle_sip_list_t *list);
#define belle_sip_list_next(elem) ((elem)->next) #define belle_sip_list_next(elem) ((elem)->next)
extern belle_sip_log_function_t belle_sip_logv_out;
extern unsigned int __belle_sip_log_mask;
#define belle_sip_log_level_enabled(level) (__belle_sip_log_mask & (level))
#if !defined(WIN32) && !defined(_WIN32_WCE)
#define belle_sip_logv(level,fmt,args) \
{\
if (belle_sip_logv_out!=NULL && belle_sip_log_level_enabled(level)) \
belle_sip_logv_out(level,fmt,args);\
if ((level)==BELLE_SIP_FATAL) abort();\
}while(0)
#else
void belle_sip_logv(int level, const char *fmt, va_list args);
#endif
#ifdef BELLE_SIP_DEBUG_MODE
static inline void belle_sip_debug(const char *fmt,...)
{
va_list args;
va_start (args, fmt);
belle_sip_logv(BELLE_SIP_DEBUG, fmt, args);
va_end (args);
}
#else
#define belle_sip_debug(...)
#endif
#ifdef BELLE_SIP_NOMESSAGE_MODE
#define belle_sip_log(...)
#define belle_sip_message(...)
#define belle_sip_warning(...)
#else
static inline void belle_sip_log(belle_sip_log_level lev, const char *fmt,...){
va_list args;
va_start (args, fmt);
belle_sip_logv(lev, fmt, args);
va_end (args);
}
static inline void belle_sip_message(const char *fmt,...)
{
va_list args;
va_start (args, fmt);
belle_sip_logv(BELLE_SIP_MESSAGE, fmt, args);
va_end (args);
}
static inline void belle_sip_warning(const char *fmt,...)
{
va_list args;
va_start (args, fmt);
belle_sip_logv(BELLE_SIP_WARNING, fmt, args);
va_end (args);
}
#endif
static inline void belle_sip_error(const char *fmt,...)
{
va_list args;
va_start (args, fmt);
belle_sip_logv(BELLE_SIP_ERROR, fmt, args);
va_end (args);
}
static inline void belle_sip_fatal(const char *fmt,...)
{
va_list args;
va_start (args, fmt);
belle_sip_logv(BELLE_SIP_FATAL, fmt, args);
va_end (args);
}
......
...@@ -45,14 +45,14 @@ void belle_sip_set_log_handler(belle_sip_log_function_t func){ ...@@ -45,14 +45,14 @@ void belle_sip_set_log_handler(belle_sip_log_function_t func){
} }
unsigned int __belle_sip_log_mask=BELLE_SIP_WARNING|BELLE_SIP_ERROR|BELLE_SIP_FATAL; unsigned int __belle_sip_log_mask=BELLE_SIP_LOG_WARNING|BELLE_SIP_LOG_ERROR|BELLE_SIP_LOG_FATAL;
/** /**
* @ param levelmask a mask of BELLE_SIP_DEBUG, BELLE_SIP_MESSAGE, BELLE_SIP_WARNING, BELLE_SIP_ERROR * @ param level: either BELLE_SIP_LOG_DEBUG, BELLE_SIP_LOG_MESSAGE, BELLE_SIP_LOG_WARNING, BELLE_SIP_LOG_ERROR
* BELLE_SIP_FATAL . * BELLE_SIP_LOG_FATAL .
**/ **/
void belle_sip_set_log_level_mask(int levelmask){ void belle_sip_set_log_level(int level){
__belle_sip_log_mask=levelmask; __belle_sip_log_mask=(level<<1)-1;
} }
char * belle_sip_strdup_vprintf(const char *fmt, va_list ap) char * belle_sip_strdup_vprintf(const char *fmt, va_list ap)
...@@ -128,19 +128,19 @@ static void __belle_sip_logv_out(belle_sip_log_level lev, const char *fmt, va_li ...@@ -128,19 +128,19 @@ static void __belle_sip_logv_out(belle_sip_log_level lev, const char *fmt, va_li
char *msg; char *msg;
if (__log_file==NULL) __log_file=stderr; if (__log_file==NULL) __log_file=stderr;
switch(lev){ switch(lev){
case BELLE_SIP_DEBUG: case BELLE_SIP_LOG_DEBUG:
lname="debug"; lname="debug";
break; break;
case BELLE_SIP_MESSAGE: case BELLE_SIP_LOG_MESSAGE:
lname="message"; lname="message";
break; break;
case BELLE_SIP_WARNING: case BELLE_SIP_LOG_WARNING:
lname="warning"; lname="warning";
break; break;
case BELLE_SIP_ERROR: case BELLE_SIP_LOG_ERROR:
lname="error"; lname="error";
break; break;
case BELLE_SIP_FATAL: case BELLE_SIP_LOG_FATAL:
lname="fatal"; lname="fatal";
break; break;
default: default:
......
if BUILD_TESTS if BUILD_TESTS
noinst_PROGRAMS=belle_sip_tester cast_test basic_test belle_sip_object_describe noinst_PROGRAMS=belle_sip_tester basic_test belle_sip_object_describe
belle_sip_tester_SOURCES= belle_sip_tester.c \ belle_sip_tester_SOURCES= belle_sip_tester.c \
belle_sdp_tester.c \ belle_sdp_tester.c \
belle_sip_uri_tester.c \ belle_sip_uri_tester.c \
belle_sip_headers_tester.c \ belle_sip_headers_tester.c \
belle_sip_message_tester.c \ belle_sip_message_tester.c \
auth_helper_tester.c auth_helper_tester.c \
cast_test.c
belle_sip_tester_CFLAGS=$(CUNIT_CFLAGS) belle_sip_tester_CFLAGS=$(CUNIT_CFLAGS)
belle_sip_tester_LDFLAGS=$(CUNIT_LIBS) belle_sip_tester_LDFLAGS=$(CUNIT_LIBS)
cast_test_SOURCES=cast_test.c
basic_test_SOURCES=basic_test.c basic_test_SOURCES=basic_test.c
......
...@@ -25,7 +25,7 @@ int main(int argc, char *argv[]){ ...@@ -25,7 +25,7 @@ int main(int argc, char *argv[]){
belle_sip_provider_t *prov; belle_sip_provider_t *prov;
belle_sip_request_t *req; belle_sip_request_t *req;
belle_sip_set_log_level_mask(BELLE_SIP_LOG_ALL); belle_sip_set_log_level(BELLE_SIP_LOG_DEBUG);
lp=belle_sip_stack_create_listening_point(stack,"0.0.0.0",7060,"UDP"); lp=belle_sip_stack_create_listening_point(stack,"0.0.0.0",7060,"UDP");
prov=belle_sip_stack_create_provider(stack,lp); prov=belle_sip_stack_create_provider(stack,lp);
......
...@@ -17,14 +17,26 @@ ...@@ -17,14 +17,26 @@
*/ */
#include <stdio.h> #include <stdio.h>
#include "CUnit/Basic.h" #include "CUnit/Basic.h"
#include <belle-sip/belle-sip.h>
extern int belle_sip_uri_test_suite (); extern int belle_sip_uri_test_suite ();
extern int belle_sip_headers_test_suite (); extern int belle_sip_headers_test_suite ();
extern int belle_sip_message_test_suite (); extern int belle_sip_message_test_suite ();
extern int belle_sdp_test_suite(); extern int belle_sdp_test_suite();
extern int belle_sip_authentication_helper_suite (); extern int belle_sip_authentication_helper_suite ();
extern int belle_sip_cast_test_suite();
int main (int argc, char *argv[]) { int main (int argc, char *argv[]) {
if (argc>1){
if (strcmp(argv[1],"--help")==0){
fprintf(stderr,"%s \t--help\n\t\t\t--verbose",argv[0]);
return 0;
}else if (strcmp(argv[1],"--verbose")==0){
belle_sip_set_log_level(BELLE_SIP_LOG_DEBUG);
}
}
/* initialize the CUnit test registry */ /* initialize the CUnit test registry */
if (CUE_SUCCESS != CU_initialize_registry()) if (CUE_SUCCESS != CU_initialize_registry())
return CU_get_error(); return CU_get_error();
...@@ -36,6 +48,8 @@ int main (int argc, char *argv[]) { ...@@ -36,6 +48,8 @@ int main (int argc, char *argv[]) {
belle_sip_message_test_suite(); belle_sip_message_test_suite();
belle_sdp_test_suite(); belle_sdp_test_suite();
belle_sip_cast_test_suite();
belle_sip_authentication_helper_suite(); belle_sip_authentication_helper_suite();
/* Run all tests using the CUnit Basic interface */ /* Run all tests using the CUnit Basic interface */
......
...@@ -16,26 +16,53 @@ ...@@ -16,26 +16,53 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include <stdio.h> #include "CUnit/Basic.h"
#include "belle-sip/belle-sip.h" #include "belle-sip/belle-sip.h"
int main(int argc, char *argv[]){ static int init_cast_suite(){
return 0;
}
static int cleanup_cast_suite(){
return 0;
}
static void cast_test(){
belle_sip_stack_t *stack=belle_sip_stack_new(NULL); belle_sip_stack_t *stack=belle_sip_stack_new(NULL);
belle_sip_listening_point_t *lp=belle_sip_stack_create_listening_point(stack,"0.0.0.0",5060,"UDP"); belle_sip_listening_point_t *lp=belle_sip_stack_create_listening_point(stack,"0.0.0.0",5060,"UDP");
belle_sip_provider_t *provider=belle_sip_stack_create_provider(stack,lp); belle_sip_provider_t *provider=belle_sip_stack_create_provider(stack,lp);
belle_sip_server_transaction_t *st=belle_sip_provider_create_server_transaction(provider,NULL); belle_sip_server_transaction_t *st=belle_sip_provider_create_server_transaction(provider,NULL);
belle_sip_client_transaction_t *ct=belle_sip_provider_create_client_transaction(provider,NULL); belle_sip_client_transaction_t *ct=belle_sip_provider_create_client_transaction(provider,NULL);
belle_sip_transaction_t *t; belle_sip_transaction_t *t;
int tmp;
CU_ASSERT_PTR_NOT_NULL(stack);
CU_ASSERT_PTR_NOT_NULL(lp);
CU_ASSERT_PTR_NOT_NULL(provider);
CU_ASSERT_PTR_NOT_NULL(st);
CU_ASSERT_PTR_NOT_NULL(ct);
printf("Casting belle_sip_server_transaction_t to belle_sip_transaction_t\n"); belle_sip_message("Casting belle_sip_server_transaction_t to belle_sip_transaction_t");
t=BELLE_SIP_TRANSACTION(st); t=BELLE_SIP_TRANSACTION(st);
printf("Ok.\n"); CU_ASSERT_PTR_NOT_NULL(t);
printf("Casting belle_sip_client_transaction_t to belle_sip_transaction_t\n"); belle_sip_message("Ok.");
belle_sip_message("Casting belle_sip_client_transaction_t to belle_sip_transaction_t");
t=BELLE_SIP_TRANSACTION(ct); t=BELLE_SIP_TRANSACTION(ct);
printf("Ok.\n"); CU_ASSERT_PTR_NOT_NULL(t);
printf("Casting belle_sip_server_transaction_t to belle_sip_client_transaction_t\n"); belle_sip_message("Ok.");
ct=BELLE_SIP_CLIENT_TRANSACTION(st); tmp=BELLE_SIP_IS_INSTANCE_OF(st,belle_sip_client_transaction_t);
printf("Ooops we should have aborted before, t=%p\n",t); belle_sip_message("Casting belle_sip_server_transaction_t to belle_sip_client_transaction_t: %s",tmp ? "yes" : "no");
return 0; CU_ASSERT_EQUAL(tmp,0);
//ct=BELLE_SIP_CLIENT_TRANSACTION(st);
}
int belle_sip_cast_test_suite(){
CU_pSuite pSuite = CU_add_suite("Object inheritence", init_cast_suite, cleanup_cast_suite);
if (NULL == CU_add_test(pSuite, "casting transactions", cast_test)) {
return CU_get_error();
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment