Merge pull request #60 from FirasSahliADLinktech/multiple_tests
Some missing unit tests and correct signature
This commit is contained in:
commit
69f563be5b
5 changed files with 159 additions and 8 deletions
|
@ -431,7 +431,7 @@ err:
|
|||
}
|
||||
|
||||
_Pre_satisfies_(entity & DDS_ENTITY_KIND_MASK)
|
||||
int
|
||||
dds_return_t
|
||||
dds_instance_get_key(
|
||||
dds_entity_t entity,
|
||||
dds_instance_handle_t inst,
|
||||
|
@ -458,7 +458,7 @@ dds_instance_get_key(
|
|||
if (dds_tkmap_get_key (map, topic->m_stopic, inst, data)) {
|
||||
ret = DDS_RETCODE_OK;
|
||||
} else{
|
||||
ret = DDS_ERRNO(DDS_RETCODE_PRECONDITION_NOT_MET, "No instance related with the provided entity is found");
|
||||
ret = DDS_ERRNO(DDS_RETCODE_BAD_PARAMETER, "No instance related with the provided entity is found");
|
||||
}
|
||||
|
||||
err:
|
||||
|
|
96
src/core/ddsc/tests/instance_get_key.c
Normal file
96
src/core/ddsc/tests/instance_get_key.c
Normal file
|
@ -0,0 +1,96 @@
|
|||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <criterion/criterion.h>
|
||||
#include <criterion/logging.h>
|
||||
|
||||
#include "os/os.h"
|
||||
#include "ddsc/dds.h"
|
||||
#include "RoundTrip.h"
|
||||
|
||||
static dds_entity_t participant = DDS_ENTITY_NIL;
|
||||
static dds_entity_t topic = DDS_ENTITY_NIL;
|
||||
static dds_entity_t publisher = DDS_ENTITY_NIL;
|
||||
static dds_entity_t writer = DDS_ENTITY_NIL;
|
||||
|
||||
static dds_instance_handle_t handle = DDS_HANDLE_NIL;
|
||||
|
||||
static RoundTripModule_Address data;
|
||||
|
||||
/* Fixture to create prerequisite entity */
|
||||
static void setup(void)
|
||||
{
|
||||
participant = dds_create_participant(DDS_DOMAIN_DEFAULT, NULL, NULL);
|
||||
cr_assert_gt(participant, 0);
|
||||
topic = dds_create_topic(participant, &RoundTripModule_Address_desc, "ddsc_instance_get_key", NULL, NULL);
|
||||
cr_assert_gt(topic, 0);
|
||||
|
||||
publisher = dds_create_publisher(participant, NULL, NULL);
|
||||
cr_assert_gt(publisher, 0);
|
||||
|
||||
writer = dds_create_writer(publisher, topic, NULL, NULL);
|
||||
cr_assert_gt(writer, 0);
|
||||
|
||||
memset(&data, 0, sizeof(data));
|
||||
data.ip = os_strdup("some data");
|
||||
cr_assert_not_null(data.ip);
|
||||
data.port = 1;
|
||||
}
|
||||
|
||||
/* Fixture to delete prerequisite entity */
|
||||
static void teardown(void)
|
||||
{
|
||||
RoundTripModule_Address_free(&data, DDS_FREE_CONTENTS);
|
||||
|
||||
dds_delete(writer);
|
||||
dds_delete(publisher);
|
||||
dds_delete(topic);
|
||||
dds_delete(participant);
|
||||
}
|
||||
|
||||
Test(ddsc_instance_get_key, bad_entity, .init=setup, .fini=teardown)
|
||||
{
|
||||
dds_return_t ret;
|
||||
|
||||
ret = dds_instance_get_key(participant, handle, &data);
|
||||
cr_assert_eq(dds_err_nr(ret), DDS_RETCODE_BAD_PARAMETER, "returned %d", dds_err_nr(ret));
|
||||
}
|
||||
|
||||
Test(ddsc_instance_get_key, null_data, .init=setup, .fini=teardown)
|
||||
{
|
||||
dds_return_t ret;
|
||||
|
||||
ret = dds_register_instance(writer, &handle, NULL);
|
||||
cr_assert_eq(dds_err_nr(ret), DDS_RETCODE_BAD_PARAMETER, "Argument data is NULL");
|
||||
}
|
||||
|
||||
Test(ddsc_instance_get_key, null_handle, .init=setup, .fini=teardown)
|
||||
{
|
||||
dds_return_t ret;
|
||||
ret = dds_register_instance(writer, &handle, &data);
|
||||
cr_assert_eq(ret, DDS_RETCODE_OK, "dds_register_instance succeeded (ret: %d)", dds_err_nr(ret));
|
||||
|
||||
ret = dds_instance_get_key(writer, DDS_HANDLE_NIL, &data);
|
||||
cr_assert_eq(dds_err_nr(ret), DDS_RETCODE_BAD_PARAMETER, "Argument data is not null, but handle is null");
|
||||
}
|
||||
|
||||
Test(ddsc_instance_get_key, registered_instance, .init=setup, .fini=teardown)
|
||||
{
|
||||
dds_return_t ret;
|
||||
RoundTripModule_Address key_data;
|
||||
|
||||
ret = dds_register_instance(writer, &handle, &data);
|
||||
cr_assert_eq(ret, DDS_RETCODE_OK, "dds_register_instance succeeded (ret: %d)", dds_err_nr(ret));
|
||||
|
||||
memset(&key_data, 0, sizeof(key_data));
|
||||
|
||||
ret = dds_instance_get_key(writer, handle, &key_data);
|
||||
|
||||
cr_assert_not_null(key_data.ip);
|
||||
cr_assert_eq(strcmp(key_data.ip, data.ip) , 0);
|
||||
cr_assert_eq(key_data.port, data.port);
|
||||
cr_assert_eq(dds_err_nr(ret), DDS_RETCODE_OK);
|
||||
|
||||
RoundTripModule_Address_free(&key_data, DDS_FREE_CONTENTS);
|
||||
}
|
||||
|
|
@ -14,7 +14,6 @@
|
|||
#include <criterion/criterion.h>
|
||||
#include <criterion/logging.h>
|
||||
|
||||
|
||||
/* We are deliberately testing some bad arguments that SAL will complain about.
|
||||
* So, silence SAL regarding these issues. */
|
||||
#ifdef _MSC_VER
|
||||
|
@ -240,6 +239,45 @@ qos_fini(void)
|
|||
/****************************************************************************
|
||||
* API tests
|
||||
****************************************************************************/
|
||||
Test(ddsc_qos, copy_bad_source, .init=qos_init, .fini=qos_fini)
|
||||
{
|
||||
dds_return_t result;
|
||||
|
||||
result = dds_qos_copy(g_qos, NULL);
|
||||
cr_assert_eq(dds_err_nr(result), DDS_RETCODE_BAD_PARAMETER, "returned %d", dds_err_nr(result));
|
||||
}
|
||||
|
||||
Test(ddsc_qos, copy_bad_destination, .init=qos_init, .fini=qos_fini)
|
||||
{
|
||||
dds_return_t result;
|
||||
|
||||
result = dds_qos_copy(NULL, g_qos);
|
||||
cr_assert_eq(dds_err_nr(result), DDS_RETCODE_BAD_PARAMETER, "returned %d", dds_err_nr(result));
|
||||
}
|
||||
|
||||
Test(ddsc_qos, copy_with_partition, .init=qos_init, .fini=qos_fini)
|
||||
{
|
||||
dds_return_t result;
|
||||
dds_qos_t *qos;
|
||||
struct pol_partition p = { 0, NULL };
|
||||
|
||||
qos = dds_qos_create();
|
||||
cr_assert_not_null(qos);
|
||||
|
||||
dds_qset_partition(g_qos, g_pol_partition.n, g_pol_partition.ps);
|
||||
result = dds_qos_copy(qos, g_qos);
|
||||
|
||||
cr_assert_eq(result, DDS_RETCODE_OK);
|
||||
dds_qget_partition(qos, &p.n, &p.ps);
|
||||
cr_assert_eq(p.n, g_pol_partition.n);
|
||||
|
||||
for (uint32_t cnt = 0; cnt < p.n; cnt++) {
|
||||
cr_assert_str_eq(p.ps[cnt], g_pol_partition.ps[cnt]);
|
||||
}
|
||||
|
||||
dds_qos_delete(qos);
|
||||
}
|
||||
|
||||
Test(ddsc_qos, userdata, .init=qos_init, .fini=qos_fini)
|
||||
{
|
||||
struct pol_userdata p = { NULL, 0 };
|
||||
|
|
17
src/core/ddsc/tests/time.c
Normal file
17
src/core/ddsc/tests/time.c
Normal file
|
@ -0,0 +1,17 @@
|
|||
#include <criterion/criterion.h>
|
||||
#include <criterion/logging.h>
|
||||
|
||||
#include "ddsc/dds.h"
|
||||
|
||||
Test(ddsc_time, request_time)
|
||||
{
|
||||
dds_time_t now, then;
|
||||
dds_duration_t pause = 1 * DDS_NSECS_IN_SEC;
|
||||
|
||||
now = dds_time();
|
||||
cr_assert_gt(now, 0);
|
||||
/* Sleep for 1 second, every platform should (hopefully) support that */
|
||||
dds_sleepfor(pause);
|
||||
then = dds_time();
|
||||
cr_assert_geq(then, now + pause);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue