Add test to remove outlet and shutter.
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
NADAL Jean-Baptiste
2020-01-09 11:49:51 +01:00
parent 0291ee9c4d
commit 677b2edc8f
5 changed files with 113 additions and 25 deletions

View File

@@ -199,19 +199,22 @@ char *devices_manager_get(devices_manager_t *dm, const char *capability)
if (capability == kOutletEntry) if (capability == kOutletEntry)
{ {
output_node = devices_manager_outlets_to_json_object(dm);
} }
else if (capability == kShutterEntry) else if (capability == kShutterEntry)
{ {
output_node = devices_manager_shutters_to_json_object(dm);
} }
else if (capability == kSprinklerEntry) else if (capability == kSprinklerEntry)
{ {
output_node = devices_manager_sprinkler_to_json_object(dm); output_node = devices_manager_sprinklers_to_json_object(dm);
}
if (output_node != NULL) if (output_node != NULL)
{ {
output = strdup(json_object_to_json_string(output_node)); output = strdup(json_object_to_json_string(output_node));
json_object_put(output_node); json_object_put(output_node);
} }
}
return output; return output;
} }

View File

@@ -130,9 +130,10 @@ int create_outlet(devices_manager_t *dm, struct json_object *node)
int remove_outlet(devices_manager_t *dm, uint16_t id) int remove_outlet(devices_manager_t *dm, uint16_t id)
{ {
outlet_dio_t *outlet;
qlist_obj_t obj; qlist_obj_t obj;
outlet_dio_t *outlet_dio; int remove_id = -1;
int position = 0; int i = 0;
// Sanity Checks // Sanity Checks
if (dm == NULL) if (dm == NULL)
@@ -140,15 +141,25 @@ int remove_outlet(devices_manager_t *dm, uint16_t id)
memset((void *)&obj, 0, sizeof(obj)); memset((void *)&obj, 0, sizeof(obj));
while (qlist_getnext(dm->outlets, &obj, true)) while (qlist_getnext(dm->outlets, &obj, false) == true)
{ {
outlet_dio = obj.data; outlet = obj.data;
if (outlet_dio->device->id == id) if (outlet->device->id == id)
{ {
qlist_removeat(dm->outlets, position); remove_id = i;
break;
}
i++;
}
if (remove_id != -1)
{
outlet = qlist_popat(dm->outlets, remove_id, NULL);
if (outlet != NULL)
{
outlet_dio_free(outlet);
return 0; return 0;
} }
position++;
} }
return -1; return -1;
@@ -214,6 +225,31 @@ outlet_dio_t *get_outlet_by_id(devices_manager_t *dm, uint16_t id)
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
struct json_object *devices_manager_outlets_to_json_object(devices_manager_t *dm)
{
struct json_object *root_node;
qlist_obj_t obj;
outlet_dio_t *outlet;
// Sanity Checks
if (dm == NULL)
return NULL;
root_node = json_object_new_array();
memset((void *)&obj, 0, sizeof(obj));
while (qlist_getnext(dm->outlets, &obj, false))
{
outlet = obj.data;
json_object_array_add(root_node, outlet_dio_to_json_object(outlet));
}
return root_node;
}
/*--------------------------------------------------------------------------*/
int load_shutters(devices_manager_t *dm, struct json_object *node) int load_shutters(devices_manager_t *dm, struct json_object *node)
{ {
DEBUG("devicesManager-load_shutters\n"); DEBUG("devicesManager-load_shutters\n");
@@ -296,10 +332,10 @@ int create_shutter(devices_manager_t *dm, struct json_object *node)
int remove_shutter(devices_manager_t *dm, uint16_t id) int remove_shutter(devices_manager_t *dm, uint16_t id)
{ {
qlist_obj_t obj;
shutter_t *shutter; shutter_t *shutter;
int position = 0; qlist_obj_t obj;
int remove_position = -1; int remove_id = -1;
int i = 0;
// Sanity Checks // Sanity Checks
if (dm == NULL) if (dm == NULL)
@@ -307,22 +343,26 @@ int remove_shutter(devices_manager_t *dm, uint16_t id)
memset((void *)&obj, 0, sizeof(obj)); memset((void *)&obj, 0, sizeof(obj));
while (qlist_getnext(dm->shutters, &obj, true)) while (qlist_getnext(dm->shutters, &obj, false) == true)
{ {
shutter = obj.data; shutter = obj.data;
if (shutter->outlet_dio->device->id == id) if (shutter->outlet_dio->device->id == id)
{ {
qlist_removeat(dm->shutters, position); remove_id = i;
return 0; break;
} }
position++; i++;
} }
if (remove_position != -1) if (remove_id != -1)
{ {
qlist_removeat(dm->shutters, remove_position); shutter = qlist_popat(dm->shutters, remove_id, NULL);
if (shutter != NULL)
{
shutter_free(shutter);
return 0; return 0;
} }
}
return -1; return -1;
} }
@@ -387,6 +427,31 @@ shutter_t *get_shutter_by_id(devices_manager_t *dm, uint16_t id)
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
struct json_object *devices_manager_shutters_to_json_object(devices_manager_t *dm)
{
struct json_object *root_node;
qlist_obj_t obj;
shutter_t *shutter;
// Sanity Checks
if (dm == NULL)
return NULL;
root_node = json_object_new_array();
memset((void *)&obj, 0, sizeof(obj));
while (qlist_getnext(dm->shutters, &obj, false))
{
shutter = obj.data;
json_object_array_add(root_node, shutter_to_json_object(shutter));
}
return root_node;
}
/*--------------------------------------------------------------------------*/
int load_sprinklers(devices_manager_t *dm, struct json_object *node) int load_sprinklers(devices_manager_t *dm, struct json_object *node)
{ {
DEBUG("devicesManager-load_sprinkler\n"); DEBUG("devicesManager-load_sprinkler\n");
@@ -582,7 +647,7 @@ sprinkler_t *get_sprinkler_by_id(devices_manager_t *dm, uint16_t id)
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
struct json_object *devices_manager_sprinkler_to_json_object(devices_manager_t *dm) struct json_object *devices_manager_sprinklers_to_json_object(devices_manager_t *dm)
{ {
struct json_object *root_node; struct json_object *root_node;
qlist_obj_t obj; qlist_obj_t obj;

View File

@@ -45,6 +45,7 @@ extern int remove_outlet(devices_manager_t *dm, uint16_t id);
extern int update_outlet(devices_manager_t *dm, uint16_t id, struct json_object *node); extern int update_outlet(devices_manager_t *dm, uint16_t id, struct json_object *node);
extern int set_outlet_state(devices_manager_t *dm, uint16_t id, bool state); extern int set_outlet_state(devices_manager_t *dm, uint16_t id, bool state);
extern outlet_dio_t *get_outlet_by_id(devices_manager_t *dm, uint16_t id); extern outlet_dio_t *get_outlet_by_id(devices_manager_t *dm, uint16_t id);
extern struct json_object *devices_manager_outlets_to_json_object(devices_manager_t *dm);
/*-------------------------------- SHUTTERS -----------------------------------*/ /*-------------------------------- SHUTTERS -----------------------------------*/
extern int load_shutters(devices_manager_t *dm, struct json_object *node); extern int load_shutters(devices_manager_t *dm, struct json_object *node);
@@ -54,6 +55,7 @@ extern int remove_shutter(devices_manager_t *dm, uint16_t id);
extern int update_shutter(devices_manager_t *dm, uint16_t id, struct json_object *node); extern int update_shutter(devices_manager_t *dm, uint16_t id, struct json_object *node);
extern int set_shutter_state(devices_manager_t *dm, uint16_t id, bool state); extern int set_shutter_state(devices_manager_t *dm, uint16_t id, bool state);
extern shutter_t *get_shutter_by_id(devices_manager_t *dm, uint16_t id); extern shutter_t *get_shutter_by_id(devices_manager_t *dm, uint16_t id);
extern struct json_object *devices_manager_shutters_to_json_object(devices_manager_t *dm);
/*------------------------------- SPRINKLERS ----------------------------------*/ /*------------------------------- SPRINKLERS ----------------------------------*/
extern int load_sprinklers(devices_manager_t *dm, struct json_object *node); extern int load_sprinklers(devices_manager_t *dm, struct json_object *node);
@@ -63,6 +65,6 @@ extern int remove_sprinkler(devices_manager_t *dm, uint16_t id);
extern int update_sprinkler(devices_manager_t *dm, uint16_t id, struct json_object *node); extern int update_sprinkler(devices_manager_t *dm, uint16_t id, struct json_object *node);
extern int set_sprinkler_state(devices_manager_t *dm, uint16_t id, bool state); extern int set_sprinkler_state(devices_manager_t *dm, uint16_t id, bool state);
extern sprinkler_t *get_sprinkler_by_id(devices_manager_t *dm, uint16_t id); extern sprinkler_t *get_sprinkler_by_id(devices_manager_t *dm, uint16_t id);
extern struct json_object *devices_manager_sprinkler_to_json_object(devices_manager_t *dm); extern struct json_object *devices_manager_sprinklers_to_json_object(devices_manager_t *dm);
#endif /* _DEVICES_MANAGER_INTERNAL_H */ #endif /* _DEVICES_MANAGER_INTERNAL_H */

View File

@@ -29,6 +29,8 @@
#define kOutletTestNameTrue "{ \"id\": 1, \"name\": \"test_name\", \"state\": true, \"zone\": \"\", \"sender\": 0, \"switch\": 0 }" #define kOutletTestNameTrue "{ \"id\": 1, \"name\": \"test_name\", \"state\": true, \"zone\": \"\", \"sender\": 0, \"switch\": 0 }"
#define kOutletTestNameFalse "{ \"id\": 1, \"name\": \"test_name\", \"state\": false, \"zone\": \"\", \"sender\": 0, \"switch\": 0 }" #define kOutletTestNameFalse "{ \"id\": 1, \"name\": \"test_name\", \"state\": false, \"zone\": \"\", \"sender\": 0, \"switch\": 0 }"
#define kOutletTestNameFullFalse "{ \"id\": 1, \"name\": \"test_name\", \"speech_name\": \"speech_name\", \"state\": false, \"zone\": \"zone\", \"sender\": 123456, \"switch\": 77 }" #define kOutletTestNameFullFalse "{ \"id\": 1, \"name\": \"test_name\", \"speech_name\": \"speech_name\", \"state\": false, \"zone\": \"zone\", \"sender\": 123456, \"switch\": 77 }"
#define kOutletTestNameFull "[ { \"id\": 1, \"name\": \"test1\", \"state\": false, \"zone\": \"\", \"sender\": 0, \"switch\": 0 }, { \"id\": 2, \"name\": \"test2\", \"state\": false, \"zone\": \"\", \"sender\": 0, \"switch\": 0 }, { \"id\": 3, \"name\": \"test3\", \"state\": false, \"zone\": \"\", \"sender\": 0, \"switch\": 0 } ]"
#define kOutletTestRemoved "[ { \"id\": 1, \"name\": \"test1\", \"state\": false, \"zone\": \"\", \"sender\": 0, \"switch\": 0 }, { \"id\": 3, \"name\": \"test3\", \"state\": false, \"zone\": \"\", \"sender\": 0, \"switch\": 0 } ]"
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
@@ -39,6 +41,13 @@ TEST("Outlet - create set_state free\t")
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
TEST("Outlet - create 3 device remove 2\t")
{
device_create_three_devices_remove_second(kOutletEntry, kOutletTestNameFull, kOutletTestRemoved);
}
/*--------------------------------------------------------------------------*/
TEST("Outlet - create - Error case\t") TEST("Outlet - create - Error case\t")
{ {
device_create_error_case(kOutletEntry); device_create_error_case(kOutletEntry);

View File

@@ -29,6 +29,8 @@
#define kShutterTestNameTrue "{ \"id\": 1, \"name\": \"test_name\", \"state\": true, \"zone\": \"\", \"sender\": 0, \"switch\": 0, \"speed_up\": 0, \"speed_down\": 0 }" #define kShutterTestNameTrue "{ \"id\": 1, \"name\": \"test_name\", \"state\": true, \"zone\": \"\", \"sender\": 0, \"switch\": 0, \"speed_up\": 0, \"speed_down\": 0 }"
#define kShutterTestNameFalse "{ \"id\": 1, \"name\": \"test_name\", \"state\": false, \"zone\": \"\", \"sender\": 0, \"switch\": 0, \"speed_up\": 0, \"speed_down\": 0 }" #define kShutterTestNameFalse "{ \"id\": 1, \"name\": \"test_name\", \"state\": false, \"zone\": \"\", \"sender\": 0, \"switch\": 0, \"speed_up\": 0, \"speed_down\": 0 }"
#define kShutterTestNameFullFalse "{ \"id\": 1, \"name\": \"test_name\", \"state\": false, \"zone\": \"zone\", \"sender\": 123456, \"switch\": 77, \"speed_up\": 50, \"speed_down\": 60 }" #define kShutterTestNameFullFalse "{ \"id\": 1, \"name\": \"test_name\", \"state\": false, \"zone\": \"zone\", \"sender\": 123456, \"switch\": 77, \"speed_up\": 50, \"speed_down\": 60 }"
#define kShutterTestNameFull "[ { \"id\": 1, \"name\": \"test1\", \"state\": false, \"zone\": \"\", \"sender\": 0, \"switch\": 0, \"speed_up\": 0, \"speed_down\": 0 }, { \"id\": 2, \"name\": \"test2\", \"state\": false, \"zone\": \"\", \"sender\": 0, \"switch\": 0, \"speed_up\": 0, \"speed_down\": 0 }, { \"id\": 3, \"name\": \"test3\", \"state\": false, \"zone\": \"\", \"sender\": 0, \"switch\": 0, \"speed_up\": 0, \"speed_down\": 0 } ]"
#define kShutterTestRemoved "[ { \"id\": 1, \"name\": \"test1\", \"state\": false, \"zone\": \"\", \"sender\": 0, \"switch\": 0, \"speed_up\": 0, \"speed_down\": 0 }, { \"id\": 3, \"name\": \"test3\", \"state\": false, \"zone\": \"\", \"sender\": 0, \"switch\": 0, \"speed_up\": 0, \"speed_down\": 0 } ]"
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
@@ -39,6 +41,13 @@ TEST("Shutter - create set_state free\t")
/*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/
TEST("Shutter - create 3 device remove 2\t")
{
device_create_three_devices_remove_second(kShutterEntry, kShutterTestNameFull, kShutterTestRemoved);
}
/*--------------------------------------------------------------------------*/
TEST("Shutter - create - Error case\t") TEST("Shutter - create - Error case\t")
{ {
device_create_error_case(kShutterEntry); device_create_error_case(kShutterEntry);