Add a simple unit test for widget_add_from_file()

This commit is contained in:
Pim van Pelt
2017-11-26 11:28:09 +01:00
parent b005dd8a26
commit 6985b30dc2
8 changed files with 854 additions and 8 deletions

View File

@ -1,5 +1,7 @@
#include "mgos.h"
#include "widget.h"
#include "frozen/frozen.h"
#include "common/queue.h"
struct widget_list_t {
struct widget_t *widget;
@ -84,3 +86,36 @@ void widget_remove(struct widget_t *widget) {
}
}
}
struct widget_t *widget_add_from_file(const char *fn, uint32_t timer_msec, widget_event_fn handler, void *user_data) {
char *json;
int x, y, w, h;
int type = 0;
char *label = NULL;
char *icon = NULL;
struct widget_t *widget=NULL;
json = json_fread(fn);
if (!json) {
LOG(LL_ERROR, ("%s: Could not json_fread()", fn));
widget=NULL; goto exit;
}
if (json_scanf(json, strlen(json), "{x:%d,y:%d,w:%d,h:%d}", &x, &y, &w, &h) != 4) {
LOG(LL_ERROR, ("%s: Incomplete JSON: require 'x', 'y', 'w', 'h' fields", fn));
widget=NULL; goto exit;
}
json_scanf(json, strlen(json), "{type:%d,label:%Q,icon:%Q}", &type, &label, &icon);
free(json);
LOG(LL_INFO, ("%s: x=%d y=%d w=%d h=%d type=%d label='%s' icon='%s'", fn, x, y, w, h, type, label?label:"(empty)",icon?icon:"(empty)"));
widget = widget_add(x, y, w, h, 0, NULL, NULL);
exit:
if (label) free(label);
if (icon) free(icon);
return widget;
(void) timer_msec;
(void) handler;
(void) user_data;
}