1 // Copyright 2011 Juri Glass, Mathias Runge, Nadim El Sayed
2 // DAI-Labor, TU-Berlin
3 //
4 // This file is part of libSML.
5 //
6 // libSML is free software: you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation, either version 3 of the License, or
9 // (at your option) any later version.
10 //
11 // libSML is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
15 //
16 // You should have received a copy of the GNU General Public License
17 // along with libSML. If not, see <http://www.gnu.org/licenses/>.
18
19 #include "../unity/unity_fixture.h"
20 #include "test_helper.h"
21 #include <sml/sml_tree.h>
22 #include <sml/sml_octet_string.h>
23
24 TEST_GROUP(sml_tree);
25
26 extern sml_buffer *buf;
27
TEST_SETUP(sml_tree)28 TEST_SETUP(sml_tree) {
29 buf = sml_buffer_init(512);
30 }
31
TEST_TEAR_DOWN(sml_tree)32 TEST_TEAR_DOWN(sml_tree) {
33 sml_buffer_free(buf);
34 }
35
TEST(sml_tree,init)36 TEST(sml_tree, init) {
37 sml_tree *t = sml_tree_init();
38 TEST_ASSERT_NOT_NULL(t);
39 sml_tree_free( t );
40 }
41
TEST(sml_tree,add_tree)42 TEST(sml_tree, add_tree) {
43 sml_tree *t = sml_tree_init();
44 sml_tree_add_tree(t, sml_tree_init());
45
46 TEST_ASSERT_NOT_NULL(t->child_list[0]);
47 TEST_ASSERT_EQUAL(1, t->child_list_len);
48
49 sml_tree_free( t );
50 }
51
TEST(sml_tree,write)52 TEST(sml_tree, write) {
53 sml_tree *t = sml_tree_init();
54 t->parameter_name = sml_octet_string_init((unsigned char *)"Hallo", 5);
55 sml_tree_write(t, buf);
56 expected_buf(buf, "730648616C6C6F0101", 9);
57 sml_tree_free( t );
58 }
59
TEST(sml_tree,parse_with_child)60 TEST(sml_tree, parse_with_child) {
61 hex2binary("730648616C6C6F0171730648616C6C6F0101", sml_buf_get_current_buf(buf));
62 sml_tree *t = sml_tree_parse(buf);
63
64 TEST_ASSERT_NOT_NULL(t);
65 TEST_ASSERT_NOT_NULL(t->child_list[0]);
66 TEST_ASSERT_EQUAL(1, t->child_list_len);
67
68 sml_tree_free( t );
69 }
70
TEST(sml_tree,parse_with_error_child)71 TEST(sml_tree, parse_with_error_child) {
72 hex2binary("730648616C6C6F0171720648616C6C6F0101", sml_buf_get_current_buf(buf));
73 sml_tree *t = sml_tree_parse(buf);
74
75 TEST_ASSERT_NULL(t);
76
77 sml_tree_free( t );
78 }
79
TEST_GROUP_RUNNER(sml_tree)80 TEST_GROUP_RUNNER(sml_tree) {
81 RUN_TEST_CASE(sml_tree, init);
82 RUN_TEST_CASE(sml_tree, add_tree);
83 RUN_TEST_CASE(sml_tree, write);
84 RUN_TEST_CASE(sml_tree, parse_with_child);
85 RUN_TEST_CASE(sml_tree, parse_with_error_child);
86 }
87
88
89
90 TEST_GROUP(sml_tree_path);
91
TEST_SETUP(sml_tree_path)92 TEST_SETUP(sml_tree_path) {
93 buf = sml_buffer_init(512);
94 }
95
TEST_TEAR_DOWN(sml_tree_path)96 TEST_TEAR_DOWN(sml_tree_path) {
97 sml_buffer_free(buf);
98 }
99
TEST(sml_tree_path,init)100 TEST(sml_tree_path, init) {
101 sml_tree_path *t = sml_tree_path_init();
102 TEST_ASSERT_NOT_NULL(t);
103 sml_tree_path_free( t );
104 }
105
TEST(sml_tree_path,add_entry)106 TEST(sml_tree_path, add_entry) {
107 sml_tree_path *t = sml_tree_path_init();
108 TEST_ASSERT_NOT_NULL(t);
109 TEST_ASSERT_EQUAL(0, t->path_entries_len);
110 sml_tree_path_add_path_entry(t, sml_octet_string_init((unsigned char *)"tree", 4));
111 TEST_ASSERT_EQUAL(1, t->path_entries_len);
112 sml_tree_path_free( t );
113 }
114
TEST(sml_tree_path,parse)115 TEST(sml_tree_path, parse) {
116 hex2binary("720648616C6C6F0264", sml_buf_get_current_buf(buf));
117 sml_tree_path *t = sml_tree_path_parse(buf);
118 TEST_ASSERT_NOT_NULL(t);
119 TEST_ASSERT_EQUAL(2, t->path_entries_len);
120 TEST_ASSERT_EQUAL(0, sml_octet_string_cmp_with_hex(t->path_entries[0], "48616C6C6F"));
121 TEST_ASSERT_EQUAL(0, sml_octet_string_cmp_with_hex(t->path_entries[1], "64"));
122 sml_tree_path_free( t );
123 }
124
TEST(sml_tree_path,write)125 TEST(sml_tree_path, write) {
126 sml_tree_path *t = sml_tree_path_init();
127 sml_tree_path_add_path_entry(t, sml_octet_string_init((unsigned char *)"Hallo", 5));
128 sml_tree_path_add_path_entry(t, sml_octet_string_init((unsigned char *)"Hallo", 5));
129 sml_tree_path_write(t, buf);
130 expected_buf(buf, "720648616C6C6F0648616C6C6F", 13);
131 sml_tree_path_free( t );
132 }
133
TEST_GROUP_RUNNER(sml_tree_path)134 TEST_GROUP_RUNNER(sml_tree_path) {
135 RUN_TEST_CASE(sml_tree_path, init);
136 RUN_TEST_CASE(sml_tree_path, add_entry);
137 RUN_TEST_CASE(sml_tree_path, parse);
138 RUN_TEST_CASE(sml_tree_path, write);
139 }
140
141
142
143 TEST_GROUP(sml_proc_par_value);
144
TEST_SETUP(sml_proc_par_value)145 TEST_SETUP(sml_proc_par_value) {
146 buf = sml_buffer_init(512);
147 }
148
TEST_TEAR_DOWN(sml_proc_par_value)149 TEST_TEAR_DOWN(sml_proc_par_value) {
150 sml_buffer_free(buf);
151 }
152
TEST(sml_proc_par_value,init)153 TEST(sml_proc_par_value, init) {
154 sml_proc_par_value *t = sml_proc_par_value_init();
155 TEST_ASSERT_NOT_NULL(t);
156 sml_proc_par_value_free( t );
157 }
158
TEST(sml_proc_par_value,parse_time)159 TEST(sml_proc_par_value, parse_time) {
160 hex2binary("72620472620265000000FF", sml_buf_get_current_buf(buf));
161 sml_proc_par_value *t = sml_proc_par_value_parse(buf);
162 TEST_ASSERT_NOT_NULL(t);
163 TEST_ASSERT_EQUAL(SML_PROC_PAR_VALUE_TAG_TIME, *(t->tag));
164 TEST_ASSERT_EQUAL(11, buf->cursor);
165 sml_proc_par_value_free( t );
166 }
167
TEST(sml_proc_par_value,write_time)168 TEST(sml_proc_par_value, write_time) {
169 sml_proc_par_value *ppv = sml_proc_par_value_init();
170 ppv->tag = sml_u8_init(SML_PROC_PAR_VALUE_TAG_TIME);
171 sml_time *t = sml_time_init();
172 t->data.sec_index = sml_u32_init(255);
173 t->tag = sml_u8_init(SML_TIME_SEC_INDEX);
174 ppv->data.time = t;
175 sml_proc_par_value_write(ppv, buf);
176 expected_buf(buf, "72620472620165000000FF", 11);
177 sml_proc_par_value_free( ppv );
178 }
179
TEST_GROUP_RUNNER(sml_proc_par_value)180 TEST_GROUP_RUNNER(sml_proc_par_value) {
181 RUN_TEST_CASE(sml_proc_par_value, init);
182 RUN_TEST_CASE(sml_proc_par_value, parse_time);
183 RUN_TEST_CASE(sml_proc_par_value, write_time);
184 }
185
186