added optional parse for sml_value

This commit is contained in:
Juri Glass 2011-07-17 12:25:46 +02:00
parent f3dfe21ec5
commit b5eb45377d
2 changed files with 13 additions and 0 deletions

View file

@ -22,6 +22,10 @@
#include <stdio.h>
sml_value *sml_value_parse(sml_buffer *buf) {
if (sml_buf_optional_is_skipped(buf)) {
return 0;
}
int max = 1;
int type = sml_buf_get_next_type(buf);
unsigned char byte = sml_buf_get_current_byte(buf);

View file

@ -73,6 +73,14 @@ TEST(sml_value, parse_integer64_fewer_bytes) {
TEST_ASSERT_EQUAL((SML_TYPE_INTEGER | SML_TYPE_NUMBER_64), v->type);
}
TEST(sml_value, parse_optional) {
hex2binary("01", sml_buf_get_current_buf(buf));
sml_value *v = sml_value_parse(buf);
TEST_ASSERT_NULL(v);
TEST_ASSERT_EQUAL(1, buf->cursor);
}
TEST(sml_value, write_octet_string) {
sml_value *v = sml_value_init();
v->type = SML_TYPE_OCTET_STRING;
@ -120,6 +128,7 @@ TEST_GROUP_RUNNER(sml_value) {
RUN_TEST_CASE(sml_value, parse_boolean);
RUN_TEST_CASE(sml_value, parse_unsigned32);
RUN_TEST_CASE(sml_value, parse_integer64_fewer_bytes);
RUN_TEST_CASE(sml_value, parse_optional);
RUN_TEST_CASE(sml_value, write_octet_string);
RUN_TEST_CASE(sml_value, write_boolean);
RUN_TEST_CASE(sml_value, write_unsigned32);