Home | History | Annotate | Line # | Download | only in libbluetooth
      1  1.2  plunky /*	$NetBSD: t_sdp_set.c,v 1.2 2011/04/07 08:29:50 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_set_bool);
     39  1.1  plunky 
     40  1.1  plunky ATF_TC_HEAD(check_sdp_set_bool, tc)
     41  1.1  plunky {
     42  1.2  plunky 
     43  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_set_bool results");
     44  1.1  plunky }
     45  1.2  plunky 
     46  1.1  plunky ATF_TC_BODY(check_sdp_set_bool, tc)
     47  1.1  plunky {
     48  1.1  plunky 	uint8_t data[] = {
     49  1.1  plunky 		0x28, 0x00,	// bool	false
     50  1.1  plunky 		0x00,		// nil
     51  1.1  plunky 		0x28,		// bool <invalid>
     52  1.1  plunky 	};
     53  1.1  plunky 	sdp_data_t test = { data, data + sizeof(data) };
     54  1.1  plunky 	sdp_data_t discard;
     55  1.1  plunky 
     56  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_BOOL);
     57  1.1  plunky 	ATF_REQUIRE(sdp_set_bool(&test, true));
     58  1.1  plunky 	ATF_CHECK_EQ(test.next[1], 0x01);
     59  1.1  plunky 	ATF_REQUIRE(sdp_set_bool(&test, false));
     60  1.1  plunky 	ATF_CHECK_EQ(test.next[1], 0x00);
     61  1.1  plunky 	ATF_REQUIRE(sdp_get_data(&test, &discard));
     62  1.1  plunky 
     63  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_NIL);
     64  1.1  plunky 	ATF_CHECK_EQ(sdp_set_bool(&test, true), false);		/* not bool */
     65  1.1  plunky 	ATF_REQUIRE(sdp_get_data(&test, &discard));
     66  1.1  plunky 
     67  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_BOOL);
     68  1.1  plunky 	ATF_CHECK_EQ(sdp_set_bool(&test, true), false);		/* no value */
     69  1.1  plunky }
     70  1.1  plunky 
     71  1.1  plunky ATF_TC(check_sdp_set_uint);
     72  1.1  plunky 
     73  1.1  plunky ATF_TC_HEAD(check_sdp_set_uint, tc)
     74  1.1  plunky {
     75  1.2  plunky 
     76  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_set_uint results");
     77  1.1  plunky }
     78  1.2  plunky 
     79  1.1  plunky ATF_TC_BODY(check_sdp_set_uint, tc)
     80  1.1  plunky {
     81  1.1  plunky 	uint8_t data[] = {
     82  1.1  plunky 		0x08, 0x00,		// uint8	0x00
     83  1.1  plunky 		0x00,			// nil
     84  1.1  plunky 		0x09, 0x00, 0x00,	// uint16	0x0000
     85  1.1  plunky 		0x0a, 0x00, 0x00, 0x00,	// uint32	0x00000000
     86  1.1  plunky 		0x00,
     87  1.1  plunky 		0x0b, 0x00, 0x00, 0x00,	// uint64	0x0000000000000000
     88  1.1  plunky 		0x00, 0x00, 0x00, 0x00,
     89  1.1  plunky 		0x00,
     90  1.1  plunky 		0x0c, 0x00, 0x44, 0x00,	// uint128	0x00440044004400440044004400440044
     91  1.1  plunky 		0x44, 0x00, 0x44, 0x00,
     92  1.1  plunky 		0x44, 0x00, 0x44, 0x00,
     93  1.1  plunky 		0x44, 0x00, 0x44, 0x00,
     94  1.1  plunky 		0x00,
     95  1.1  plunky 		0x09, 0x00,		// uint16	<invalid>
     96  1.1  plunky 	};
     97  1.1  plunky 	sdp_data_t test = { data, data + sizeof(data) };
     98  1.1  plunky 	sdp_data_t discard;
     99  1.1  plunky 
    100  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_UINT8);
    101  1.1  plunky 	ATF_REQUIRE(sdp_set_uint(&test, 0x44));
    102  1.1  plunky 	ATF_CHECK_EQ(sdp_set_uint(&test, UINT8_MAX + 1), false);	/* too big */
    103  1.1  plunky 	ATF_REQUIRE(sdp_get_data(&test, &discard));
    104  1.1  plunky 
    105  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_NIL);
    106  1.1  plunky 	ATF_CHECK_EQ(sdp_set_uint(&test, 0x00), false);			/* not uint */
    107  1.1  plunky 	ATF_REQUIRE(sdp_get_data(&test, &discard));
    108  1.1  plunky 
    109  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_UINT16);
    110  1.1  plunky 	ATF_REQUIRE(sdp_set_uint(&test, 0xabcd));
    111  1.1  plunky 	ATF_CHECK_EQ(sdp_set_uint(&test, UINT16_MAX + 1), false);	/* too big */
    112  1.1  plunky 	ATF_REQUIRE(sdp_get_data(&test, &discard));
    113  1.1  plunky 
    114  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_UINT32);
    115  1.1  plunky 	ATF_REQUIRE(sdp_set_uint(&test, 0xdeadbeef));
    116  1.1  plunky 	ATF_CHECK_EQ(sdp_set_uint(&test, (uintmax_t)UINT32_MAX + 1), false);	/* too big */
    117  1.1  plunky 	ATF_REQUIRE(sdp_get_data(&test, &discard));
    118  1.1  plunky 
    119  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_UINT64);
    120  1.1  plunky 	ATF_REQUIRE(sdp_set_uint(&test, 0xc0ffeecafec0ffee));
    121  1.1  plunky 	ATF_REQUIRE(sdp_get_data(&test, &discard));
    122  1.1  plunky 
    123  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_UINT128);
    124  1.1  plunky 	ATF_REQUIRE(sdp_set_uint(&test, 0xabcdef0123456789));
    125  1.1  plunky 	ATF_REQUIRE(sdp_get_data(&test, &discard));
    126  1.1  plunky 
    127  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_UINT16);
    128  1.1  plunky 	ATF_CHECK_EQ(sdp_set_uint(&test, 0x3344), false);		/* no value */
    129  1.1  plunky 
    130  1.1  plunky 	const uint8_t expect[] = {
    131  1.1  plunky 		0x08, 0x44,		// uint8	0x44
    132  1.1  plunky 		0x00,			// nil
    133  1.1  plunky 		0x09, 0xab, 0xcd,	// uint16	0xabcd
    134  1.1  plunky 		0x0a, 0xde, 0xad, 0xbe,	// uint32	0xdeadbeef
    135  1.1  plunky 		0xef,
    136  1.1  plunky 		0x0b, 0xc0, 0xff, 0xee,	// uint64	0xc0ffeecafec0ffee
    137  1.1  plunky 		0xca, 0xfe, 0xc0, 0xff,
    138  1.1  plunky 		0xee,
    139  1.1  plunky 		0x0c, 0x00, 0x00, 0x00,	// uint128	0x0000000000000000abcdef0123456789
    140  1.1  plunky 		0x00, 0x00, 0x00, 0x00,
    141  1.1  plunky 		0x00, 0xab, 0xcd, 0xef,
    142  1.1  plunky 		0x01, 0x23, 0x45, 0x67,
    143  1.1  plunky 		0x89,
    144  1.1  plunky 		0x09, 0x00,		// uint16	<invalid>
    145  1.1  plunky 	};
    146  1.1  plunky 
    147  1.1  plunky 	ATF_REQUIRE_EQ(sizeof(data), sizeof(expect));
    148  1.1  plunky 	ATF_CHECK(memcmp(expect, data, sizeof(expect)) == 0);
    149  1.1  plunky }
    150  1.1  plunky 
    151  1.1  plunky ATF_TC(check_sdp_set_int);
    152  1.1  plunky 
    153  1.1  plunky ATF_TC_HEAD(check_sdp_set_int, tc)
    154  1.1  plunky {
    155  1.2  plunky 
    156  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_set_int results");
    157  1.1  plunky }
    158  1.2  plunky 
    159  1.1  plunky ATF_TC_BODY(check_sdp_set_int, tc)
    160  1.1  plunky {
    161  1.1  plunky 	uint8_t data[] = {
    162  1.1  plunky 		0x10, 0x00,		// int8		0
    163  1.1  plunky 		0x00,			// nil
    164  1.1  plunky 		0x11, 0x00, 0x00,	// int16	0
    165  1.1  plunky 		0x12, 0x00, 0x00, 0x00,	// int32	0
    166  1.1  plunky 		0x00,
    167  1.1  plunky 		0x13, 0x00, 0x00, 0x00,	// int64	0
    168  1.1  plunky 		0x00, 0x00, 0x00, 0x00,
    169  1.1  plunky 		0x00,
    170  1.1  plunky 		0x14, 0x00, 0x44, 0x00,	// int128	0x00440044004400440044004400440044
    171  1.1  plunky 		0x44, 0x00, 0x44, 0x00,
    172  1.1  plunky 		0x44, 0x00, 0x44, 0x00,
    173  1.1  plunky 		0x44, 0x00, 0x44, 0x00,
    174  1.1  plunky 		0x00,
    175  1.1  plunky 		0x11, 0x00,		// int16	<invalid>
    176  1.1  plunky 	};
    177  1.1  plunky 	sdp_data_t test = { data, data + sizeof(data) };
    178  1.1  plunky 	sdp_data_t discard;
    179  1.1  plunky 
    180  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_INT8);
    181  1.1  plunky 	ATF_REQUIRE(sdp_set_int(&test, -1));
    182  1.1  plunky 	ATF_CHECK_EQ(sdp_set_int(&test, INT8_MAX + 1), false);	/* too big */
    183  1.1  plunky 	ATF_REQUIRE(sdp_get_data(&test, &discard));
    184  1.1  plunky 
    185  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_NIL);
    186  1.1  plunky 	ATF_CHECK_EQ(sdp_set_int(&test, 33), false);		/* not int */
    187  1.1  plunky 	ATF_REQUIRE(sdp_get_data(&test, &discard));
    188  1.1  plunky 
    189  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_INT16);
    190  1.1  plunky 	ATF_REQUIRE(sdp_set_int(&test, 789));
    191  1.1  plunky 	ATF_CHECK_EQ(sdp_set_int(&test, INT16_MIN - 1), false);	/* too big */
    192  1.1  plunky 	ATF_REQUIRE(sdp_get_data(&test, &discard));
    193  1.1  plunky 
    194  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_INT32);
    195  1.1  plunky 	ATF_REQUIRE(sdp_set_int(&test, -4567));
    196  1.1  plunky 	ATF_CHECK_EQ(sdp_set_int(&test, (intmax_t)INT32_MAX + 1), false);	/* too big */
    197  1.1  plunky 	ATF_REQUIRE(sdp_get_data(&test, &discard));
    198  1.1  plunky 
    199  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_INT64);
    200  1.1  plunky 	ATF_REQUIRE(sdp_set_int(&test, -3483738234));
    201  1.1  plunky 	ATF_REQUIRE(sdp_get_data(&test, &discard));
    202  1.1  plunky 
    203  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_INT128);
    204  1.1  plunky 	ATF_REQUIRE(sdp_set_int(&test, 3423489463464));
    205  1.1  plunky 	ATF_REQUIRE(sdp_get_data(&test, &discard));
    206  1.1  plunky 
    207  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_INT16);
    208  1.1  plunky 	ATF_CHECK_EQ(sdp_set_int(&test, 1234), false);		/* no value */
    209  1.1  plunky 
    210  1.1  plunky 	const uint8_t expect[] = {
    211  1.1  plunky 		0x10, 0xff,		// int8		-1
    212  1.1  plunky 		0x00,			// nil
    213  1.1  plunky 		0x11, 0x03, 0x15,	// int16	789
    214  1.1  plunky 		0x12, 0xff, 0xff, 0xee,	// int32	-4567
    215  1.1  plunky 		0x29,
    216  1.1  plunky 		0x13, 0xff, 0xff, 0xff,	// int64	-3483738234
    217  1.1  plunky 		0xff, 0x30, 0x5a, 0x5f,
    218  1.1  plunky 		0x86,
    219  1.1  plunky 		0x14, 0x00, 0x00, 0x00,	// int128	3423489463464
    220  1.1  plunky 		0x00, 0x00, 0x00, 0x00,
    221  1.1  plunky 		0x00, 0x00, 0x00, 0x03,
    222  1.1  plunky 		0x1d, 0x17, 0xdf, 0x94,
    223  1.1  plunky 		0xa8,
    224  1.1  plunky 		0x11, 0x00,		// int16	<invalid>
    225  1.1  plunky 	};
    226  1.1  plunky 
    227  1.1  plunky 	ATF_REQUIRE_EQ(sizeof(data), sizeof(expect));
    228  1.1  plunky 	ATF_CHECK(memcmp(expect, data, sizeof(expect)) == 0);
    229  1.1  plunky }
    230  1.1  plunky 
    231  1.1  plunky ATF_TC(check_sdp_set_seq);
    232  1.1  plunky 
    233  1.1  plunky ATF_TC_HEAD(check_sdp_set_seq, tc)
    234  1.1  plunky {
    235  1.2  plunky 
    236  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_set_seq results");
    237  1.1  plunky }
    238  1.2  plunky 
    239  1.1  plunky ATF_TC_BODY(check_sdp_set_seq, tc)
    240  1.1  plunky {
    241  1.1  plunky 	uint8_t data[] = {
    242  1.1  plunky 		0x35, 0x03,		// seq8(3)
    243  1.1  plunky 		0x11, 0xff, 0xff,	//   int16	-1
    244  1.1  plunky 		0x36, 0x01, 0x00,	// seq16(256)
    245  1.1  plunky 		0x09, 0xff, 0xff,	// uint16	0xffff
    246  1.1  plunky 		0x37, 0x01, 0x02, 0x03,	// seq32(16909060)
    247  1.1  plunky 		0x04,
    248  1.1  plunky 		0x36, 0x00,		// seq16(<invalid>)
    249  1.1  plunky 	};
    250  1.1  plunky 	sdp_data_t test = { data, data + sizeof(data) };
    251  1.1  plunky 	sdp_data_t discard;
    252  1.1  plunky 
    253  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_SEQ8);
    254  1.1  plunky 	ATF_REQUIRE(sdp_set_seq(&test, 0));
    255  1.1  plunky 	ATF_CHECK_EQ(sdp_set_seq(&test, UINT8_MAX), false);	/* data too big */
    256  1.1  plunky 	ATF_CHECK_EQ(sdp_set_seq(&test, UINT16_MAX), false);	/* size too big */
    257  1.1  plunky 	ATF_REQUIRE(sdp_get_data(&test, &discard));
    258  1.1  plunky 
    259  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_INT16);
    260  1.1  plunky 	ATF_CHECK_EQ(sdp_set_seq(&test, 33), false);		/* not seq */
    261  1.1  plunky 	ATF_REQUIRE(sdp_get_data(&test, &discard));
    262  1.1  plunky 
    263  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_SEQ16);
    264  1.1  plunky 	ATF_REQUIRE(sdp_set_seq(&test, 3));
    265  1.1  plunky 	ATF_CHECK_EQ(sdp_set_seq(&test, SSIZE_MAX), false);	/* size too big */
    266  1.1  plunky 	ATF_REQUIRE(sdp_get_data(&test, &discard));
    267  1.1  plunky 
    268  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_SEQ32);
    269  1.1  plunky 	ATF_REQUIRE(sdp_set_seq(&test, 0));
    270  1.1  plunky 	ATF_REQUIRE(sdp_get_data(&test, &discard));
    271  1.1  plunky 
    272  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_SEQ16);
    273  1.1  plunky 	ATF_CHECK_EQ(sdp_set_seq(&test, 22), false);		/* no size */
    274  1.1  plunky 
    275  1.1  plunky 	const uint8_t expect[] = {
    276  1.1  plunky 		0x35, 0x00,		// seq8(0)
    277  1.1  plunky 		0x11, 0xff, 0xff,	// int16	-1
    278  1.1  plunky 		0x36, 0x00, 0x03,	// seq16(3)
    279  1.1  plunky 		0x09, 0xff, 0xff,	//   uint16	0xffff
    280  1.1  plunky 		0x37, 0x00, 0x00, 0x00,	// seq32(0)
    281  1.1  plunky 		0x00,
    282  1.1  plunky 		0x36, 0x00,		// seq16(<invalid>)
    283  1.1  plunky 	};
    284  1.1  plunky 
    285  1.1  plunky 	ATF_REQUIRE_EQ(sizeof(data), sizeof(expect));
    286  1.1  plunky 	ATF_CHECK(memcmp(expect, data, sizeof(expect)) == 0);
    287  1.1  plunky }
    288  1.1  plunky 
    289  1.1  plunky ATF_TC(check_sdp_set_alt);
    290  1.1  plunky 
    291  1.1  plunky ATF_TC_HEAD(check_sdp_set_alt, tc)
    292  1.1  plunky {
    293  1.2  plunky 
    294  1.1  plunky 	atf_tc_set_md_var(tc, "descr", "Test sdp_set_alt results");
    295  1.1  plunky }
    296  1.2  plunky 
    297  1.1  plunky ATF_TC_BODY(check_sdp_set_alt, tc)
    298  1.1  plunky {
    299  1.1  plunky 	uint8_t data[] = {
    300  1.1  plunky 		0x3d, 0x06,		// alt8(6)
    301  1.1  plunky 		0x11, 0xff, 0xff,	//   int16	-1
    302  1.1  plunky 		0x3e, 0xff, 0xff,	//   alt16(65535)
    303  1.1  plunky 		0x3f, 0x01, 0x02, 0x03,	// alt32(16909060)
    304  1.1  plunky 		0x04,
    305  1.1  plunky 		0x0a, 0x00, 0x00, 0x00,	// uint32	0x00000003
    306  1.1  plunky 		0x03,
    307  1.1  plunky 		0x3e, 0x00,		// alt16(<invalid>)
    308  1.1  plunky 	};
    309  1.1  plunky 	sdp_data_t test = { data, data + sizeof(data) };
    310  1.1  plunky 	sdp_data_t discard;
    311  1.1  plunky 
    312  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_ALT8);
    313  1.1  plunky 	ATF_REQUIRE(sdp_set_alt(&test, 0));
    314  1.1  plunky 	ATF_CHECK_EQ(sdp_set_alt(&test, UINT8_MAX), false);	/* data too big */
    315  1.1  plunky 	ATF_CHECK_EQ(sdp_set_alt(&test, UINT16_MAX), false);	/* size too big */
    316  1.1  plunky 	ATF_REQUIRE(sdp_get_data(&test, &discard));
    317  1.1  plunky 
    318  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_INT16);
    319  1.1  plunky 	ATF_CHECK_EQ(sdp_set_alt(&test, 27), false);		/* not alt */
    320  1.1  plunky 	ATF_REQUIRE(sdp_get_data(&test, &discard));
    321  1.1  plunky 
    322  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_ALT16);
    323  1.1  plunky 	ATF_REQUIRE(sdp_set_alt(&test, 10));
    324  1.1  plunky 	ATF_CHECK_EQ(sdp_set_alt(&test, SSIZE_MAX), false);	/* size too big */
    325  1.1  plunky 	ATF_REQUIRE(sdp_get_alt(&test, &discard));
    326  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&discard), SDP_DATA_ALT32);
    327  1.1  plunky 	ATF_CHECK(sdp_set_alt(&discard, -1));			/* end of alt16 */
    328  1.1  plunky 	ATF_CHECK_EQ(sdp_set_alt(&discard, 6), false);		/* data too big */
    329  1.1  plunky 
    330  1.1  plunky 	ATF_CHECK_EQ(sdp_data_type(&test), SDP_DATA_ALT16);
    331  1.1  plunky 	ATF_CHECK_EQ(sdp_set_alt(&test, 22), false);		/* no size */
    332  1.1  plunky 
    333  1.1  plunky 	const uint8_t expect[] = {
    334  1.1  plunky 		0x3d, 0x00,		// alt8(0)
    335  1.1  plunky 		0x11, 0xff, 0xff,	// int16	-1
    336  1.1  plunky 		0x3e, 0x00, 0x0a,	// alt16(10)
    337  1.1  plunky 		0x3f, 0x00, 0x00, 0x00,	//   alt32(5)
    338  1.1  plunky 		0x05,
    339  1.1  plunky 		0x0a, 0x00, 0x00, 0x00,	//     uint32	0x00000003
    340  1.1  plunky 		0x03,
    341  1.1  plunky 		0x3e, 0x00,		// alt16(<invalid>)
    342  1.1  plunky 	};
    343  1.1  plunky 
    344  1.1  plunky 	ATF_REQUIRE_EQ(sizeof(data), sizeof(expect));
    345  1.1  plunky 	ATF_CHECK(memcmp(expect, data, sizeof(expect)) == 0);
    346  1.1  plunky }
    347  1.1  plunky 
    348  1.1  plunky 
    349  1.1  plunky ATF_TP_ADD_TCS(tp)
    350  1.1  plunky {
    351  1.1  plunky 
    352  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_set_bool);
    353  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_set_uint);
    354  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_set_int);
    355  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_set_seq);
    356  1.1  plunky 	ATF_TP_ADD_TC(tp, check_sdp_set_alt);
    357  1.1  plunky 
    358  1.1  plunky 	return atf_no_error();
    359  1.1  plunky }
    360