sml_tree_path *sml_tree_path_parse(sml_buffer *buf) { if (sml_buf_optional_is_skipped(buf)) { return 0; } sml_tree_path *tree_path = sml_tree_path_init(); if (sml_buf_get_next_type(buf) != SML_TYPE_LIST) { buf->error = 1; return 0; } octet_string *s; int elems; for (elems = sml_buf_get_next_length(buf); elems > 0; elems--) { s = sml_octet_string_parse(buf); if (sml_buf_has_errors(buf)) goto error; if (s) { sml_tree_path_add_path_entry(tree_path, s); } } return tree_path; error: buf->error = 1; sml_tree_path_free(tree_path); return 0; }
TEST(sml_tree_path, write) { sml_tree_path *t = sml_tree_path_init(); sml_tree_path_add_path_entry(t, sml_octet_string_init((unsigned char *)"Hallo", 5)); sml_tree_path_add_path_entry(t, sml_octet_string_init((unsigned char *)"Hallo", 5)); sml_tree_path_write(t, buf); expected_buf(buf, "720648616C6C6F0648616C6C6F", 13); sml_tree_path_free( t ); }
TEST(sml_tree_path, add_entry) { sml_tree_path *t = sml_tree_path_init(); TEST_ASSERT_NOT_NULL(t); TEST_ASSERT_EQUAL(0, t->path_entries_len); sml_tree_path_add_path_entry(t, sml_octet_string_init((unsigned char *)"tree", 4)); TEST_ASSERT_EQUAL(1, t->path_entries_len); sml_tree_path_free( t ); }
TEST(sml_tree_path, parse) { hex2binary("720648616C6C6F0264", sml_buf_get_current_buf(buf)); sml_tree_path *t = sml_tree_path_parse(buf); TEST_ASSERT_NOT_NULL(t); TEST_ASSERT_EQUAL(2, t->path_entries_len); TEST_ASSERT_EQUAL(0, sml_octet_string_cmp_with_hex(t->path_entries[0], "48616C6C6F")); TEST_ASSERT_EQUAL(0, sml_octet_string_cmp_with_hex(t->path_entries[1], "64")); sml_tree_path_free( t ); }
void sml_set_proc_parameter_request_free(sml_set_proc_parameter_request *msg) { if (msg) { sml_octet_string_free(msg->server_id); sml_octet_string_free(msg->username); sml_octet_string_free(msg->password); sml_tree_path_free(msg->parameter_tree_path); sml_tree_free(msg->parameter_tree); free(msg); } }
void sml_get_profile_pack_response_free(sml_get_profile_pack_response *msg){ if (msg) { sml_octet_string_free(msg->server_id); sml_time_free(msg->act_time); sml_number_free(msg->reg_period); sml_tree_path_free(msg->parameter_tree_path); sml_sequence_free(msg->header_list); sml_sequence_free(msg->period_list); sml_octet_string_free(msg->rawdata); sml_signature_free(msg->profile_signature); free(msg); } }
TEST(sml_tree_path, init) { sml_tree_path *t = sml_tree_path_init(); TEST_ASSERT_NOT_NULL(t); sml_tree_path_free( t ); }