Add function test and feature to remove sprinkler
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -469,19 +469,36 @@ int create_sprinkler(devices_manager_t *dm, struct json_object *node)
|
|||||||
|
|
||||||
int remove_sprinkler(devices_manager_t *dm, uint16_t id)
|
int remove_sprinkler(devices_manager_t *dm, uint16_t id)
|
||||||
{
|
{
|
||||||
qlist_obj_t *remove_obj;
|
|
||||||
sprinkler_t *sprinkler;
|
sprinkler_t *sprinkler;
|
||||||
|
qlist_obj_t obj;
|
||||||
|
int remove_id = -1;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
// Sanity Checks
|
// Sanity Checks
|
||||||
if (dm == NULL)
|
if (dm == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
remove_obj = qlist_popat(dm->sprinklers, id, NULL);
|
memset((void *)&obj, 0, sizeof(obj));
|
||||||
if (remove_obj != NULL)
|
|
||||||
|
while (qlist_getnext(dm->sprinklers, &obj, false) == true)
|
||||||
{
|
{
|
||||||
sprinkler = remove_obj->data;
|
sprinkler = obj.data;
|
||||||
sprinkler_free(sprinkler);
|
if (sprinkler->device->id == id)
|
||||||
return 0;
|
{
|
||||||
|
remove_id = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (remove_id != -1)
|
||||||
|
{
|
||||||
|
sprinkler = qlist_popat(dm->sprinklers, remove_id, NULL);
|
||||||
|
if (sprinkler != NULL)
|
||||||
|
{
|
||||||
|
sprinkler_free(sprinkler);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ void device_create_set_state_free(const char *capability, const char *test_name_
|
|||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
|
|
||||||
void device_create_three_devices_remove_second(const char *capability, const char *test_array)
|
void device_create_three_devices_remove_second(const char *capability, const char *test_array_full, const char *test_array_removed)
|
||||||
{
|
{
|
||||||
struct json_object *root_node;
|
struct json_object *root_node;
|
||||||
devices_manager_t *dm;
|
devices_manager_t *dm;
|
||||||
@@ -111,7 +111,12 @@ void device_create_three_devices_remove_second(const char *capability, const cha
|
|||||||
json_object_put(root_node);
|
json_object_put(root_node);
|
||||||
ASSERT_EQUAL_INT(ret, 0);
|
ASSERT_EQUAL_INT(ret, 0);
|
||||||
|
|
||||||
// Remove ID 1.
|
device_serialized = devices_manager_get(dm, capability);
|
||||||
|
// printf ("device: %s\n", device_serialized);
|
||||||
|
ASSERT_EQUAL_STR(device_serialized, test_array_full);
|
||||||
|
free(device_serialized);
|
||||||
|
|
||||||
|
// Remove ID 2.
|
||||||
root_node = json_object_new_object();
|
root_node = json_object_new_object();
|
||||||
json_object_object_add(root_node, k_entry_id, json_object_new_int(2));
|
json_object_object_add(root_node, k_entry_id, json_object_new_int(2));
|
||||||
ret = devices_manager_delete(dm, capability, root_node);
|
ret = devices_manager_delete(dm, capability, root_node);
|
||||||
@@ -120,7 +125,7 @@ void device_create_three_devices_remove_second(const char *capability, const cha
|
|||||||
|
|
||||||
device_serialized = devices_manager_get(dm, capability);
|
device_serialized = devices_manager_get(dm, capability);
|
||||||
// printf ("device: %s\n", device_serialized);
|
// printf ("device: %s\n", device_serialized);
|
||||||
ASSERT_EQUAL_STR(device_serialized, test_array);
|
ASSERT_EQUAL_STR(device_serialized, test_array_removed);
|
||||||
free(device_serialized);
|
free(device_serialized);
|
||||||
|
|
||||||
// Free the Object.
|
// Free the Object.
|
||||||
|
|||||||
@@ -29,7 +29,8 @@
|
|||||||
|
|
||||||
#define kSprinklerTestNameTrue "{ \"id\": 1, \"name\": \"test_name\", \"state\": true }"
|
#define kSprinklerTestNameTrue "{ \"id\": 1, \"name\": \"test_name\", \"state\": true }"
|
||||||
#define kSprinklerTestNameFalse "{ \"id\": 1, \"name\": \"test_name\", \"state\": false }"
|
#define kSprinklerTestNameFalse "{ \"id\": 1, \"name\": \"test_name\", \"state\": false }"
|
||||||
#define kSprinklerTestRemove "[ { \"id\": 1, \"name\": \"test1\", \"state\": false }, { \"id\": 3, \"name\": \"test3\", \"state\": false } ]"
|
#define kSprinklerTestNameFull "[ { \"id\": 1, \"name\": \"test1\", \"state\": false }, { \"id\": 2, \"name\": \"test2\", \"state\": false }, { \"id\": 3, \"name\": \"test3\", \"state\": false } ]"
|
||||||
|
#define kSprinklerTestRemoved "[ { \"id\": 1, \"name\": \"test1\", \"state\": false }, { \"id\": 3, \"name\": \"test3\", \"state\": false } ]"
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
|
|
||||||
@@ -42,7 +43,7 @@ TEST("Sprinkler - create set_state free\t")
|
|||||||
|
|
||||||
TEST("Sprinkler - create 3 device remove 2\t")
|
TEST("Sprinkler - create 3 device remove 2\t")
|
||||||
{
|
{
|
||||||
device_create_three_devices_remove_second(kSprinklerEntry, kSprinklerTestRemove);
|
device_create_three_devices_remove_second(kSprinklerEntry, kSprinklerTestNameFull, kSprinklerTestRemoved);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
|
|||||||
Reference in New Issue
Block a user