Home | History | Annotate | Line # | Download | only in libbluetooth
      1  1.3  plunky /*	$NetBSD: t_sdp_put.c,v 1.3 2011/04/16 07:32:27 plunky Exp $	*/
      2  1.1  plunky 
      3  1.1  plunky /*-
      4  1.1  plunky  * Copyright (c) 2011 The NetBSD Foundation, Inc.
      5  1.1  plunky  * All rights reserved.
      6  1.1  plunky  *
      7  1.1  plunky  * This code is derived from software contributed to The NetBSD Foundation
      8  1.1  plunky  * by Iain Hibbert.
      9  1.1  plunky  *
     10  1.1  plunky  * Redistribution and use in source and binary forms, with or without
     11  1.1  plunky  * modification, are permitted provided that the following conditions
     12  1.1  plunky  * are met:
     13  1.1  plunky  * 1. Redistributions of source code must retain the above copyright
     14  1.1  plunky  *    notice, this list of conditions and the following disclaimer.
     15  1.1  plunky  * 2. Redistributions in binary form must reproduce the above copyright
     16  1.1  plunky  *    notice, this list of conditions and the following disclaimer in the
     17  1.1  plunky  *    documentation and/or other materials provided with the distribution.
     18  1.1  plunky  *
     19  1.1  plunky  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     20  1.1  plunky  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     21  1.1  plunky  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     22  1.1  plunky  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     23  1.1  plunky  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     24  1.1  plunky  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     25  1.1  plunky  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     26  1.1  plunky  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     27  1.1  plunky  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     28  1.1  plunky  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     29  1.1  plunky  * POSSIBILITY OF SUCH DAMAGE.
     30  1.1  plunky  */
     31  1.1  plunky 
     32  1.1  plunky #include <atf-c.h>
     33  1.1  plunky 
     34  1.1  plunky #include <limits.h>
     35  1.1  plunky #include <sdp.h>
     36  1.1  plunky #include <string.h>
     37  1.1  plunky 
     38  1.1  plunky ATF_TC(check_sdp_put_data);
     39  1.1  plunky 
     40  1.1  plunky ATF_TC_HEAD(check_sdp_put_data, tc)
     41  1.1  plunky {
     42  1.2  plunky 
     43  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_data results");
     44  1.1  plunky }
     45  1.2  plunky 
     46  1.1  plunky ATF_TC_BODY(check_sdp_put_data, tc)
     47  1.1  plunky {
     48  1.1  plunky 	uint8_t buf[256];
     49  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
     50  1.1  plunky 	uint8_t data[] = {
     51  1.1  plunky 		0x35, 0x05,		// seq8(5)
     52  1.1  plunky 		0x08, 0x00,		//   uint8	0x00
     53  1.1  plunky 		0x09, 0x12, 0x34,	//   uint16	0x1234
     54  1.1  plunky 	};
     55  1.1  plunky 	sdp_data_t value = { data, data + sizeof(data) };
     56  1.1  plunky 
     57  1.1  plunky 	ATF_REQUIRE(sdp_put_data(&test, &value));
     58  1.1  plunky 	test.end = test.next;
     59  1.1  plunky 	test.next = buf;
     60  1.1  plunky 
     61  1.1  plunky 	const uint8_t expect[] = {
     62  1.1  plunky 		0x35, 0x05,		// seq8(5)
     63  1.1  plunky 		0x08, 0x00,		//   uint8	0x00
     64  1.1  plunky 		0x09, 0x12, 0x34,	//   uint16	0x1234
     65  1.1  plunky 	};
     66  1.1  plunky 
     67  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
     68  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
     69  1.1  plunky }
     70  1.1  plunky 
     71  1.1  plunky ATF_TC(check_sdp_put_attr);
     72  1.1  plunky 
     73  1.1  plunky ATF_TC_HEAD(check_sdp_put_attr, tc)
     74  1.1  plunky {
     75  1.2  plunky 
     76  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_attr results");
     77  1.1  plunky }
     78  1.2  plunky 
     79  1.1  plunky ATF_TC_BODY(check_sdp_put_attr, tc)
     80  1.1  plunky {
     81  1.1  plunky 	uint8_t buf[256];
     82  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
     83  1.1  plunky 	uint8_t data[] = {
     84  1.3  plunky 		0x00,			// nil
     85  1.1  plunky 		0x19, 0x33, 0x44,	// uuid16	0x3344
     86  1.1  plunky 	};
     87  1.1  plunky 	sdp_data_t value = { data, data + sizeof(data) };
     88  1.1  plunky 
     89  1.3  plunky 	ATF_REQUIRE_EQ(sdp_put_attr(&test, 0xabcd, &value), false);
     90  1.3  plunky 	value.next += 1; // skip "nil"
     91  1.1  plunky 	ATF_REQUIRE(sdp_put_attr(&test, 0x1337, &value));
     92  1.1  plunky 	test.end = test.next;
     93  1.1  plunky 	test.next = buf;
     94  1.1  plunky 
     95  1.1  plunky 	const uint8_t expect[] = {
     96  1.1  plunky 		0x09, 0x13, 0x37,	// uint16	0x1337
     97  1.1  plunky 		0x19, 0x33, 0x44,	// uuid16	0x3344
     98  1.1  plunky 	};
     99  1.1  plunky 
    100  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
    101  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
    102  1.1  plunky }
    103  1.1  plunky 
    104  1.1  plunky ATF_TC(check_sdp_put_uuid);
    105  1.1  plunky 
    106  1.1  plunky ATF_TC_HEAD(check_sdp_put_uuid, tc)
    107  1.1  plunky {
    108  1.2  plunky 
    109  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_uuid results");
    110  1.1  plunky }
    111  1.2  plunky 
    112  1.1  plunky ATF_TC_BODY(check_sdp_put_uuid, tc)
    113  1.1  plunky {
    114  1.1  plunky 	uint8_t buf[256];
    115  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
    116  1.1  plunky 	const uuid_t u16 = {
    117  1.1  plunky 		0x00001234,
    118  1.1  plunky 		0x0000,
    119  1.1  plunky 		0x1000,
    120  1.1  plunky 		0x80,
    121  1.1  plunky 		0x00,
    122  1.1  plunky 		{ 0x00, 0x80, 0x5f, 0x9b, 0x34, 0xfb }
    123  1.1  plunky 	};
    124  1.1  plunky 	const uuid_t u32 = {
    125  1.1  plunky 		0x12345678,
    126  1.1  plunky 		0x0000,
    127  1.1  plunky 		0x1000,
    128  1.1  plunky 		0x80,
    129  1.1  plunky 		0x00,
    130  1.1  plunky 		{ 0x00, 0x80, 0x5f, 0x9b, 0x34, 0xfb }
    131  1.1  plunky 	};
    132  1.1  plunky 	const uuid_t u128 = {
    133  1.1  plunky 		0x00112233,
    134  1.1  plunky 		0x4444,
    135  1.1  plunky 		0x5555,
    136  1.1  plunky 		0x66,
    137  1.1  plunky 		0x77,
    138  1.1  plunky 		{ 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd }
    139  1.1  plunky 	};
    140  1.1  plunky 
    141  1.1  plunky 	ATF_REQUIRE(sdp_put_uuid(&test, &u16));
    142  1.1  plunky 	ATF_REQUIRE(sdp_put_uuid(&test, &u32));
    143  1.1  plunky 	ATF_REQUIRE(sdp_put_uuid(&test, &u128));
    144  1.1  plunky 	test.end = test.next;
    145  1.1  plunky 	test.next = buf;
    146  1.1  plunky 
    147  1.1  plunky 	const uint8_t expect[] = {
    148  1.1  plunky 		0x19, 0x12, 0x34,	// uuid16	0x1234
    149  1.1  plunky 		0x1a, 0x12, 0x34, 0x56, // uuid32	0x12345678
    150  1.1  plunky 		0x78,
    151  1.1  plunky 		0x1c, 0x00, 0x11, 0x22,	// uuid128	00112233-4444-5555-6677-8899aabbccdd
    152  1.1  plunky 		0x33, 0x44, 0x44, 0x55,
    153  1.1  plunky 		0x55, 0x66, 0x77, 0x88,
    154  1.1  plunky 		0x99, 0xaa, 0xbb, 0xcc,
    155  1.1  plunky 		0xdd,
    156  1.1  plunky 	};
    157  1.1  plunky 
    158  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
    159  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
    160  1.1  plunky }
    161  1.1  plunky 
    162  1.1  plunky ATF_TC(check_sdp_put_uuid16);
    163  1.1  plunky 
    164  1.1  plunky ATF_TC_HEAD(check_sdp_put_uuid16, tc)
    165  1.1  plunky {
    166  1.2  plunky 
    167  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_uuid16 results");
    168  1.1  plunky }
    169  1.2  plunky 
    170  1.1  plunky ATF_TC_BODY(check_sdp_put_uuid16, tc)
    171  1.1  plunky {
    172  1.1  plunky 	uint8_t buf[256];
    173  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
    174  1.1  plunky 
    175  1.1  plunky 	ATF_REQUIRE(sdp_put_uuid16(&test, 0x4567));
    176  1.1  plunky 	test.end = test.next;
    177  1.1  plunky 	test.next = buf;
    178  1.1  plunky 
    179  1.1  plunky 	const uint8_t expect[] = {
    180  1.1  plunky 		0x19, 0x45, 0x67,	// uuid16	0x4567
    181  1.1  plunky 	};
    182  1.1  plunky 
    183  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
    184  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
    185  1.1  plunky }
    186  1.1  plunky 
    187  1.1  plunky ATF_TC(check_sdp_put_uuid32);
    188  1.1  plunky 
    189  1.1  plunky ATF_TC_HEAD(check_sdp_put_uuid32, tc)
    190  1.1  plunky {
    191  1.2  plunky 
    192  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_uuid32 results");
    193  1.1  plunky }
    194  1.2  plunky 
    195  1.1  plunky ATF_TC_BODY(check_sdp_put_uuid32, tc)
    196  1.1  plunky {
    197  1.1  plunky 	uint8_t buf[256];
    198  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
    199  1.1  plunky 
    200  1.1  plunky 	ATF_REQUIRE(sdp_put_uuid32(&test, 0xabcdef00));
    201  1.1  plunky 	test.end = test.next;
    202  1.1  plunky 	test.next = buf;
    203  1.1  plunky 
    204  1.1  plunky 	const uint8_t expect[] = {
    205  1.1  plunky 		0x1a, 0xab, 0xcd, 0xef, // uuid32	0xabcdef00
    206  1.1  plunky 		0x00,
    207  1.1  plunky 	};
    208  1.1  plunky 
    209  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
    210  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
    211  1.1  plunky }
    212  1.1  plunky 
    213  1.1  plunky ATF_TC(check_sdp_put_uuid128);
    214  1.1  plunky 
    215  1.1  plunky ATF_TC_HEAD(check_sdp_put_uuid128, tc)
    216  1.1  plunky {
    217  1.2  plunky 
    218  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_uuid128 results");
    219  1.1  plunky }
    220  1.2  plunky 
    221  1.1  plunky ATF_TC_BODY(check_sdp_put_uuid128, tc)
    222  1.1  plunky {
    223  1.1  plunky 	uint8_t buf[256];
    224  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
    225  1.1  plunky 	uuid_t value = {
    226  1.1  plunky 		0x00000100,
    227  1.1  plunky 		0x0000,
    228  1.1  plunky 		0x1000,
    229  1.1  plunky 		0x80,
    230  1.1  plunky 		0x00,
    231  1.1  plunky 		{ 0x00, 0x80, 0x5f, 0x9b, 0x34, 0xfb }
    232  1.1  plunky 	};
    233  1.1  plunky 
    234  1.1  plunky 	ATF_REQUIRE(sdp_put_uuid128(&test, &value));
    235  1.1  plunky 	test.end = test.next;
    236  1.1  plunky 	test.next = buf;
    237  1.1  plunky 
    238  1.1  plunky 	const uint8_t expect[] = {
    239  1.1  plunky 		0x1c, 0x00, 0x00, 0x01,	// uuid128	0000100-0000-1000-8000-00805f9b34fb
    240  1.1  plunky 		0x00, 0x00, 0x00, 0x10,	//			(L2CAP protocol)
    241  1.1  plunky 		0x00, 0x80, 0x00, 0x00,
    242  1.1  plunky 		0x80, 0x5f, 0x9b, 0x34,
    243  1.1  plunky 		0xfb,
    244  1.1  plunky 	};
    245  1.1  plunky 
    246  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
    247  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
    248  1.1  plunky }
    249  1.1  plunky 
    250  1.1  plunky ATF_TC(check_sdp_put_bool);
    251  1.1  plunky 
    252  1.1  plunky ATF_TC_HEAD(check_sdp_put_bool, tc)
    253  1.1  plunky {
    254  1.2  plunky 
    255  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_bool results");
    256  1.1  plunky }
    257  1.2  plunky 
    258  1.1  plunky ATF_TC_BODY(check_sdp_put_bool, tc)
    259  1.1  plunky {
    260  1.1  plunky 	uint8_t buf[256];
    261  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
    262  1.1  plunky 
    263  1.1  plunky 	ATF_REQUIRE(sdp_put_bool(&test, true));
    264  1.1  plunky 	ATF_REQUIRE(sdp_put_bool(&test, false));
    265  1.1  plunky 	test.end = test.next;
    266  1.1  plunky 	test.next = buf;
    267  1.1  plunky 
    268  1.1  plunky 	const uint8_t expect[] = {
    269  1.1  plunky 		0x28, 0x01,		// bool	true
    270  1.1  plunky 		0x28, 0x00,		// bool	false
    271  1.1  plunky 	};
    272  1.1  plunky 
    273  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
    274  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
    275  1.1  plunky }
    276  1.1  plunky 
    277  1.1  plunky ATF_TC(check_sdp_put_uint);
    278  1.1  plunky 
    279  1.1  plunky ATF_TC_HEAD(check_sdp_put_uint, tc)
    280  1.1  plunky {
    281  1.2  plunky 
    282  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_uint results");
    283  1.1  plunky }
    284  1.2  plunky 
    285  1.1  plunky ATF_TC_BODY(check_sdp_put_uint, tc)
    286  1.1  plunky {
    287  1.1  plunky 	uint8_t buf[256];
    288  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
    289  1.1  plunky 
    290  1.1  plunky 	ATF_REQUIRE(sdp_put_uint(&test, (uintmax_t)0));
    291  1.1  plunky 	ATF_REQUIRE(sdp_put_uint(&test, (uintmax_t)UINT8_MAX));
    292  1.1  plunky 	ATF_REQUIRE(sdp_put_uint(&test, (uintmax_t)UINT8_MAX + 1));
    293  1.1  plunky 	ATF_REQUIRE(sdp_put_uint(&test, (uintmax_t)UINT16_MAX));
    294  1.1  plunky 	ATF_REQUIRE(sdp_put_uint(&test, (uintmax_t)UINT16_MAX + 1));
    295  1.1  plunky 	ATF_REQUIRE(sdp_put_uint(&test, (uintmax_t)UINT32_MAX));
    296  1.1  plunky 	ATF_REQUIRE(sdp_put_uint(&test, (uintmax_t)UINT32_MAX + 1));
    297  1.1  plunky 	ATF_REQUIRE(sdp_put_uint(&test, (uintmax_t)UINT64_MAX));
    298  1.1  plunky 	test.end = test.next;
    299  1.1  plunky 	test.next = buf;
    300  1.1  plunky 
    301  1.1  plunky 	const uint8_t expect[] = {
    302  1.1  plunky 		0x08, 0x00,		// uint8	0x00
    303  1.1  plunky 		0x08, 0xff,		// uint8	0xff
    304  1.1  plunky 		0x09, 0x01, 0x00,	// uint16	0x0100
    305  1.1  plunky 		0x09, 0xff, 0xff,	// uint16	0xffff
    306  1.1  plunky 		0x0a, 0x00, 0x01, 0x00,	// uint32	0x00010000
    307  1.1  plunky 		0x00,
    308  1.1  plunky 		0x0a, 0xff, 0xff, 0xff,	// uint32	0xffffffff
    309  1.1  plunky 		0xff,
    310  1.1  plunky 		0x0b, 0x00, 0x00, 0x00,	// uint64	0x0000000100000000
    311  1.1  plunky 		0x01, 0x00, 0x00, 0x00,
    312  1.1  plunky 		0x00,
    313  1.1  plunky 		0x0b, 0xff, 0xff, 0xff,	// uint64	0xffffffffffffffff
    314  1.1  plunky 		0xff, 0xff, 0xff, 0xff,
    315  1.1  plunky 		0xff,
    316  1.1  plunky 	};
    317  1.1  plunky 
    318  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
    319  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
    320  1.1  plunky }
    321  1.1  plunky 
    322  1.1  plunky ATF_TC(check_sdp_put_uint8);
    323  1.1  plunky 
    324  1.1  plunky ATF_TC_HEAD(check_sdp_put_uint8, tc)
    325  1.1  plunky {
    326  1.2  plunky 
    327  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_uint8 results");
    328  1.1  plunky }
    329  1.2  plunky 
    330  1.1  plunky ATF_TC_BODY(check_sdp_put_uint8, tc)
    331  1.1  plunky {
    332  1.1  plunky 	uint8_t buf[256];
    333  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
    334  1.1  plunky 
    335  1.1  plunky 	ATF_REQUIRE(sdp_put_uint8(&test, (uint8_t)0));
    336  1.1  plunky 	ATF_REQUIRE(sdp_put_uint8(&test, (uint8_t)UINT8_MAX));
    337  1.1  plunky 	test.end = test.next;
    338  1.1  plunky 	test.next = buf;
    339  1.1  plunky 
    340  1.1  plunky 	const uint8_t expect[] = {
    341  1.1  plunky 		0x08, 0x00,		// uint8	0x00
    342  1.1  plunky 		0x08, 0xff,		// uint8	0xff
    343  1.1  plunky 	};
    344  1.1  plunky 
    345  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
    346  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
    347  1.1  plunky }
    348  1.1  plunky 
    349  1.1  plunky ATF_TC(check_sdp_put_uint16);
    350  1.1  plunky 
    351  1.1  plunky ATF_TC_HEAD(check_sdp_put_uint16, tc)
    352  1.1  plunky {
    353  1.2  plunky 
    354  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_uint16 results");
    355  1.1  plunky }
    356  1.2  plunky 
    357  1.1  plunky ATF_TC_BODY(check_sdp_put_uint16, tc)
    358  1.1  plunky {
    359  1.1  plunky 	uint8_t buf[256];
    360  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
    361  1.1  plunky 
    362  1.1  plunky 	ATF_REQUIRE(sdp_put_uint16(&test, (uint16_t)0));
    363  1.1  plunky 	ATF_REQUIRE(sdp_put_uint16(&test, (uint16_t)UINT8_MAX));
    364  1.1  plunky 	ATF_REQUIRE(sdp_put_uint16(&test, (uint16_t)UINT16_MAX));
    365  1.1  plunky 	ATF_REQUIRE(sdp_put_uint16(&test, (uint16_t)0xabcd));
    366  1.1  plunky 	test.end = test.next;
    367  1.1  plunky 	test.next = buf;
    368  1.1  plunky 
    369  1.1  plunky 	const uint8_t expect[] = {
    370  1.1  plunky 		0x09, 0x00, 0x00,	// uint16	0x0000
    371  1.1  plunky 		0x09, 0x00, 0xff,	// uint16	0x00ff
    372  1.1  plunky 		0x09, 0xff, 0xff,	// uint16	0xffff
    373  1.1  plunky 		0x09, 0xab, 0xcd,	// uint16	0xabcd
    374  1.1  plunky 	};
    375  1.1  plunky 
    376  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
    377  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
    378  1.1  plunky }
    379  1.1  plunky 
    380  1.1  plunky ATF_TC(check_sdp_put_uint32);
    381  1.1  plunky 
    382  1.1  plunky ATF_TC_HEAD(check_sdp_put_uint32, tc)
    383  1.1  plunky {
    384  1.2  plunky 
    385  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_uint32 results");
    386  1.1  plunky }
    387  1.2  plunky 
    388  1.1  plunky ATF_TC_BODY(check_sdp_put_uint32, tc)
    389  1.1  plunky {
    390  1.1  plunky 	uint8_t buf[256];
    391  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
    392  1.1  plunky 
    393  1.1  plunky 	ATF_REQUIRE(sdp_put_uint32(&test, (uint32_t)0));
    394  1.1  plunky 	ATF_REQUIRE(sdp_put_uint32(&test, (uint32_t)UINT8_MAX));
    395  1.1  plunky 	ATF_REQUIRE(sdp_put_uint32(&test, (uint32_t)UINT16_MAX));
    396  1.1  plunky 	ATF_REQUIRE(sdp_put_uint32(&test, (uint32_t)UINT32_MAX));
    397  1.1  plunky 	ATF_REQUIRE(sdp_put_uint32(&test, (uint32_t)0xdeadbeef));
    398  1.1  plunky 	test.end = test.next;
    399  1.1  plunky 	test.next = buf;
    400  1.1  plunky 
    401  1.1  plunky 	const uint8_t expect[] = {
    402  1.1  plunky 		0x0a, 0x00, 0x00, 0x00,	// uint32	0x00000000
    403  1.1  plunky 		0x00,
    404  1.1  plunky 		0x0a, 0x00, 0x00, 0x00,	// uint32	0x000000ff
    405  1.1  plunky 		0xff,
    406  1.1  plunky 		0x0a, 0x00, 0x00, 0xff,	// uint32	0x0000ffff
    407  1.1  plunky 		0xff,
    408  1.1  plunky 		0x0a, 0xff, 0xff, 0xff,	// uint32	0xffffffff
    409  1.1  plunky 		0xff,
    410  1.1  plunky 		0x0a, 0xde, 0xad, 0xbe,	// uint32	0xdeadbeef
    411  1.1  plunky 		0xef,
    412  1.1  plunky 	};
    413  1.1  plunky 
    414  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
    415  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
    416  1.1  plunky }
    417  1.1  plunky 
    418  1.1  plunky ATF_TC(check_sdp_put_uint64);
    419  1.1  plunky 
    420  1.1  plunky ATF_TC_HEAD(check_sdp_put_uint64, tc)
    421  1.1  plunky {
    422  1.2  plunky 
    423  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_uint64 results");
    424  1.1  plunky }
    425  1.2  plunky 
    426  1.1  plunky ATF_TC_BODY(check_sdp_put_uint64, tc)
    427  1.1  plunky {
    428  1.1  plunky 	uint8_t buf[256];
    429  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
    430  1.1  plunky 
    431  1.1  plunky 	ATF_REQUIRE(sdp_put_uint64(&test, (uint64_t)0));
    432  1.1  plunky 	ATF_REQUIRE(sdp_put_uint64(&test, (uint64_t)UINT8_MAX));
    433  1.1  plunky 	ATF_REQUIRE(sdp_put_uint64(&test, (uint64_t)UINT16_MAX));
    434  1.1  plunky 	ATF_REQUIRE(sdp_put_uint64(&test, (uint64_t)UINT32_MAX));
    435  1.1  plunky 	ATF_REQUIRE(sdp_put_uint64(&test, (uint64_t)UINT64_MAX));
    436  1.1  plunky 	ATF_REQUIRE(sdp_put_uint64(&test, (uint64_t)0xc0ffeecafec0ffee));
    437  1.1  plunky 	test.end = test.next;
    438  1.1  plunky 	test.next = buf;
    439  1.1  plunky 
    440  1.1  plunky 	const uint8_t expect[] = {
    441  1.1  plunky 		0x0b, 0x00, 0x00, 0x00,	// uint64	0x0000000000000000
    442  1.1  plunky 		0x00, 0x00, 0x00, 0x00,
    443  1.1  plunky 		0x00,
    444  1.1  plunky 		0x0b, 0x00, 0x00, 0x00,	// uint64	0x00000000000000ff
    445  1.1  plunky 		0x00, 0x00, 0x00, 0x00,
    446  1.1  plunky 		0xff,
    447  1.1  plunky 		0x0b, 0x00, 0x00, 0x00,	// uint64	0x000000000000ffff
    448  1.1  plunky 		0x00, 0x00, 0x00, 0xff,
    449  1.1  plunky 		0xff,
    450  1.1  plunky 		0x0b, 0x00, 0x00, 0x00,	// uint64	0x00000000ffffffff
    451  1.1  plunky 		0x00, 0xff, 0xff, 0xff,
    452  1.1  plunky 		0xff,
    453  1.1  plunky 		0x0b, 0xff, 0xff, 0xff,	// uint64	0xffffffffffffffff
    454  1.1  plunky 		0xff, 0xff, 0xff, 0xff,
    455  1.1  plunky 		0xff,
    456  1.1  plunky 		0x0b, 0xc0, 0xff, 0xee,	// uint64	0xc0ffeecafec0ffee
    457  1.1  plunky 		0xca, 0xfe, 0xc0, 0xff,
    458  1.1  plunky 		0xee,
    459  1.1  plunky 	};
    460  1.1  plunky 
    461  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
    462  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
    463  1.1  plunky }
    464  1.1  plunky 
    465  1.1  plunky ATF_TC(check_sdp_put_int);
    466  1.1  plunky 
    467  1.1  plunky ATF_TC_HEAD(check_sdp_put_int, tc)
    468  1.1  plunky {
    469  1.2  plunky 
    470  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_int results");
    471  1.1  plunky }
    472  1.2  plunky 
    473  1.1  plunky ATF_TC_BODY(check_sdp_put_int, tc)
    474  1.1  plunky {
    475  1.1  plunky 	uint8_t buf[256];
    476  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
    477  1.2  plunky 
    478  1.1  plunky 	ATF_REQUIRE(sdp_put_int(&test, (intmax_t)0));
    479  1.1  plunky 	ATF_REQUIRE(sdp_put_int(&test, (intmax_t)INT8_MIN));
    480  1.1  plunky 	ATF_REQUIRE(sdp_put_int(&test, (intmax_t)INT8_MAX));
    481  1.1  plunky 	ATF_REQUIRE(sdp_put_int(&test, (intmax_t)INT8_MIN - 1));
    482  1.1  plunky 	ATF_REQUIRE(sdp_put_int(&test, (intmax_t)INT8_MAX + 1));
    483  1.1  plunky 	ATF_REQUIRE(sdp_put_int(&test, (intmax_t)INT16_MIN));
    484  1.1  plunky 	ATF_REQUIRE(sdp_put_int(&test, (intmax_t)INT16_MAX));
    485  1.1  plunky 	ATF_REQUIRE(sdp_put_int(&test, (intmax_t)INT16_MIN - 1));
    486  1.1  plunky 	ATF_REQUIRE(sdp_put_int(&test, (intmax_t)INT16_MAX + 1));
    487  1.1  plunky 	ATF_REQUIRE(sdp_put_int(&test, (intmax_t)INT32_MIN));
    488  1.1  plunky 	ATF_REQUIRE(sdp_put_int(&test, (intmax_t)INT32_MAX));
    489  1.1  plunky 	ATF_REQUIRE(sdp_put_int(&test, (intmax_t)INT32_MIN - 1));
    490  1.1  plunky 	ATF_REQUIRE(sdp_put_int(&test, (intmax_t)INT32_MAX + 1));
    491  1.1  plunky 	ATF_REQUIRE(sdp_put_int(&test, (intmax_t)INT64_MIN));
    492  1.1  plunky 	ATF_REQUIRE(sdp_put_int(&test, (intmax_t)INT64_MAX));
    493  1.1  plunky 	test.end = test.next;
    494  1.1  plunky 	test.next = buf;
    495  1.1  plunky 
    496  1.1  plunky 	const uint8_t expect[] = {
    497  1.1  plunky 		0x10, 0x00,		// int8		0
    498  1.1  plunky 		0x10, 0x80,		// int8		-128
    499  1.1  plunky 		0x10, 0x7f,		// int8		127
    500  1.1  plunky 		0x11, 0xff, 0x7f,	// int16	-129
    501  1.1  plunky 		0x11, 0x00, 0x80,	// int16	128
    502  1.1  plunky 		0x11, 0x80, 0x00,	// int16	-32768
    503  1.1  plunky 		0x11, 0x7f, 0xff,	// int16	32767
    504  1.1  plunky 		0x12, 0xff, 0xff, 0x7f,	// int32	-32769
    505  1.1  plunky 		0xff,
    506  1.1  plunky 		0x12, 0x00, 0x00, 0x80,	// int32	32768
    507  1.1  plunky 		0x00,
    508  1.1  plunky 		0x12, 0x80, 0x00, 0x00,	// int32	-2147483648
    509  1.1  plunky 		0x00,
    510  1.1  plunky 		0x12, 0x7f, 0xff, 0xff,	// int32	2147483647
    511  1.1  plunky 		0xff,
    512  1.1  plunky 		0x13, 0xff, 0xff, 0xff,	// int64	-2147483649
    513  1.1  plunky 		0xff, 0x7f, 0xff, 0xff,
    514  1.1  plunky 		0xff,
    515  1.1  plunky 		0x13, 0x00, 0x00, 0x00,	// int64	2147483648
    516  1.1  plunky 		0x00, 0x80, 0x00, 0x00,
    517  1.1  plunky 		0x00,
    518  1.1  plunky 		0x13, 0x80, 0x00, 0x00,	// int64	-9223372036854775808
    519  1.1  plunky 		0x00, 0x00, 0x00, 0x00,
    520  1.1  plunky 		0x00,
    521  1.1  plunky 		0x13, 0x7f, 0xff, 0xff,	// int64	9223372036854775807
    522  1.1  plunky 		0xff, 0xff, 0xff, 0xff,
    523  1.1  plunky 		0xff,
    524  1.1  plunky 	};
    525  1.1  plunky 
    526  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
    527  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
    528  1.1  plunky }
    529  1.1  plunky 
    530  1.1  plunky ATF_TC(check_sdp_put_int8);
    531  1.1  plunky 
    532  1.1  plunky ATF_TC_HEAD(check_sdp_put_int8, tc)
    533  1.1  plunky {
    534  1.2  plunky 
    535  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_int8 results");
    536  1.1  plunky }
    537  1.2  plunky 
    538  1.1  plunky ATF_TC_BODY(check_sdp_put_int8, tc)
    539  1.1  plunky {
    540  1.1  plunky 	uint8_t buf[256];
    541  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
    542  1.1  plunky 
    543  1.1  plunky 	ATF_REQUIRE(sdp_put_int8(&test, (int8_t)0));
    544  1.1  plunky 	ATF_REQUIRE(sdp_put_int8(&test, (int8_t)INT8_MIN));
    545  1.1  plunky 	ATF_REQUIRE(sdp_put_int8(&test, (int8_t)INT8_MAX));
    546  1.1  plunky 	test.end = test.next;
    547  1.1  plunky 	test.next = buf;
    548  1.1  plunky 
    549  1.1  plunky 	const uint8_t expect[] = {
    550  1.1  plunky 		0x10, 0x00,		// int8		0
    551  1.1  plunky 		0x10, 0x80,		// int8		-128
    552  1.1  plunky 		0x10, 0x7f,		// int8		127
    553  1.1  plunky 	};
    554  1.1  plunky 
    555  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
    556  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
    557  1.1  plunky }
    558  1.1  plunky 
    559  1.1  plunky ATF_TC(check_sdp_put_int16);
    560  1.1  plunky 
    561  1.1  plunky ATF_TC_HEAD(check_sdp_put_int16, tc)
    562  1.1  plunky {
    563  1.2  plunky 
    564  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_int16 results");
    565  1.1  plunky }
    566  1.2  plunky 
    567  1.1  plunky ATF_TC_BODY(check_sdp_put_int16, tc)
    568  1.1  plunky {
    569  1.1  plunky 	uint8_t buf[256];
    570  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
    571  1.1  plunky 
    572  1.1  plunky 	ATF_REQUIRE(sdp_put_int16(&test, (int16_t)0));
    573  1.1  plunky 	ATF_REQUIRE(sdp_put_int16(&test, (int16_t)INT8_MIN));
    574  1.1  plunky 	ATF_REQUIRE(sdp_put_int16(&test, (int16_t)INT8_MAX));
    575  1.1  plunky 	ATF_REQUIRE(sdp_put_int16(&test, (int16_t)INT16_MIN));
    576  1.1  plunky 	ATF_REQUIRE(sdp_put_int16(&test, (int16_t)INT16_MAX));
    577  1.1  plunky 	test.end = test.next;
    578  1.1  plunky 	test.next = buf;
    579  1.1  plunky 
    580  1.1  plunky 	const uint8_t expect[] = {
    581  1.1  plunky 		0x11, 0x00, 0x00,	// int16	0
    582  1.1  plunky 		0x11, 0xff, 0x80,	// int16	-128
    583  1.1  plunky 		0x11, 0x00, 0x7f,	// int16	127
    584  1.1  plunky 		0x11, 0x80, 0x00,	// int16	-32768
    585  1.1  plunky 		0x11, 0x7f, 0xff,	// int16	32767
    586  1.1  plunky 	};
    587  1.1  plunky 
    588  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
    589  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
    590  1.1  plunky }
    591  1.1  plunky 
    592  1.1  plunky ATF_TC(check_sdp_put_int32);
    593  1.1  plunky 
    594  1.1  plunky ATF_TC_HEAD(check_sdp_put_int32, tc)
    595  1.1  plunky {
    596  1.2  plunky 
    597  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_int32 results");
    598  1.1  plunky }
    599  1.2  plunky 
    600  1.1  plunky ATF_TC_BODY(check_sdp_put_int32, tc)
    601  1.1  plunky {
    602  1.1  plunky 	uint8_t buf[256];
    603  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
    604  1.1  plunky 
    605  1.1  plunky 	ATF_REQUIRE(sdp_put_int32(&test, (int32_t)0));
    606  1.1  plunky 	ATF_REQUIRE(sdp_put_int32(&test, (int32_t)INT8_MIN));
    607  1.1  plunky 	ATF_REQUIRE(sdp_put_int32(&test, (int32_t)INT8_MAX));
    608  1.1  plunky 	ATF_REQUIRE(sdp_put_int32(&test, (int32_t)INT16_MIN));
    609  1.1  plunky 	ATF_REQUIRE(sdp_put_int32(&test, (int32_t)INT16_MAX));
    610  1.1  plunky 	ATF_REQUIRE(sdp_put_int32(&test, (int32_t)INT32_MIN));
    611  1.1  plunky 	ATF_REQUIRE(sdp_put_int32(&test, (int32_t)INT32_MAX));
    612  1.1  plunky 	test.end = test.next;
    613  1.1  plunky 	test.next = buf;
    614  1.1  plunky 
    615  1.1  plunky 	const uint8_t expect[] = {
    616  1.1  plunky 		0x12, 0x00, 0x00, 0x00,	// int32	0
    617  1.1  plunky 		0x00,
    618  1.1  plunky 		0x12, 0xff, 0xff, 0xff,	// int32	-128
    619  1.1  plunky 		0x80,
    620  1.1  plunky 		0x12, 0x00, 0x00, 0x00,	// int32	127
    621  1.1  plunky 		0x7f,
    622  1.1  plunky 		0x12, 0xff, 0xff, 0x80,	// int32	-32768
    623  1.1  plunky 		0x00,
    624  1.1  plunky 		0x12, 0x00, 0x00, 0x7f,	// int32	32767
    625  1.1  plunky 		0xff,
    626  1.1  plunky 		0x12, 0x80, 0x00, 0x00,	// int32	-2147483648
    627  1.1  plunky 		0x00,
    628  1.1  plunky 		0x12, 0x7f, 0xff, 0xff,	// int32	2147483647
    629  1.1  plunky 		0xff,
    630  1.1  plunky 	};
    631  1.1  plunky 
    632  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
    633  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
    634  1.1  plunky }
    635  1.1  plunky 
    636  1.1  plunky ATF_TC(check_sdp_put_int64);
    637  1.1  plunky 
    638  1.1  plunky ATF_TC_HEAD(check_sdp_put_int64, tc)
    639  1.1  plunky {
    640  1.2  plunky 
    641  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_int64 results");
    642  1.1  plunky }
    643  1.2  plunky 
    644  1.1  plunky ATF_TC_BODY(check_sdp_put_int64, tc)
    645  1.1  plunky {
    646  1.1  plunky 	uint8_t buf[256];
    647  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
    648  1.1  plunky 
    649  1.1  plunky 	ATF_REQUIRE(sdp_put_int64(&test, (int64_t)0));
    650  1.1  plunky 	ATF_REQUIRE(sdp_put_int64(&test, (int64_t)INT8_MIN));
    651  1.1  plunky 	ATF_REQUIRE(sdp_put_int64(&test, (int64_t)INT8_MAX));
    652  1.1  plunky 	ATF_REQUIRE(sdp_put_int64(&test, (int64_t)INT16_MIN));
    653  1.1  plunky 	ATF_REQUIRE(sdp_put_int64(&test, (int64_t)INT16_MAX));
    654  1.1  plunky 	ATF_REQUIRE(sdp_put_int64(&test, (int64_t)INT32_MIN));
    655  1.1  plunky 	ATF_REQUIRE(sdp_put_int64(&test, (int64_t)INT32_MAX));
    656  1.1  plunky 	ATF_REQUIRE(sdp_put_int64(&test, (int64_t)INT64_MIN));
    657  1.1  plunky 	ATF_REQUIRE(sdp_put_int64(&test, (int64_t)INT64_MAX));
    658  1.1  plunky 	test.end = test.next;
    659  1.1  plunky 	test.next = buf;
    660  1.1  plunky 
    661  1.1  plunky 	const uint8_t expect[] = {
    662  1.1  plunky 		0x13, 0x00, 0x00, 0x00,	// int64	0
    663  1.1  plunky 		0x00, 0x00, 0x00, 0x00,
    664  1.1  plunky 		0x00,
    665  1.1  plunky 		0x13, 0xff, 0xff, 0xff,	// int64	-128
    666  1.1  plunky 		0xff, 0xff, 0xff, 0xff,
    667  1.1  plunky 		0x80,
    668  1.1  plunky 		0x13, 0x00, 0x00, 0x00,	// int64	127
    669  1.1  plunky 		0x00, 0x00, 0x00, 0x00,
    670  1.1  plunky 		0x7f,
    671  1.1  plunky 		0x13, 0xff, 0xff, 0xff,	// int64	-32768
    672  1.1  plunky 		0xff, 0xff, 0xff, 0x80,
    673  1.1  plunky 		0x00,
    674  1.1  plunky 		0x13, 0x00, 0x00, 0x00,	// int64	32767
    675  1.1  plunky 		0x00, 0x00, 0x00, 0x7f,
    676  1.1  plunky 		0xff,
    677  1.1  plunky 		0x13, 0xff, 0xff, 0xff,	// int64	-2147483648
    678  1.1  plunky 		0xff, 0x80, 0x00, 0x00,
    679  1.1  plunky 		0x00,
    680  1.1  plunky 		0x13, 0x00, 0x00, 0x00,	// int64	2147483647
    681  1.1  plunky 		0x00, 0x7f, 0xff, 0xff,
    682  1.1  plunky 		0xff,
    683  1.1  plunky 		0x13, 0x80, 0x00, 0x00,	// int64	-9223372036854775808
    684  1.1  plunky 		0x00, 0x00, 0x00, 0x00,
    685  1.1  plunky 		0x00,
    686  1.1  plunky 		0x13, 0x7f, 0xff, 0xff,	// int64	9223372036854775807
    687  1.1  plunky 		0xff, 0xff, 0xff, 0xff,
    688  1.1  plunky 		0xff,
    689  1.1  plunky 	};
    690  1.1  plunky 
    691  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
    692  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
    693  1.1  plunky }
    694  1.1  plunky 
    695  1.1  plunky ATF_TC(check_sdp_put_seq);
    696  1.1  plunky 
    697  1.1  plunky ATF_TC_HEAD(check_sdp_put_seq, tc)
    698  1.1  plunky {
    699  1.2  plunky 
    700  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_seq results");
    701  1.1  plunky }
    702  1.2  plunky 
    703  1.1  plunky ATF_TC_BODY(check_sdp_put_seq, tc)
    704  1.1  plunky {
    705  1.1  plunky 	uint8_t buf[512];
    706  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
    707  1.1  plunky 
    708  1.1  plunky 	ATF_REQUIRE(sdp_put_seq(&test, (ssize_t)0));
    709  1.1  plunky 	ATF_REQUIRE(sdp_put_seq(&test, (ssize_t)UINT8_MAX));
    710  1.1  plunky 	ATF_REQUIRE(sdp_put_seq(&test, (ssize_t)UINT8_MAX + 1));
    711  1.1  plunky 	ATF_REQUIRE(sdp_put_seq(&test, (ssize_t)-1));
    712  1.1  plunky 	ATF_CHECK_EQ(sdp_put_seq(&test, (ssize_t)UINT16_MAX), false);	/* no room */
    713  1.1  plunky 	ATF_CHECK_EQ(sdp_put_seq(&test, (ssize_t)SSIZE_MAX), false);	/* no room */
    714  1.1  plunky 	test.end = test.next;
    715  1.1  plunky 	test.next = buf;
    716  1.1  plunky 
    717  1.1  plunky 	/* (not a valid element list) */
    718  1.1  plunky 	const uint8_t expect[] = {
    719  1.1  plunky 		0x35, 0x00,		// seq8(0)
    720  1.1  plunky 		0x35, 0xff,		// seq8(255)
    721  1.1  plunky 		0x36, 0x01, 0x00,	// seq16(256)
    722  1.1  plunky 		0x36, 0x01, 0xf6,	// seq16(502)	<- sizeof(buf) - 7 - 3
    723  1.1  plunky 	};
    724  1.1  plunky 
    725  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
    726  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
    727  1.1  plunky }
    728  1.1  plunky 
    729  1.1  plunky ATF_TC(check_sdp_put_alt);
    730  1.1  plunky 
    731  1.1  plunky ATF_TC_HEAD(check_sdp_put_alt, tc)
    732  1.1  plunky {
    733  1.2  plunky 
    734  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_alt results");
    735  1.1  plunky }
    736  1.2  plunky 
    737  1.1  plunky ATF_TC_BODY(check_sdp_put_alt, tc)
    738  1.1  plunky {
    739  1.1  plunky 	uint8_t buf[512];
    740  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
    741  1.1  plunky 
    742  1.1  plunky 	ATF_REQUIRE(sdp_put_alt(&test, (ssize_t)0));
    743  1.1  plunky 	ATF_REQUIRE(sdp_put_alt(&test, (ssize_t)UINT8_MAX));
    744  1.1  plunky 	ATF_REQUIRE(sdp_put_alt(&test, (ssize_t)UINT8_MAX + 1));
    745  1.1  plunky 	ATF_REQUIRE(sdp_put_alt(&test, (ssize_t)-1));
    746  1.1  plunky 	ATF_CHECK_EQ(sdp_put_alt(&test, (ssize_t)UINT16_MAX), false);	/* no room */
    747  1.1  plunky 	ATF_CHECK_EQ(sdp_put_alt(&test, (ssize_t)SSIZE_MAX), false);	/* no room */
    748  1.1  plunky 	test.end = test.next;
    749  1.1  plunky 	test.next = buf;
    750  1.1  plunky 
    751  1.1  plunky 	/* (not a valid element list) */
    752  1.1  plunky 	const uint8_t expect[] = {
    753  1.1  plunky 		0x3d, 0x00,		// alt8(0)
    754  1.1  plunky 		0x3d, 0xff,		// alt8(255)
    755  1.1  plunky 		0x3e, 0x01, 0x00,	// alt16(256)
    756  1.1  plunky 		0x3e, 0x01, 0xf6,	// alt16(502)	<- sizeof(buf) - 7 - 3
    757  1.1  plunky 	};
    758  1.1  plunky 
    759  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
    760  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
    761  1.1  plunky }
    762  1.1  plunky 
    763  1.1  plunky ATF_TC(check_sdp_put_str);
    764  1.1  plunky 
    765  1.1  plunky ATF_TC_HEAD(check_sdp_put_str, tc)
    766  1.1  plunky {
    767  1.2  plunky 
    768  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_str results");
    769  1.1  plunky }
    770  1.2  plunky 
    771  1.1  plunky ATF_TC_BODY(check_sdp_put_str, tc)
    772  1.1  plunky {
    773  1.1  plunky 	uint8_t buf[512];
    774  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
    775  1.1  plunky 
    776  1.1  plunky 	/*
    777  1.1  plunky 	 * this does not test str16 or str32, but that is
    778  1.1  plunky 	 * handled by the same code as sdp_put_seq above..
    779  1.1  plunky 	 */
    780  1.1  plunky 
    781  1.1  plunky 	ATF_REQUIRE(sdp_put_str(&test, "Hello World!", 5));
    782  1.1  plunky 	ATF_REQUIRE(sdp_put_str(&test, "Hello\0World", 11));
    783  1.1  plunky 	ATF_REQUIRE(sdp_put_str(&test, "Hello World!", -1));
    784  1.1  plunky 	ATF_REQUIRE(sdp_put_str(&test, "Hello\0World", -1));
    785  1.1  plunky 	test.end = test.next;
    786  1.1  plunky 	test.next = buf;
    787  1.1  plunky 
    788  1.1  plunky 	const uint8_t expect[] = {
    789  1.1  plunky 		0x25, 0x05, 0x48, 0x65,	// str8		"Hello"
    790  1.1  plunky 		0x6c, 0x6c, 0x6f,
    791  1.1  plunky 		0x25, 0x0b, 0x48, 0x65,	// str8		"Hello\0World"
    792  1.1  plunky 		0x6c, 0x6c, 0x6f, 0x00,
    793  1.1  plunky 		0x57, 0x6f, 0x72, 0x6c,
    794  1.1  plunky 		0x64,
    795  1.1  plunky 		0x25, 0x0c, 0x48, 0x65,	// str8		"Hello World!"
    796  1.1  plunky 		0x6c, 0x6c, 0x6f, 0x20,
    797  1.1  plunky 		0x57, 0x6f, 0x72, 0x6c,
    798  1.1  plunky 		0x64, 0x21,
    799  1.1  plunky 		0x25, 0x05, 0x48, 0x65,	// str8		"Hello"
    800  1.1  plunky 		0x6c, 0x6c, 0x6f,
    801  1.1  plunky 	};
    802  1.1  plunky 
    803  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
    804  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
    805  1.1  plunky }
    806  1.1  plunky 
    807  1.1  plunky ATF_TC(check_sdp_put_url);
    808  1.1  plunky 
    809  1.1  plunky ATF_TC_HEAD(check_sdp_put_url, tc)
    810  1.1  plunky {
    811  1.2  plunky 
    812  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_put_url results");
    813  1.1  plunky }
    814  1.2  plunky 
    815  1.1  plunky ATF_TC_BODY(check_sdp_put_url, tc)
    816  1.1  plunky {
    817  1.1  plunky 	uint8_t buf[512];
    818  1.1  plunky 	sdp_data_t test = { buf, buf + sizeof(buf) };
    819  1.1  plunky 
    820  1.1  plunky 	/*
    821  1.1  plunky 	 * this does not test url16 or url32, but that is
    822  1.1  plunky 	 * handled by the same code as sdp_put_seq above..
    823  1.1  plunky 	 */
    824  1.1  plunky 
    825  1.1  plunky 	ATF_REQUIRE(sdp_put_url(&test, "http://www.netbsd.org/", 21));
    826  1.1  plunky 	ATF_REQUIRE(sdp_put_url(&test, "http://www.netbsd.org/", -1));
    827  1.1  plunky 	test.end = test.next;
    828  1.1  plunky 	test.next = buf;
    829  1.1  plunky 
    830  1.1  plunky 	const uint8_t expect[] = {
    831  1.1  plunky 		0x45, 0x15, 0x68, 0x74,	// url8	"http://www.netbsd.org"
    832  1.1  plunky 		0x74, 0x70, 0x3a, 0x2f,
    833  1.1  plunky 		0x2f, 0x77, 0x77, 0x77,
    834  1.1  plunky 		0x2e, 0x6e, 0x65, 0x74,
    835  1.1  plunky 		0x62, 0x73, 0x64, 0x2e,
    836  1.1  plunky 		0x6f, 0x72, 0x67,
    837  1.1  plunky 		0x45, 0x16, 0x68, 0x74,	// url8	"http://www.netbsd.org/"
    838  1.1  plunky 		0x74, 0x70, 0x3a, 0x2f,
    839  1.1  plunky 		0x2f, 0x77, 0x77, 0x77,
    840  1.1  plunky 		0x2e, 0x6e, 0x65, 0x74,
    841  1.1  plunky 		0x62, 0x73, 0x64, 0x2e,
    842  1.1  plunky 		0x6f, 0x72, 0x67, 0x2f,
    843  1.1  plunky 	};
    844  1.1  plunky 
    845  1.1  plunky 	ATF_REQUIRE_EQ(test.end - test.next, sizeof(expect));
    846  1.1  plunky 	ATF_CHECK(memcmp(expect, test.next, sizeof(expect)) == 0);
    847  1.1  plunky }
    848  1.1  plunky 
    849  1.1  plunky ATF_TP_ADD_TCS(tp)
    850  1.1  plunky {
    851  1.1  plunky 
    852  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_data);
    853  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_attr);
    854  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_uuid);
    855  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_uuid16);
    856  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_uuid32);
    857  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_uuid128);
    858  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_bool);
    859  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_uint);
    860  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_uint8);
    861  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_uint16);
    862  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_uint32);
    863  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_uint64);
    864  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_int);
    865  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_int8);
    866  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_int16);
    867  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_int32);
    868  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_int64);
    869  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_seq);
    870  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_alt);
    871  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_str);
    872  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_put_url);
    873  1.1  plunky 
    874  1.1  plunky 	return atf_no_error();
    875  1.1  plunky }
    876