Sigrid Solveig Haflínudóttirinitial import8808c535 months agoHistory
175 lines · 4.2 KB · C
RawDownload
#include <stdio.h>#include <stddef.h>#include <stdint.h>#include <setjmp.h>#include <string.h>#include <stdarg.h>#include <cmocka.h> enum defenum { //#	Defvalue = -1,	Value0, //#	Value1, //#	Value2, //#}; struct innerdefaults { //# decoder encoder	int x;     //#1 default=-666 signed	char c[8]; //#2 default='"lol"'	char s[8]; //# default='"ftw"'	int y;     //# default=13}; struct defaults { //# decoder encoder	int i;                            //#1 default=-1	uint32_t u;                       //#2 default=1	uint64_t u64;                     //#3 default=0xfffffffffffffff1	enum defenum e;                   //#4 default=Defvalue	char s[6];                        //#5	uint8_t b[2];                     //#6	struct innerdefaults inner;       //#7	int num_repeated;	struct innerdefaults repeated[4]; //#8 num_at=^	int16_t i16;                      //#9 default=-32768 signed	int8_t i8;                        //#10 default=-128 signed	struct innerdefaults *inptr;      //#11	int *iptr;                        //#12	uint8_t buffer[64]; //# buffer=here 	uint8_t b0[2];	char s0[2];	int x0;	char *ptr0;}; static struct innerdefaults inptr; #include "test_defaults.pb.h" voidtest_defaults_reset_pretty(void **state){	struct defaults d;	char buf[128]; 	(void)state;	memset(&d, 0xff, sizeof(d));	d.inptr = &inptr;	memset(&inptr, 0xff, sizeof(inptr));	d.b0[0] = 1;	d.b0[1] = 2;	d.s0[0] = 'a';	d.s0[1] = 'b';	d.x0 = 13;	d.ptr0 = buf; 	pb_reset_defaults(&d);	assert_non_null(pb_seprint_defaults(&d, buf, buf+sizeof(buf), 0, 0));	assert_string_equal(		buf,		"{}"	);	assert_int_equal(d.b0[0], 1);	assert_int_equal(d.b0[1], 2);	assert_int_equal(d.s0[0], 'a');	assert_int_equal(d.s0[1], 'b');	assert_int_equal(d.x0, 13);	assert_ptr_equal(d.ptr0, buf);} voidtest_defaults_pretty(void **state){	struct defaults d;	char buf[256]; 	(void)state;	memset(&d, 0, sizeof(d));	d.inptr = &inptr;	memset(&inptr, 0, sizeof(inptr));	assert_non_null(pb_seprint_defaults(&d, buf, buf+sizeof(buf), 0, 1));	assert_string_equal(		buf,		"{\n"		" i = 0, // #1\n"		" u = 0, // #2\n"		" u64 = 0, // #3\n"		" e = 0 (Value0), // #4\n"		" inner = {\n"		"  x = 0, // #1\n"		"  c = \"\", // #2\n"		"  s = \"\",\n"		"  y = 0,\n"		" }, // #7\n"		" i16 = 0, // #9\n"		" i8 = 0, // #10\n"		" inptr = {\n"		"  x = 0, // #1\n"		"  c = \"\", // #2\n"		"  s = \"\",\n"		"  y = 0,\n"		" }, // #11\n"		"}"	);} voidtest_defaults_decode_pretty(void **state){	// i:-1, u:1, u64:0xfffffffffffffff1, inner:{x:-666, c:"lol"}, i16:-32768, i8:-128, sptr:{x:-666, c:"lol"}, iptr:17	const uint8_t raw[] = {		0x08, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x10, 0x01, 0x18, 0xf1, 0xff,		0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x3a, 0x08, 0x08, 0xb3, 0x0a, 0x12, 0x03, 0x6c,		0x6f, 0x6c, 0x48, 0xff, 0xff, 0x03, 0x50, 0xff, 0x01, 0x5a, 0x08, 0x08, 0xb3, 0x0a, 0x12, 0x03,		0x6c, 0x6f, 0x6c, 0x60, 0x11,	};	struct defaults d;	char buf[256]; 	(void)state;	strncpy(d.inner.s, "hello", sizeof(d.inner.s));	d.inner.y = 666;	d.b0[0] = 1;	d.b0[1] = 2;	d.s0[0] = 'a';	d.s0[1] = 'b';	d.x0 = 13;	d.ptr0 = buf;	d.inptr = &inptr;	strncpy(inptr.s, "what", sizeof(inptr.s));	inptr.y = 555;	d.iptr = NULL; // ignore the value	assert_ptr_equal(pb_decode_defaults(&d, raw, raw+sizeof(raw)), raw+sizeof(raw));	assert_non_null(pb_seprint_defaults(&d, buf, buf+sizeof(buf), 2, 3));	assert_string_equal(		buf,		"{\n"		"     inner = {\n"		"        s = \"hello\",\n"		"        y = 666,\n"		"     }, // #7\n"		"     inptr = {\n"		"        s = \"what\",\n"		"        y = 555,\n"		"     }, // #11\n"		"  }"	);	assert_int_equal(d.i, -1);	assert_int_equal(d.u, 1);	assert_int_equal(d.u64, 0xfffffffffffffff1LL);	assert_int_equal(d.e, Defvalue);	assert_int_equal(d.s[0], 0);	assert_int_equal(d.b[0], 0);	assert_int_equal(d.b[1], 0);	assert_int_equal(d.inner.x, -666);	assert_string_equal(d.inner.c, "lol");	assert_string_equal(d.inner.s, "hello");	assert_int_equal(d.inner.y, 666);	assert_int_equal(d.num_repeated, 0);	assert_int_equal(d.b0[0], 1);	assert_int_equal(d.b0[1], 2);	assert_int_equal(d.s0[0], 'a');	assert_int_equal(d.s0[1], 'b');	assert_int_equal(d.x0, 13);	assert_ptr_equal(d.ptr0, buf);}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t