128 lines
2.6 KiB
C
128 lines
2.6 KiB
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#include "objmgr.h"
|
|
#include "unity.h"
|
|
#include "xstring.h"
|
|
|
|
void test_xstring_create(void)
|
|
{
|
|
objmgr_t mgr;
|
|
char* s1 = "Hello,world";
|
|
char* s2 = NULL;
|
|
int rc = 0;
|
|
myobj_t* obj;
|
|
|
|
objmgr_init(&mgr);
|
|
register_xstring(&mgr,4,4);
|
|
TEST_ASSERT_EQUAL(1, mgr.types.count);
|
|
|
|
s2 = create_obj_by_typename(&mgr, "xstring", s1);
|
|
TEST_ASSERT_NOT_NULL(s2);
|
|
obj = TO_MYOBJ(s2);
|
|
TEST_ASSERT_EQUAL(1, XSTRING_OBJ_TYPE_STRINGS(obj).count);
|
|
|
|
rc = strcmp(s1, s2);
|
|
TEST_ASSERT_EQUAL(0, rc);
|
|
|
|
objmgr_fini(&mgr);
|
|
}
|
|
|
|
void test_xstring_ref(void)
|
|
{
|
|
objmgr_t mgr;
|
|
char* s1 = NULL;
|
|
char* s2 = NULL;
|
|
myobj_t* obj;
|
|
|
|
objmgr_init(&mgr);
|
|
register_xstring(&mgr,4,4);
|
|
TEST_ASSERT_EQUAL(1, mgr.types.count);
|
|
|
|
s1 = create_obj_by_typename(&mgr, "xstring",
|
|
"Hello,world");
|
|
TEST_ASSERT_NOT_NULL(s1);
|
|
|
|
obj = TO_MYOBJ(s1);
|
|
TEST_ASSERT_EQUAL(1, XSTRING_OBJ_TYPE_STRINGS(obj).count);
|
|
|
|
s2 = (char*)obj_ref(s1, OBJREF_READ);
|
|
TEST_ASSERT_EQUAL(s1, s2);
|
|
|
|
TEST_ASSERT_EQUAL(2, obj->nref);
|
|
objmgr_fini(&mgr);
|
|
}
|
|
|
|
void test_xstring_deref(void)
|
|
{
|
|
objmgr_t mgr;
|
|
char* s1 = "Hello,world";
|
|
char* s2 = NULL;
|
|
int rc = 0;
|
|
myobj_t* obj;
|
|
|
|
objmgr_init(&mgr);
|
|
register_xstring(&mgr,4,4);
|
|
TEST_ASSERT_EQUAL(1, mgr.types.count);
|
|
|
|
s2 = create_obj_by_typename(&mgr, "xstring", s1);
|
|
TEST_ASSERT_NOT_NULL(s2);
|
|
|
|
rc = strcmp(s1, s2);
|
|
|
|
TEST_ASSERT_EQUAL(0, rc);
|
|
if (rc == 0) {
|
|
objtype_t *typeval;
|
|
|
|
obj = TO_MYOBJ(s2);
|
|
typeval = obj->type;
|
|
|
|
obj_deref(s2);
|
|
|
|
TEST_ASSERT_EQUAL(0, XSTRING_TYPE_STRINGS(typeval).count);
|
|
}
|
|
|
|
objmgr_fini(&mgr);
|
|
}
|
|
|
|
void test_xstring_share(void)
|
|
{
|
|
objmgr_t mgr;
|
|
char* s1 = "Hello,world";
|
|
char* s2 = NULL;
|
|
char* s3 = NULL;
|
|
int rc = 0;
|
|
|
|
objmgr_init(&mgr);
|
|
register_xstring(&mgr,4,4);
|
|
TEST_ASSERT_EQUAL(1, mgr.types.count);
|
|
|
|
s2 = create_obj_by_typename(&mgr, "xstring", s1);
|
|
TEST_ASSERT_NOT_NULL(s2);
|
|
|
|
rc = strcmp(s1, s2);
|
|
|
|
TEST_ASSERT_EQUAL(0, rc);
|
|
s3 = create_obj_by_typename(&mgr, "xstring", s1);
|
|
TEST_ASSERT_EQUAL(s2, s3);
|
|
if (1) {
|
|
myobj_t* obj;
|
|
|
|
obj = TO_MYOBJ(s3);
|
|
TEST_ASSERT_EQUAL(2, obj->nref);
|
|
}
|
|
|
|
objmgr_fini(&mgr);
|
|
}
|
|
|
|
void test_xstrings(void)
|
|
{
|
|
printf("\n>> xstring test\n\n");
|
|
RUN_TEST(test_xstring_create);
|
|
RUN_TEST(test_xstring_ref);
|
|
RUN_TEST(test_xstring_deref);
|
|
RUN_TEST(test_xstring_share);
|
|
|
|
return;
|
|
}
|