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_status.h>
22 
23 TEST_GROUP(sml_status);
24 
25 extern sml_buffer *buf;
26 
TEST_SETUP(sml_status)27 TEST_SETUP(sml_status) {
28 	buf = sml_buffer_init(512);
29 }
30 
TEST_TEAR_DOWN(sml_status)31 TEST_TEAR_DOWN(sml_status) {
32 	sml_buffer_free(buf);
33 }
34 
TEST(sml_status,init)35 TEST(sml_status, init) {
36 	sml_status *s = sml_status_init();
37 	TEST_ASSERT_NOT_NULL(s);
38 	sml_status_free( s );
39 }
40 
TEST(sml_status,parse_status8)41 TEST(sml_status, parse_status8) {
42 	hex2binary("6201", sml_buf_get_current_buf(buf));
43 	sml_status *s = sml_status_parse(buf);
44 
45 	TEST_ASSERT_NOT_NULL(s);
46 	TEST_ASSERT_EQUAL(1, *(s->data.status8));
47 	TEST_ASSERT_EQUAL((SML_TYPE_UNSIGNED | SML_TYPE_NUMBER_8), s->type);
48 
49 	sml_status_free( s );
50 }
51 
TEST(sml_status,parse_optional)52 TEST(sml_status, parse_optional) {
53 	hex2binary("01", sml_buf_get_current_buf(buf));
54 	sml_status *s = sml_status_parse(buf);
55 
56 	TEST_ASSERT_NULL(s);
57 	TEST_ASSERT_FALSE(sml_buf_has_errors(buf));
58 	TEST_ASSERT_EQUAL(1, buf->cursor);
59 
60 	sml_status_free( s );
61 }
62 
TEST(sml_status,parse_not_unsigned)63 TEST(sml_status, parse_not_unsigned) {
64 	hex2binary("5001", sml_buf_get_current_buf(buf));
65 	sml_status *s = sml_status_parse(buf);
66 
67 	TEST_ASSERT_NULL(s);
68 	TEST_ASSERT_TRUE(sml_buf_has_errors(buf));
69 
70 	sml_status_free( s );
71 }
72 
TEST(sml_status,write_status32)73 TEST(sml_status, write_status32) {
74 	sml_status *s = sml_status_init();
75 	s->type = SML_TYPE_UNSIGNED | SML_TYPE_NUMBER_32;
76 	s->data.status32 = sml_u32_init(42);
77 
78 	sml_status_write(s, buf);
79 	expected_buf(buf, "650000002A", 5);
80 
81 	sml_status_free( s );
82 }
83 
TEST(sml_status,write_optional)84 TEST(sml_status, write_optional) {
85 	sml_status_write(0, buf);
86 	expected_buf(buf, "01", 1);
87 }
88 
89 
TEST_GROUP_RUNNER(sml_status)90 TEST_GROUP_RUNNER(sml_status) {
91 	RUN_TEST_CASE(sml_status, init);
92 	RUN_TEST_CASE(sml_status, parse_status8);
93 	RUN_TEST_CASE(sml_status, parse_optional);
94 	RUN_TEST_CASE(sml_status, parse_not_unsigned);
95 	RUN_TEST_CASE(sml_status, write_status32);
96 	RUN_TEST_CASE(sml_status, write_optional);
97 }
98 
99