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