#if LV_BUILD_TEST
#include "../lvgl.h"
#include "unity/unity.h"
#define LV_ARRAY_GET(array, index, type) ((type*)lv_array_at((array), (index)))
static const char * svg_str_1 = \
""
""
""
"";
void setUp(void)
{
}
void tearDown(void)
{
}
void testSvgParser(void)
{
lv_svg_node_t * svg = lv_svg_load_data(svg_str_1, lv_strlen(svg_str_1));
TEST_ASSERT_NOT_EQUAL(NULL, svg);
lv_svg_node_delete(svg);
}
void testNode(void)
{
lv_svg_node_t * svg = lv_svg_node_create(NULL);
TEST_ASSERT_NOT_EQUAL(NULL, svg);
lv_svg_node_delete(svg);
}
void testNodeTree(void)
{
lv_svg_node_t * root = lv_svg_node_create(NULL);
lv_svg_node_t * node1 = lv_svg_node_create(root);
lv_svg_node_t * node2 = lv_svg_node_create(node1);
lv_svg_node_t * node3 = lv_svg_node_create(root);
lv_svg_attr_t attr1;
attr1.id = LV_SVG_ATTR_X;
attr1.val_type = LV_SVG_ATTR_VALUE_DATA;
attr1.value.fval = 10.0f;
lv_array_push_back(&node3->attrs, &attr1);
TEST_ASSERT_EQUAL(lv_array_size(&node3->attrs), 1);
TEST_ASSERT_EQUAL_FLOAT((LV_ARRAY_GET(&node3->attrs, 0, lv_svg_attr_t))->value.fval, 10.0f);
lv_svg_node_delete(node2);
lv_svg_node_delete(root);
}
void testSvgElement(void)
{
const char * svg_1 = \
"";
lv_svg_node_t * svg_node1 = lv_svg_load_data(svg_1, lv_strlen(svg_1));
TEST_ASSERT_EQUAL(lv_array_size(&svg_node1->attrs), 2);
TEST_ASSERT_EQUAL_STRING((LV_ARRAY_GET(&svg_node1->attrs, 0, lv_svg_attr_t))->value.sval, "1.2");
TEST_ASSERT_EQUAL_STRING((LV_ARRAY_GET(&svg_node1->attrs, 1, lv_svg_attr_t))->value.sval, "tiny");
lv_svg_node_delete(svg_node1);
/* test viewBox */
const char * svg_viewbox0 = \
"";
lv_svg_node_t * svg_node_viewbox = lv_svg_load_data(svg_viewbox0, lv_strlen(svg_viewbox0));
TEST_ASSERT_EQUAL(0, LV_ARRAY_GET(&svg_node_viewbox->attrs, 0, lv_svg_attr_t)->class_type);
lv_svg_node_delete(svg_node_viewbox);
const char * svg_viewbox1 = \
"";
lv_svg_node_t * svg_node_viewbox1 = lv_svg_load_data(svg_viewbox1, lv_strlen(svg_viewbox1));
float ret1[4] = {0.0f, 0.0f, 10.0f, 10.0f};
TEST_ASSERT_EQUAL_FLOAT_ARRAY(ret1, (float *)(LV_ARRAY_GET(&svg_node_viewbox1->attrs, 0, lv_svg_attr_t))->value.val, 4);
lv_svg_node_delete(svg_node_viewbox1);
const char * svg_viewbox2 = \
"";
lv_svg_node_t * svg_node_viewbox2 = lv_svg_load_data(svg_viewbox2, lv_strlen(svg_viewbox2));
float ret2[4] = {-5.0f, 10.0f, 10.0f, -10.0f};
TEST_ASSERT_EQUAL_FLOAT_ARRAY(ret2, (float *)(LV_ARRAY_GET(&svg_node_viewbox2->attrs, 0, lv_svg_attr_t))->value.val, 4);
lv_svg_node_delete(svg_node_viewbox2);
const char * svg_viewbox3 = \
"";
lv_svg_node_t * svg_node_viewbox3 = lv_svg_load_data(svg_viewbox3, lv_strlen(svg_viewbox3));
TEST_ASSERT_EQUAL(0, LV_ARRAY_GET(&svg_node_viewbox3->attrs, 0, lv_svg_attr_t)->class_type);
lv_svg_node_delete(svg_node_viewbox3);
const char * svg_viewbox4 = \
"";
lv_svg_node_t * svg_node_viewbox4 = lv_svg_load_data(svg_viewbox4, lv_strlen(svg_viewbox4));
float ret4[4] = {-5.0f, -5.0f, 0.2f, 15.0f};
TEST_ASSERT_EQUAL_FLOAT_ARRAY(ret4, (float *)(LV_ARRAY_GET(&svg_node_viewbox4->attrs, 0, lv_svg_attr_t))->value.val, 4);
lv_svg_node_delete(svg_node_viewbox4);
/* width and height */
const char * svg_wh = \
"";
lv_svg_node_t * svg_node_wh = lv_svg_load_data(svg_wh, lv_strlen(svg_wh));
TEST_ASSERT_EQUAL_FLOAT((LV_ARRAY_GET(&svg_node_wh->attrs, 0, lv_svg_attr_t))->value.fval, 100.0f);
TEST_ASSERT_EQUAL_FLOAT((LV_ARRAY_GET(&svg_node_wh->attrs, 1, lv_svg_attr_t))->value.fval, 100.0f);
lv_svg_node_delete(svg_node_wh);
const char * svg_wh2 = \
"";
lv_svg_node_t * svg_node_wh2 = lv_svg_load_data(svg_wh2, lv_strlen(svg_wh2));
TEST_ASSERT_EQUAL_FLOAT((LV_ARRAY_GET(&svg_node_wh2->attrs, 0, lv_svg_attr_t))->value.fval, 377.9528f);
TEST_ASSERT_EQUAL_FLOAT((LV_ARRAY_GET(&svg_node_wh2->attrs, 1, lv_svg_attr_t))->value.fval, 377.9528f);
lv_svg_node_delete(svg_node_wh2);
const char * svg_wh3 = \
"";
lv_svg_node_t * svg_node_wh3 = lv_svg_load_data(svg_wh3, lv_strlen(svg_wh3));
TEST_ASSERT_EQUAL_FLOAT((LV_ARRAY_GET(&svg_node_wh3->attrs, 0, lv_svg_attr_t))->value.fval, 960.0f);
TEST_ASSERT_EQUAL_FLOAT((LV_ARRAY_GET(&svg_node_wh3->attrs, 1, lv_svg_attr_t))->value.fval, 160.0f);
lv_svg_node_delete(svg_node_wh3);
const char * svg_wh4 = \
"";
lv_svg_node_t * svg_node_wh4 = lv_svg_load_data(svg_wh4, lv_strlen(svg_wh4));
TEST_ASSERT_EQUAL_FLOAT((LV_ARRAY_GET(&svg_node_wh4->attrs, 0, lv_svg_attr_t))->value.fval, 160.0f);
TEST_ASSERT_EQUAL_FLOAT((LV_ARRAY_GET(&svg_node_wh4->attrs, 1, lv_svg_attr_t))->value.fval, 83.2f);
lv_svg_node_delete(svg_node_wh4);
const char * svg_wh5 = \
"";
lv_svg_node_t * svg_node_wh5 = lv_svg_load_data(svg_wh5, lv_strlen(svg_wh5));
TEST_ASSERT_EQUAL_FLOAT((LV_ARRAY_GET(&svg_node_wh5->attrs, 0, lv_svg_attr_t))->value.fval, 13.3333f);
TEST_ASSERT_EQUAL_FLOAT((LV_ARRAY_GET(&svg_node_wh5->attrs, 1, lv_svg_attr_t))->value.fval, 1.0f);
lv_svg_node_delete(svg_node_wh5);
/* preserveAspectRatio */
const char * svg_ar0 = \
"";
lv_svg_node_t * svg_node_ar = lv_svg_load_data(svg_ar0, lv_strlen(svg_ar0));
TEST_ASSERT_EQUAL(lv_array_size(&svg_node_ar->attrs), 1);
lv_svg_node_delete(svg_node_ar);
const char * svg_ar1 = \
"";
svg_node_ar = lv_svg_load_data(svg_ar1, lv_strlen(svg_ar1));
TEST_ASSERT_EQUAL((LV_ARRAY_GET(&svg_node_ar->attrs, 0, lv_svg_attr_t))->value.uval, 2);
lv_svg_node_delete(svg_node_ar);
const char * svg_ar2 = \
"";
svg_node_ar = lv_svg_load_data(svg_ar2, lv_strlen(svg_ar2));
TEST_ASSERT_EQUAL((LV_ARRAY_GET(&svg_node_ar->attrs, 0, lv_svg_attr_t))->value.uval, 5);
lv_svg_node_delete(svg_node_ar);
const char * svg_ar3 = \
"";
svg_node_ar = lv_svg_load_data(svg_ar3, lv_strlen(svg_ar3));
TEST_ASSERT_EQUAL((LV_ARRAY_GET(&svg_node_ar->attrs, 0, lv_svg_attr_t))->value.uval, 6);
lv_svg_node_delete(svg_node_ar);
const char * svg_ar4 = \
"";
svg_node_ar = lv_svg_load_data(svg_ar4, lv_strlen(svg_ar4));
TEST_ASSERT_EQUAL((LV_ARRAY_GET(&svg_node_ar->attrs, 0, lv_svg_attr_t))->value.uval, 8);
lv_svg_node_delete(svg_node_ar);
const char * svg_ar5 = \
"";
svg_node_ar = lv_svg_load_data(svg_ar5, lv_strlen(svg_ar5));
TEST_ASSERT_EQUAL((LV_ARRAY_GET(&svg_node_ar->attrs, 0, lv_svg_attr_t))->value.uval, 10);
lv_svg_node_delete(svg_node_ar);
const char * svg_ar6 = \
"";
svg_node_ar = lv_svg_load_data(svg_ar6, lv_strlen(svg_ar6));
TEST_ASSERT_EQUAL((LV_ARRAY_GET(&svg_node_ar->attrs, 0, lv_svg_attr_t))->value.uval, 13);
lv_svg_node_delete(svg_node_ar);
const char * svg_ar7 = \
"";
svg_node_ar = lv_svg_load_data(svg_ar7, lv_strlen(svg_ar7));
TEST_ASSERT_EQUAL((LV_ARRAY_GET(&svg_node_ar->attrs, 0, lv_svg_attr_t))->value.uval, 15);
lv_svg_node_delete(svg_node_ar);
const char * svg_ar8 = \
"";
svg_node_ar = lv_svg_load_data(svg_ar8, lv_strlen(svg_ar8));
TEST_ASSERT_EQUAL((LV_ARRAY_GET(&svg_node_ar->attrs, 0, lv_svg_attr_t))->value.uval, 16);
lv_svg_node_delete(svg_node_ar);
const char * svg_ar9 = \
"";
svg_node_ar = lv_svg_load_data(svg_ar9, lv_strlen(svg_ar9));
TEST_ASSERT_EQUAL((LV_ARRAY_GET(&svg_node_ar->attrs, 0, lv_svg_attr_t))->value.uval, 18);
lv_svg_node_delete(svg_node_ar);
const char * svg_ar10 = \
"";
svg_node_ar = lv_svg_load_data(svg_ar10, lv_strlen(svg_ar10));
TEST_ASSERT_EQUAL(lv_array_size(&svg_node_ar->attrs), 1);
lv_svg_node_delete(svg_node_ar);
}
void testPolylineElement(void)
{
const char * svg_poly1 = \
"";
lv_svg_node_t * svg_node_root = lv_svg_load_data(svg_poly1, lv_strlen(svg_poly1));
lv_svg_node_t * svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
TEST_ASSERT_EQUAL(((lv_svg_attr_values_list_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val)->length,
5);
lv_svg_node_delete(svg_node_root);
const char * svg_poly2 = \
"";
svg_node_root = lv_svg_load_data(svg_poly2, lv_strlen(svg_poly2));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
TEST_ASSERT_EQUAL(((lv_svg_attr_values_list_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val)->length,
3);
lv_svg_node_delete(svg_node_root);
const char * svg_poly3 = \
"";
svg_node_root = lv_svg_load_data(svg_poly3, lv_strlen(svg_poly3));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
TEST_ASSERT_EQUAL(((lv_svg_attr_values_list_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val)->length,
1);
lv_svg_node_delete(svg_node_root);
const char * svg_poly4 = \
"";
svg_node_root = lv_svg_load_data(svg_poly4, lv_strlen(svg_poly4));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
TEST_ASSERT_EQUAL(((lv_svg_attr_values_list_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val)->length,
0);
lv_svg_node_delete(svg_node_root);
const char * svg_poly5 = \
"";
svg_node_root = lv_svg_load_data(svg_poly5, lv_strlen(svg_poly5));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
TEST_ASSERT_EQUAL(lv_array_size(&svg_node->attrs), 0);
lv_svg_node_delete(svg_node_root);
}
void testPathElement(void)
{
const char * svg_path1 = \
"";
lv_svg_node_t * svg_node_root = lv_svg_load_data(svg_path1, lv_strlen(svg_path1));
lv_svg_node_t * svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
TEST_ASSERT_EQUAL(lv_array_size(&svg_node->attrs), 0);
lv_svg_node_delete(svg_node_root);
const char * svg_path2 = \
"";
svg_node_root = lv_svg_load_data(svg_path2, lv_strlen(svg_path2));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
TEST_ASSERT_EQUAL(((lv_svg_attr_values_list_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val)->length,
0);
lv_svg_node_delete(svg_node_root);
const char * svg_path3 = \
"";
svg_node_root = lv_svg_load_data(svg_path3, lv_strlen(svg_path3));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
TEST_ASSERT_EQUAL(((lv_svg_attr_values_list_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val)->length,
0);
lv_svg_node_delete(svg_node_root);
const char * svg_path4 = \
"";
svg_node_root = lv_svg_load_data(svg_path4, lv_strlen(svg_path4));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
TEST_ASSERT_EQUAL(((lv_svg_attr_values_list_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val)->length,
5);
lv_svg_node_delete(svg_node_root);
const char * svg_path5 = \
"";
svg_node_root = lv_svg_load_data(svg_path5, lv_strlen(svg_path5));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
TEST_ASSERT_EQUAL(((lv_svg_attr_values_list_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val)->length,
9);
uint32_t seg_size = sizeof(uint32_t) + sizeof(lv_svg_point_t);
lv_svg_attr_values_list_t * list = (lv_svg_attr_values_list_t *)(LV_ARRAY_GET(&svg_node->attrs, 0,
lv_svg_attr_t))->value.val;
lv_svg_attr_path_value_t * path = (lv_svg_attr_path_value_t *)(&list->data);
TEST_ASSERT_EQUAL(path->cmd, LV_SVG_PATH_CMD_MOVE_TO);
path = (lv_svg_attr_path_value_t *)((uint8_t *)&list->data + seg_size);
TEST_ASSERT_EQUAL(path->cmd, LV_SVG_PATH_CMD_LINE_TO);
path = (lv_svg_attr_path_value_t *)((uint8_t *)&list->data + seg_size * 2);
TEST_ASSERT_EQUAL(path->cmd, LV_SVG_PATH_CMD_LINE_TO);
TEST_ASSERT_EQUAL_FLOAT(((lv_svg_point_t *)(&path->data))->x, 400.0f);
TEST_ASSERT_EQUAL_FLOAT(((lv_svg_point_t *)(&path->data))->y, 450.0f);
path = (lv_svg_attr_path_value_t *)((uint8_t *)&list->data + seg_size * 7);
TEST_ASSERT_EQUAL(path->cmd, LV_SVG_PATH_CMD_LINE_TO);
TEST_ASSERT_EQUAL_FLOAT(((lv_svg_point_t *)(&path->data))->x, 600.0f);
TEST_ASSERT_EQUAL_FLOAT(((lv_svg_point_t *)(&path->data))->y, 650.0f);
lv_svg_node_delete(svg_node_root);
const char * svg_path6 = \
"";
svg_node_root = lv_svg_load_data(svg_path6, lv_strlen(svg_path6));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
TEST_ASSERT_EQUAL(((lv_svg_attr_values_list_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val)->length,
10);
lv_svg_node_delete(svg_node_root);
}
void testTransform(void)
{
const char * svg_tr1 = \
"";
lv_svg_node_t * svg_node_root = lv_svg_load_data(svg_tr1, lv_strlen(svg_tr1));
lv_svg_node_t * svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
TEST_ASSERT_EQUAL(lv_array_size(&svg_node->attrs), 0);
lv_svg_node_delete(svg_node_root);
const char * svg_tr2 = \
"";
svg_node_root = lv_svg_load_data(svg_tr2, lv_strlen(svg_tr2));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
TEST_ASSERT_EQUAL(lv_array_size(&svg_node->attrs), 1);
lv_svg_node_delete(svg_node_root);
const char * svg_tr3 = \
"";
svg_node_root = lv_svg_load_data(svg_tr3, lv_strlen(svg_tr3));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
lv_svg_matrix_t * matrix = (lv_svg_matrix_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val;
TEST_ASSERT_EQUAL_FLOAT(matrix->m[0][0], 1.0f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[1][1], 1.0f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[2][2], 1.0f);
lv_svg_node_delete(svg_node_root);
const char * svg_tr4 = \
"";
svg_node_root = lv_svg_load_data(svg_tr4, lv_strlen(svg_tr4));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
matrix = (lv_svg_matrix_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val;
TEST_ASSERT_EQUAL_FLOAT(matrix->m[0][0], 1.5f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[1][0], 0.0f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[0][1], 2.0f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[1][1], 2.0f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[0][2], 10.0f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[1][2], 20.0f);
lv_svg_node_delete(svg_node_root);
const char * svg_tr5 = \
"";
svg_node_root = lv_svg_load_data(svg_tr5, lv_strlen(svg_tr5));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
matrix = (lv_svg_matrix_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val;
TEST_ASSERT_EQUAL_FLOAT(matrix->m[0][2], 3.0f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[1][2], 4.0f);
lv_svg_node_delete(svg_node_root);
const char * svg_tr6 = \
"";
svg_node_root = lv_svg_load_data(svg_tr6, lv_strlen(svg_tr6));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
matrix = (lv_svg_matrix_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val;
TEST_ASSERT_EQUAL_FLOAT(matrix->m[0][0], 0.25f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[1][1], 0.25f);
lv_svg_node_delete(svg_node_root);
const char * svg_tr7 = \
"";
svg_node_root = lv_svg_load_data(svg_tr7, lv_strlen(svg_tr7));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
matrix = (lv_svg_matrix_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val;
TEST_ASSERT_EQUAL_FLOAT(matrix->m[0][2], 10.0f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[1][2], 0.0f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[0][0], 0.25f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[1][1], 0.25f);
lv_svg_node_delete(svg_node_root);
const char * svg_tr8 = \
"";
svg_node_root = lv_svg_load_data(svg_tr8, lv_strlen(svg_tr8));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
matrix = (lv_svg_matrix_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val;
TEST_ASSERT_EQUAL_FLOAT(matrix->m[0][2], 20.0f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[1][2], 0.0f);
lv_svg_node_delete(svg_node_root);
const char * svg_tr9 = \
"";
svg_node_root = lv_svg_load_data(svg_tr9, lv_strlen(svg_tr9));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
matrix = (lv_svg_matrix_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val;
TEST_ASSERT_EQUAL_FLOAT(matrix->m[0][2], 0.0f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[1][2], 0.0f);
lv_svg_node_delete(svg_node_root);
const char * svg_tr10 = \
"";
svg_node_root = lv_svg_load_data(svg_tr10, lv_strlen(svg_tr10));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
matrix = (lv_svg_matrix_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val;
TEST_ASSERT_EQUAL_FLOAT(matrix->m[0][1], 0.176327f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[1][0], 0.176327f);
lv_svg_node_delete(svg_node_root);
}
void testStrokeFill(void)
{
const char * svg_sf1 = \
"";
lv_svg_node_t * svg_node_root = lv_svg_load_data(svg_sf1, lv_strlen(svg_sf1));
lv_svg_node_t * svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
TEST_ASSERT_EQUAL(lv_array_size(&svg_node->attrs), 0);
lv_svg_node_delete(svg_node_root);
const char * svg_sf2 = \
"";
svg_node_root = lv_svg_load_data(svg_sf2, lv_strlen(svg_sf2));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
TEST_ASSERT_EQUAL(lv_array_size(&svg_node->attrs), 2);
lv_svg_node_delete(svg_node_root);
const char * svg_sf3 = \
"";
svg_node_root = lv_svg_load_data(svg_sf3, lv_strlen(svg_sf3));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
const char * str = (const char *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.sval;
TEST_ASSERT_EQUAL_STRING(str, "grad1");
lv_svg_node_delete(svg_node_root);
const char * svg_sf4 = \
"";
svg_node_root = lv_svg_load_data(svg_sf4, lv_strlen(svg_sf4));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
str = (const char *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.sval;
TEST_ASSERT_EQUAL_STRING(str, "");
lv_svg_node_delete(svg_node_root);
const char * svg_sf5 = \
"";
svg_node_root = lv_svg_load_data(svg_sf5, lv_strlen(svg_sf5));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
str = (const char *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.sval;
TEST_ASSERT_EQUAL_STRING(str, "grad2");
lv_svg_node_delete(svg_node_root);
const char * svg_sf6 = \
"";
svg_node_root = lv_svg_load_data(svg_sf6, lv_strlen(svg_sf6));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
uint32_t c = (LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.uval;
TEST_ASSERT_EQUAL(c, 0);
lv_svg_node_delete(svg_node_root);
const char * svg_sf7 = \
"";
svg_node_root = lv_svg_load_data(svg_sf7, lv_strlen(svg_sf7));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
c = (LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.uval;
TEST_ASSERT_EQUAL(c, 0xffffff);
lv_svg_node_delete(svg_node_root);
const char * svg_sf8 = \
"";
svg_node_root = lv_svg_load_data(svg_sf8, lv_strlen(svg_sf8));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
c = (LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.uval;
TEST_ASSERT_EQUAL(c, 0x808080);
lv_svg_node_delete(svg_node_root);
const char * svg_sf9 = \
"";
svg_node_root = lv_svg_load_data(svg_sf9, lv_strlen(svg_sf9));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
c = (LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.uval;
TEST_ASSERT_EQUAL(c, 0xff0000);
lv_svg_node_delete(svg_node_root);
const char * svg_sf10 = \
"";
svg_node_root = lv_svg_load_data(svg_sf10, lv_strlen(svg_sf10));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
c = (LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.uval;
TEST_ASSERT_EQUAL(c, 0xff8000);
lv_svg_node_delete(svg_node_root);
const char * svg_sf11 = \
"";
svg_node_root = lv_svg_load_data(svg_sf11, lv_strlen(svg_sf11));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
c = (LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.uval;
TEST_ASSERT_EQUAL(c, 0xff0000);
lv_svg_node_delete(svg_node_root);
}
void testStrokeFillAttrs(void)
{
const char * svg_sf0 = \
"";
lv_svg_node_t * svg_node_root = lv_svg_load_data(svg_sf0, lv_strlen(svg_sf0));
lv_svg_node_t * svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
TEST_ASSERT_EQUAL(lv_array_size(&svg_node->attrs), 0);
lv_svg_node_delete(svg_node_root);
const char * svg_sf1 = \
"";
svg_node_root = lv_svg_load_data(svg_sf1, lv_strlen(svg_sf1));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
float f1 = (LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.fval;
TEST_ASSERT_EQUAL_FLOAT(f1, 1.0f);
uint32_t f2 = (LV_ARRAY_GET(&svg_node->attrs, 1, lv_svg_attr_t))->value.ival;
TEST_ASSERT_EQUAL(f2, 3);
lv_svg_node_delete(svg_node_root);
const char * svg_sf2 = \
"";
svg_node_root = lv_svg_load_data(svg_sf2, lv_strlen(svg_sf2));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
uint32_t r1 = (LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.ival;
TEST_ASSERT_EQUAL(r1, LV_SVG_FILL_EVENODD);
float w1 = (LV_ARRAY_GET(&svg_node->attrs, 1, lv_svg_attr_t))->value.fval;
TEST_ASSERT_EQUAL_FLOAT(w1, 0.0f);
uint32_t l1 = (LV_ARRAY_GET(&svg_node->attrs, 2, lv_svg_attr_t))->value.uval;
TEST_ASSERT_EQUAL(l1, 1);
lv_svg_node_delete(svg_node_root);
const char * svg_sf3 = \
"";
svg_node_root = lv_svg_load_data(svg_sf3, lv_strlen(svg_sf3));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
uint32_t c1 = (LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.ival;
TEST_ASSERT_EQUAL(c1, LV_SVG_LINE_CAP_ROUND);
uint32_t c2 = (LV_ARRAY_GET(&svg_node->attrs, 1, lv_svg_attr_t))->value.ival;
TEST_ASSERT_EQUAL(c2, LV_SVG_LINE_JOIN_BEVEL);
uint32_t r2 = (LV_ARRAY_GET(&svg_node->attrs, 2, lv_svg_attr_t))->value.ival;
TEST_ASSERT_EQUAL(r2, LV_SVG_FILL_NONZERO);
lv_svg_node_delete(svg_node_root);
const char * svg_sf4 = \
"";
svg_node_root = lv_svg_load_data(svg_sf4, lv_strlen(svg_sf4));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
uint32_t c3 = (LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.ival;
TEST_ASSERT_EQUAL(c3, LV_SVG_LINE_CAP_SQUARE);
uint32_t c4 = (LV_ARRAY_GET(&svg_node->attrs, 1, lv_svg_attr_t))->value.ival;
TEST_ASSERT_EQUAL(c4, LV_SVG_LINE_JOIN_ROUND);
lv_svg_node_delete(svg_node_root);
const char * svg_sf5 = \
"";
svg_node_root = lv_svg_load_data(svg_sf5, lv_strlen(svg_sf5));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
uint32_t c5 = (LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.ival;
TEST_ASSERT_EQUAL(c5, LV_SVG_LINE_CAP_BUTT);
uint32_t c6 = (LV_ARRAY_GET(&svg_node->attrs, 1, lv_svg_attr_t))->value.ival;
TEST_ASSERT_EQUAL(c6, LV_SVG_LINE_JOIN_MITER);
lv_svg_node_delete(svg_node_root);
const char * svg_sf6 = \
"";
svg_node_root = lv_svg_load_data(svg_sf6, lv_strlen(svg_sf6));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
lv_svg_attr_values_list_t * list = (lv_svg_attr_values_list_t *)(LV_ARRAY_GET(&svg_node->attrs, 0,
lv_svg_attr_t))->value.val;
TEST_ASSERT_EQUAL(list->length, 5);
float * arr = (float *)(&list->data);
float ret[5] = {1.0f, 2.0f, 3.0f, 2.5f, 3.0f};
TEST_ASSERT_EQUAL_FLOAT_ARRAY(ret, arr, 5);
float c8 = (LV_ARRAY_GET(&svg_node->attrs, 1, lv_svg_attr_t))->value.fval;
TEST_ASSERT_EQUAL_FLOAT(c8, 1.2f);
float c9 = (LV_ARRAY_GET(&svg_node->attrs, 2, lv_svg_attr_t))->value.fval;
TEST_ASSERT_EQUAL_FLOAT(c9, 1.0f);
lv_svg_node_delete(svg_node_root);
}
void testTextAttrs(void)
{
const char * svg_sf0 = \
"";
lv_svg_node_t * svg_node_root = lv_svg_load_data(svg_sf0, lv_strlen(svg_sf0));
lv_svg_node_t * svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
float font_size = (LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.fval;
TEST_ASSERT_EQUAL_FLOAT(font_size, 16.0f);
const char * font_family = (LV_ARRAY_GET(&svg_node->attrs, 1, lv_svg_attr_t))->value.sval;
TEST_ASSERT_EQUAL_STRING(font_family, "arial");
lv_svg_node_t * svg_node1 = LV_SVG_NODE_CHILD(svg_node, 0);
const char * content = svg_node1->xml_id;
TEST_ASSERT_EQUAL_STRING(content, "hello world!");
lv_svg_node_delete(svg_node_root);
const char * svg_sf1 = \
"";
svg_node_root = lv_svg_load_data(svg_sf1, lv_strlen(svg_sf1));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
font_size = (LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.fval;
TEST_ASSERT_EQUAL_FLOAT(font_size, 256.0f);
const char * font_style = (LV_ARRAY_GET(&svg_node->attrs, 1, lv_svg_attr_t))->value.sval;
TEST_ASSERT_EQUAL_STRING(font_style, "italic ");
svg_node1 = LV_SVG_NODE_CHILD(svg_node, 0);
const char * content1 = svg_node1->xml_id;
TEST_ASSERT_EQUAL_STRING(content1, "hello");
svg_node1 = LV_SVG_NODE_CHILD(svg_node, 2);
const char * content2 = svg_node1->xml_id;
TEST_ASSERT_EQUAL_STRING(content2, "world!");
svg_node1 = LV_SVG_NODE_CHILD(svg_node, 1);
lv_svg_node_t * svg_node2 = LV_SVG_NODE_CHILD(svg_node1, 0);
const char * content3 = svg_node2->xml_id;
TEST_ASSERT_EQUAL_STRING(content3, "my");
lv_svg_node_delete(svg_node_root);
}
void testGradient(void)
{
const char * svg_gt1 = \
"";
lv_svg_node_t * svg_node_root = lv_svg_load_data(svg_gt1, lv_strlen(svg_gt1));
lv_svg_node_t * svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0);
TEST_ASSERT_EQUAL_STRING(svg_node->xml_id, "gt1");
lv_svg_node_t * svg_node1 = LV_SVG_NODE_CHILD(svg_node, 1);
uint32_t c1 = (LV_ARRAY_GET(&svg_node1->attrs, 0, lv_svg_attr_t))->value.uval;
TEST_ASSERT_EQUAL(c1, 0);
float o1 = (LV_ARRAY_GET(&svg_node1->attrs, 1, lv_svg_attr_t))->value.fval;
TEST_ASSERT_EQUAL_FLOAT(o1, 0.5f);
float o2 = (LV_ARRAY_GET(&svg_node1->attrs, 2, lv_svg_attr_t))->value.fval;
TEST_ASSERT_EQUAL_FLOAT(o2, 1.0f);
lv_svg_node_delete(svg_node_root);
const char * svg_gt2 = \
"";
svg_node_root = lv_svg_load_data(svg_gt2, lv_strlen(svg_gt2));
svg_node = LV_SVG_NODE_CHILD(svg_node_root, 0); //defs
svg_node1 = LV_SVG_NODE_CHILD(svg_node, 0);
TEST_ASSERT_EQUAL_STRING(svg_node1->xml_id, "gt2");
uint32_t g = (LV_ARRAY_GET(&svg_node1->attrs, 0, lv_svg_attr_t))->value.ival;
TEST_ASSERT_EQUAL(g, LV_SVG_GRADIENT_UNITS_USER_SPACE);
float cx = (LV_ARRAY_GET(&svg_node1->attrs, 1, lv_svg_attr_t))->value.fval;
TEST_ASSERT_EQUAL_FLOAT(cx, 400.0f);
float cy = (LV_ARRAY_GET(&svg_node1->attrs, 2, lv_svg_attr_t))->value.fval;
TEST_ASSERT_EQUAL_FLOAT(cy, 200.0f);
lv_svg_node_delete(svg_node_root);
}
void testBadCase(void)
{
const char * svg_b1 = \
"";
lv_svg_node_t * svg = lv_svg_load_data(svg_b1, lv_strlen(svg_b1));
TEST_ASSERT_EQUAL(NULL, svg);
lv_svg_node_delete(svg);
const char * svg_b2 = \
"";
svg = lv_svg_load_data(svg_b2, lv_strlen(svg_b2));
TEST_ASSERT_EQUAL(NULL, svg);
lv_svg_node_delete(svg);
const char * svg_b3 = \
"";
svg = lv_svg_load_data(svg_b3, lv_strlen(svg_b3));
TEST_ASSERT_EQUAL(NULL, svg);
lv_svg_node_delete(svg);
const char * svg_b4 = \
"";
svg = lv_svg_load_data(svg_b4, lv_strlen(svg_b4));
lv_svg_node_t * svg_node = LV_SVG_NODE_CHILD(svg, 0);
TEST_ASSERT_EQUAL(0, LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t)->class_type);
lv_svg_node_delete(svg);
const char * svg_b5 = \
"";
svg = lv_svg_load_data(svg_b5, lv_strlen(svg_b5));
svg_node = LV_SVG_NODE_CHILD(svg, 0);
lv_svg_matrix_t * matrix = (lv_svg_matrix_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val;
TEST_ASSERT_EQUAL_FLOAT(matrix->m[0][0], 1.0f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[1][1], 1.0f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[2][2], 1.0f);
lv_svg_node_delete(svg);
const char * svg_b6 = \
"";
svg = lv_svg_load_data(svg_b6, lv_strlen(svg_b6));
TEST_ASSERT_EQUAL(NULL, svg);
lv_svg_node_delete(svg);
const char * svg_b7 = \
"";
svg = lv_svg_load_data(svg_b7, lv_strlen(svg_b7));
TEST_ASSERT_EQUAL(NULL, svg);
lv_svg_node_delete(svg);
const char * svg_b8 = \
"";
svg = lv_svg_load_data(svg_b8, lv_strlen(svg_b8));
svg_node = LV_SVG_NODE_CHILD(svg, 0);
TEST_ASSERT_EQUAL(((lv_svg_attr_values_list_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val)->length,
3);
uint32_t seg_size = sizeof(uint32_t) + sizeof(lv_svg_point_t);
lv_svg_attr_values_list_t * list = (lv_svg_attr_values_list_t *)(LV_ARRAY_GET(&svg_node->attrs, 0,
lv_svg_attr_t))->value.val;
lv_svg_attr_path_value_t * path = (lv_svg_attr_path_value_t *)(&list->data);
TEST_ASSERT_EQUAL(path->cmd, LV_SVG_PATH_CMD_MOVE_TO);
TEST_ASSERT_EQUAL_FLOAT(((lv_svg_point_t *)(&path->data))->x, 100.0f);
TEST_ASSERT_EQUAL_FLOAT(((lv_svg_point_t *)(&path->data))->y, 150.0f);
path = (lv_svg_attr_path_value_t *)((uint8_t *)&list->data + seg_size);
TEST_ASSERT_EQUAL(path->cmd, LV_SVG_PATH_CMD_LINE_TO);
TEST_ASSERT_EQUAL_FLOAT(((lv_svg_point_t *)(&path->data))->x, 180.0f);
TEST_ASSERT_EQUAL_FLOAT(((lv_svg_point_t *)(&path->data))->y, 150.0f);
lv_svg_node_delete(svg);
const char * svg_b9 = \
"";
svg = lv_svg_load_data(svg_b9, lv_strlen(svg_b9));
svg_node = LV_SVG_NODE_CHILD(svg, 0);
TEST_ASSERT_EQUAL(((lv_svg_attr_values_list_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val)->length,
1);
seg_size = sizeof(uint32_t) + sizeof(lv_svg_point_t);
list = (lv_svg_attr_values_list_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val;
path = (lv_svg_attr_path_value_t *)(&list->data);
TEST_ASSERT_EQUAL(path->cmd, LV_SVG_PATH_CMD_MOVE_TO);
TEST_ASSERT_EQUAL_FLOAT(((lv_svg_point_t *)(&path->data))->x, 100.0f);
TEST_ASSERT_EQUAL_FLOAT(((lv_svg_point_t *)(&path->data))->y, 200.0f);
lv_svg_node_delete(svg);
const char * svg_b10 = \
"";
svg = lv_svg_load_data(svg_b10, lv_strlen(svg_b10));
TEST_ASSERT_EQUAL(NULL, svg);
lv_svg_node_delete(svg);
const char * svg_b11 = \
"";
svg = lv_svg_load_data(svg_b11, lv_strlen(svg_b11));
svg_node = LV_SVG_NODE_CHILD(svg, 0);
TEST_ASSERT_EQUAL(lv_array_size(&svg_node->attrs), 0);
TEST_ASSERT_EQUAL(LV_TREE_NODE(svg_node)->child_cnt, 0);
lv_svg_node_delete(svg);
const char * svg_b12 = \
"";
svg = lv_svg_load_data(svg_b12, lv_strlen(svg_b12));
svg_node = LV_SVG_NODE_CHILD(svg, 0);
TEST_ASSERT_EQUAL(lv_array_size(&svg_node->attrs), 0);
TEST_ASSERT_EQUAL(LV_TREE_NODE(svg_node)->child_cnt, 0);
lv_svg_node_delete(svg);
const char * svg_b13 = \
"";
svg = lv_svg_load_data(svg_b13, lv_strlen(svg_b13));
TEST_ASSERT_NOT_EQUAL(NULL, svg);
lv_svg_node_delete(svg);
const char * svg_b14 = \
"";
svg = lv_svg_load_data(svg_b14, lv_strlen(svg_b14));
TEST_ASSERT_NOT_EQUAL(NULL, svg);
lv_svg_node_delete(svg);
const char * svg_b15 = \
"";
svg = lv_svg_load_data(svg_b15, lv_strlen(svg_b15));
svg_node = LV_SVG_NODE_CHILD(svg, 0);
TEST_ASSERT_EQUAL(((lv_svg_attr_values_list_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val)->length,
5);
seg_size = sizeof(uint32_t) + sizeof(lv_svg_point_t);
list = (lv_svg_attr_values_list_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val;
path = (lv_svg_attr_path_value_t *)(&list->data);
TEST_ASSERT_EQUAL(path->cmd, LV_SVG_PATH_CMD_MOVE_TO);
TEST_ASSERT_EQUAL_FLOAT(((lv_svg_point_t *)(&path->data))->x, -122.3f);
TEST_ASSERT_EQUAL_FLOAT(((lv_svg_point_t *)(&path->data))->y, 84.285f);
lv_svg_node_delete(svg);
const char * svg_b16 = \
"";
svg = lv_svg_load_data(svg_b16, lv_strlen(svg_b16));
svg_node = LV_SVG_NODE_CHILD(svg, 0);
matrix = (lv_svg_matrix_t *)(LV_ARRAY_GET(&svg_node->attrs, 0, lv_svg_attr_t))->value.val;
TEST_ASSERT_EQUAL_FLOAT(matrix->m[0][0], 1.7656463f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[1][0], 0.0f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[0][1], 0.0f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[1][1], 1.7656463f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[0][2], 324.90716f);
TEST_ASSERT_EQUAL_FLOAT(matrix->m[1][2], 255.00942f);
lv_svg_node_delete(svg);
}
#endif