Skip to content

Commit 8f0c090

Browse files
committed
Unit tests for memory blob parsers
1 parent a766884 commit 8f0c090

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed

tools/unit-tests/unit-parser.c

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,81 @@ static uint8_t test_buffer[512] = {
100100
0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
101101
};
102102

103+
static uint8_t test_buffer_with_type[512] = {
104+
'W', 'O', 'L', 'F', 0x00, 0x00, 0x01, 0x00,
105+
0x01, 0x00, 0x04, 0x00, 0x0d, 0x0c, 0x0b, 0x0a,
106+
0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x08, 0x00,
107+
0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00,
108+
0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x02, 0x00,
109+
0xEE, 0xDD, 0xFF, 0xFF, 0x03, 0x00, 0x20, 0x00,
110+
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
111+
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
112+
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
113+
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
114+
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /*<-- end of options */
115+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
116+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
117+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
118+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
119+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
120+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
121+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
122+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
123+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
124+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
125+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
126+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
127+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
128+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
129+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
130+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
131+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
132+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
133+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
134+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
135+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
136+
/* End HDR */
137+
0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
138+
};
139+
140+
static uint8_t test_buffer_with_diffbase[512] = {
141+
'W', 'O', 'L', 'F', 0x00, 0x00, 0x01, 0x00,
142+
0x01, 0x00, 0x04, 0x00, 0x0d, 0x0c, 0x0b, 0x0a,
143+
0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x08, 0x00,
144+
0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00,
145+
0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x02, 0x00,
146+
0xEE, 0xDD, 0xFF, 0xFF, 0x05, 0x00, 0x04, 0x00,
147+
0x04, 0x03, 0x02, 0x01, 0x03, 0x00, 0x20, 0x00,
148+
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
149+
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
150+
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
151+
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
152+
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /*<-- end of options */
153+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
154+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
155+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
156+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
157+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
158+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
159+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
160+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
161+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
162+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
163+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
164+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
165+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
166+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
167+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
168+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
169+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
170+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
171+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
172+
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
173+
/* End HDR */
174+
0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
175+
};
176+
177+
103178
START_TEST (test_parser_sunny)
104179
{
105180
uint8_t *p;
@@ -167,6 +242,24 @@ START_TEST (test_parser_borders)
167242
}
168243
END_TEST
169244

245+
START_TEST (test_parser_blobs)
246+
{
247+
uint32_t ver;
248+
uint16_t type;
249+
ver = wolfBoot_get_blob_version(test_buffer);
250+
fail_unless(ver == 0x0a0b0c0d, "Parser error: version does not match");
251+
252+
type = wolfBoot_get_blob_type(test_buffer_with_type);
253+
fail_unless(type == 0xDDEE, "Wrong image type");
254+
255+
type = wolfBoot_get_blob_type(test_buffer);
256+
fail_unless(type == 0, "Reading non-existing version: failed to report error");
257+
ver = wolfBoot_get_blob_diffbase_version(test_buffer_with_diffbase);
258+
fail_unless(ver == 0x01020304, "Wrong delta base version parsed");
259+
260+
}
261+
END_TEST
262+
170263
Suite *wolfboot_suite(void)
171264
{
172265

@@ -176,15 +269,19 @@ Suite *wolfboot_suite(void)
176269
/* Test cases */
177270
TCase *parser_sunny = tcase_create("Parser Sunny-day case");
178271
TCase *parser_borders = tcase_create("Parser test buffer borders");
272+
TCase *parser_blobs = tcase_create("Parser test blobs");
273+
179274

180275
/* Test function <-> Test case */
181276
tcase_add_test(parser_sunny, test_parser_sunny);
182277
tcase_add_test(parser_borders, test_parser_borders);
278+
tcase_add_test(parser_blobs, test_parser_blobs);
183279

184280
/* Set parameters + add to suite */
185281
tcase_set_timeout(parser_sunny, 20);
186282
suite_add_tcase(s, parser_sunny);
187283
suite_add_tcase(s, parser_borders);
284+
suite_add_tcase(s, parser_blobs);
188285

189286
return s;
190287
}

0 commit comments

Comments
 (0)