TEST(sml_tree, add_tree) { sml_tree *t = sml_tree_init(); sml_tree_add_tree(t, sml_tree_init()); TEST_ASSERT_NOT_NULL(t->child_list[0]); TEST_ASSERT_EQUAL(1, t->child_list_len); }
TEST(sml_tree, write) { sml_tree *t = sml_tree_init(); t->parameter_name = sml_octet_string_init((unsigned char *)"Hallo", 5); sml_tree_write(t, buf); expected_buf(buf, "730648616C6C6F0101", 9); sml_tree_free( t ); }
sml_tree *sml_tree_parse(sml_buffer *buf) { if (sml_buf_optional_is_skipped(buf)) { return 0; } sml_tree *tree = sml_tree_init(); if (sml_buf_get_next_type(buf) != SML_TYPE_LIST) { buf->error = 1; goto error; } if (sml_buf_get_next_length(buf) != 3) { buf->error = 1; goto error; } tree->parameter_name = sml_octet_string_parse(buf); if (sml_buf_has_errors(buf)) goto error; tree->parameter_value = sml_proc_par_value_parse(buf); if (sml_buf_has_errors(buf)) goto error; if (!sml_buf_optional_is_skipped(buf)) { if (sml_buf_get_next_type(buf) != SML_TYPE_LIST) { buf->error = 1; goto error; } sml_tree *c; int elems; for (elems = sml_buf_get_next_length(buf); elems > 0; elems--) { c = sml_tree_parse(buf); if (sml_buf_has_errors(buf)) goto error; if (c) { sml_tree_add_tree(tree, c); } } } return tree; error: sml_tree_free(tree); return 0; }
TEST(sml_tree, init) { sml_tree *t = sml_tree_init(); TEST_ASSERT_NOT_NULL(t); }