Пример #1
0
TEST(sml_number, parse_unsigned8) {
	hex2binary("6201", sml_buf_get_current_buf(buf));
	u8 *n = sml_u8_parse(buf);
	TEST_ASSERT_EQUAL(1, *n);
	TEST_ASSERT_EQUAL(2, buf->cursor);
	sml_u8_free( n );
}
Пример #2
0
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);
}
Пример #3
0
TEST(sml_number, parse_unsigned32_optional) {
	hex2binary("01", sml_buf_get_current_buf(buf));
	u32 *n = sml_u32_parse(buf);
	TEST_ASSERT_NULL(n);
	TEST_ASSERT_EQUAL(1, buf->cursor);
	sml_u32_free( n );
}
Пример #4
0
TEST(sml_sequence, parse_octet_string) {
	hex2binary("720648616C6C6F0648616C6C6F", sml_buf_get_current_buf(buf));

	sml_sequence *seq = sml_sequence_parse(buf, (void *) &sml_octet_string_parse, (void (*)(void *))&sml_octet_string_free);
	TEST_ASSERT_NOT_NULL(seq);
	TEST_ASSERT_EQUAL(2, seq->elems_len);
}
Пример #5
0
TEST(sml_proc_par_value, parse_time) {
	hex2binary("72620472620265000000FF", sml_buf_get_current_buf(buf));
	sml_proc_par_value *t = sml_proc_par_value_parse(buf);
	TEST_ASSERT_NOT_NULL(t);
	TEST_ASSERT_EQUAL(SML_PROC_PAR_VALUE_TAG_TIME, *(t->tag));
	TEST_ASSERT_EQUAL(11, buf->cursor);
}
Пример #6
0
TEST(sml_status, parse_not_unsigned) {
	hex2binary("5001", sml_buf_get_current_buf(buf));
	sml_status *s = sml_status_parse(buf);

	TEST_ASSERT_NULL(s);
	TEST_ASSERT_TRUE(sml_buf_has_errors(buf));
}
Пример #7
0
TEST(sml_value, parse_integer64_fewer_bytes) {
	hex2binary("58FFFFFFFFFFFF0F", sml_buf_get_current_buf(buf));
	sml_value *v = sml_value_parse(buf);

	TEST_ASSERT_EQUAL(-241, *(v->data.int64));
	TEST_ASSERT_EQUAL((SML_TYPE_INTEGER | SML_TYPE_NUMBER_64), v->type);
}
Пример #8
0
TEST(sml_value, parse_octet_string) {
	hex2binary("0648616C6C6F", sml_buf_get_current_buf(buf));
	sml_value *v = sml_value_parse(buf);

	TEST_ASSERT_NOT_NULL(v);
	TEST_ASSERT_EQUAL(SML_TYPE_OCTET_STRING, v->type);
	expected_octet_string(v->data.bytes, "Hallo", 5);
}
Пример #9
0
TEST(sml_value, parse_boolean) {
	hex2binary("4200", sml_buf_get_current_buf(buf));
	sml_value *v = sml_value_parse(buf);

	TEST_ASSERT_NOT_NULL(v);
	TEST_ASSERT_EQUAL(SML_TYPE_BOOLEAN, v->type);
	TEST_ASSERT_FALSE(*(v->data.boolean));
}
Пример #10
0
TEST(sml_tree, parse_with_error_child) {
	hex2binary("730648616C6C6F0171720648616C6C6F0101", sml_buf_get_current_buf(buf));
	sml_tree *t = sml_tree_parse(buf);

	TEST_ASSERT_NULL(t);

	sml_tree_free( t );
}
Пример #11
0
TEST(sml_status, parse_optional) {
	hex2binary("01", sml_buf_get_current_buf(buf));
	sml_status *s = sml_status_parse(buf);

	TEST_ASSERT_NULL(s);
	TEST_ASSERT_FALSE(sml_buf_has_errors(buf));
	TEST_ASSERT_EQUAL(1, buf->cursor);
}
Пример #12
0
TEST(sml_tree, parse_with_child) {
	hex2binary("730648616C6C6F0171730648616C6C6F0101", sml_buf_get_current_buf(buf));
	sml_tree *t = sml_tree_parse(buf);

	TEST_ASSERT_NOT_NULL(t);
	TEST_ASSERT_NOT_NULL(t->child_list[0]);
	TEST_ASSERT_EQUAL(1, t->child_list_len);
}
Пример #13
0
TEST(sml_tree_path, parse) {
	hex2binary("720648616C6C6F0264", sml_buf_get_current_buf(buf));
	sml_tree_path *t = sml_tree_path_parse(buf);
	TEST_ASSERT_NOT_NULL(t);
	TEST_ASSERT_EQUAL(2, t->path_entries_len);
	TEST_ASSERT_EQUAL(0, sml_octet_string_cmp_with_hex(t->path_entries[0], "48616C6C6F"));
	TEST_ASSERT_EQUAL(0, sml_octet_string_cmp_with_hex(t->path_entries[1], "64"));
}
Пример #14
0
TEST(sml_status, parse_status8) {
	hex2binary("6201", sml_buf_get_current_buf(buf));
	sml_status *s = sml_status_parse(buf);

	TEST_ASSERT_NOT_NULL(s);
	TEST_ASSERT_EQUAL(1, *(s->data.status8));
	TEST_ASSERT_EQUAL((SML_TYPE_UNSIGNED | SML_TYPE_NUMBER_8), s->type);
}
Пример #15
0
TEST(sml_list, parse_two_entries) {
	hex2binary("727702610101010142000177026101010101420001",  sml_buf_get_current_buf(buf));
	sml_list *l = sml_list_parse(buf);

	TEST_ASSERT_FALSE(sml_buf_has_errors(buf));
	TEST_ASSERT_NOT_NULL(l);
	TEST_ASSERT_NOT_NULL(l->next);
	TEST_ASSERT_EQUAL(0, sml_octet_string_cmp_with_hex(l->obj_name, "61"));
}
TEST(sml_get_profile_pack_request, parse) {
	hex2binary("7901010101010101730648616C6C6F0648616C6C6F0648616C6C6F01", sml_buf_get_current_buf(buf));
	sml_get_profile_pack_request *r = sml_get_profile_pack_request_parse(buf);
	TEST_ASSERT_NOT_NULL(r);
	TEST_ASSERT_NOT_NULL(r->object_list);
	TEST_ASSERT_NOT_NULL(r->object_list->next);
	TEST_ASSERT_NOT_NULL(r->object_list->next->next);
	TEST_ASSERT_NULL(r->object_list->next->next->next);
	sml_get_profile_pack_request_free( r );
}
Пример #17
0
TEST(sml_value, parse_unsigned32) {
	hex2binary("6500000001", sml_buf_get_current_buf(buf));
	sml_value *v = sml_value_parse(buf);

	TEST_ASSERT_NOT_NULL(v);
	TEST_ASSERT_EQUAL(1, *(v->data.uint32));
	TEST_ASSERT_EQUAL((SML_TYPE_UNSIGNED | SML_TYPE_NUMBER_32), v->type);
	TEST_ASSERT_EQUAL(5, buf->cursor);

}
Пример #18
0
int sml_transport_write(int fd, sml_file *file) {
	unsigned char start_seq[] = {0x1b, 0x1b, 0x1b, 0x1b, 0x01, 0x01, 0x01, 0x01};
	unsigned char end_seq[] = {0x1b, 0x1b, 0x1b, 0x1b, 0x1a};
	sml_buffer *buf = file->buf;
	buf->cursor = 0;

	// add start sequence
	memcpy(sml_buf_get_current_buf(buf), start_seq, 8);
	buf->cursor += 8;

	// add file
	sml_file_write(file);

	// add padding bytes
	int padding = (buf->cursor % 4) ? (4 - buf->cursor % 4) : 0;
	if (padding) {
		// write zeroed bytes
		memset(sml_buf_get_current_buf(buf), 0, padding);
		buf->cursor += padding;
	}

	// begin end sequence
	memcpy(sml_buf_get_current_buf(buf), end_seq, 5);
	buf->cursor += 5;

	// add padding info
	buf->buffer[buf->cursor++] = (unsigned char) padding;

	// add crc checksum
	u16 crc = sml_crc16_calculate(buf->buffer, buf->cursor);
	buf->buffer[buf->cursor++] = (unsigned char) ((crc & 0xFF00) >> 8);
	buf->buffer[buf->cursor++] = (unsigned char) (crc & 0x00FF);

	size_t wr = write(fd, buf->buffer, buf->cursor);
	if (wr == buf->cursor) {
		return wr;
	}

	return 0;
}
Пример #19
0
TEST(sml_number, parse_unsigned16) {
	hex2binary("630101", sml_buf_get_current_buf(buf));
	u16 *n = sml_u16_parse(buf);
	TEST_ASSERT_EQUAL(257, *n);
	sml_u16_free( n );
}
Пример #20
0
TEST(sml_number, parse_int8) {
	hex2binary("52FF", sml_buf_get_current_buf(buf));
	i8 *n = sml_i8_parse(buf);
	TEST_ASSERT_EQUAL(-1, *n);
	sml_i8_free( n );
}
Пример #21
0
TEST(sml_list, parse_optional) {
	hex2binary("01",  sml_buf_get_current_buf(buf));
	sml_list *l = sml_list_parse(buf);
	TEST_ASSERT_NULL(l);
	TEST_ASSERT_FALSE(sml_buf_has_errors(buf));
}
Пример #22
0
TEST(sml_number, parse_int32) {
	hex2binary("55FFFFEC78", sml_buf_get_current_buf(buf));
	i32 *n = sml_i32_parse(buf);
	TEST_ASSERT_EQUAL(-5000, *n);
	sml_i32_free( n );
}
Пример #23
0
TEST(sml_number, parse_int16) {
	hex2binary("53EC78", sml_buf_get_current_buf(buf));
	i16 *n = sml_i16_parse(buf);
	TEST_ASSERT_EQUAL(-5000, *n);
	sml_i16_free( n );
}
Пример #24
0
TEST(sml_number, parse_int64) {
	hex2binary("59FFFFFFFFFFFFFFFF", sml_buf_get_current_buf(buf));
	i64 *n = sml_i64_parse(buf);
	TEST_ASSERT_EQUAL(-1, *n);
	sml_i64_free( n );
}
Пример #25
0
TEST(sml_number, parse_int64_fewer_bytes) {
	hex2binary("58FFFFFFFFFFEC78", sml_buf_get_current_buf(buf));
	i64 *n = sml_i64_parse(buf);
	TEST_ASSERT_EQUAL(-5000, *n);
	sml_i64_free( n );
}
Пример #26
0
TEST(sml_number, parse_unsigned32) {
	hex2binary("6500000001", sml_buf_get_current_buf(buf));
	u32 *n = sml_u32_parse(buf);
	TEST_ASSERT_EQUAL(1, *n);
	sml_u32_free( n );
}
Пример #27
0
TEST(sml_number, parse_unsigned32_fewer_bytes) {
	hex2binary("64010001", sml_buf_get_current_buf(buf));
	u32 *n = sml_u32_parse(buf);
	TEST_ASSERT_EQUAL(65537, *n);
	sml_u32_free( n );
}
Пример #28
0
TEST(sml_number, parse_unsigned64_fewer_bytes) {
	hex2binary("67000000000001", sml_buf_get_current_buf(buf));
	u64 *n = sml_u64_parse(buf);
	TEST_ASSERT_EQUAL(1, *n);
	sml_u64_free( n );
}