1/*
2 * Test harness for encoding and decoding base functions.
3 *
4 * Copyright (C) 2015, Broadcom Corporation
5 * All Rights Reserved.
6 *
7 * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Broadcom Corporation;
8 * the contents of this file may not be disclosed to third parties, copied
9 * or duplicated in any form, in whole or in part, without the prior
10 * written permission of Broadcom Corporation.
11 *
12 * $Id:$
13 */
14
15#include <stdio.h>
16#include <stdlib.h>
17#include <string.h>
18#include "test.h"
19#include "trace.h"
20#include "bcm_encode.h"
21#include "bcm_decode.h"
22
23TEST_DECLARE();
24
25#define BUFFER_SIZE		256
26static uint8 buffer[BUFFER_SIZE];
27static bcm_encode_t enc;
28
29/* --------------------------------------------------------------- */
30
31static void testEncode(void)
32{
33	uint8 data[BUFFER_SIZE];
34
35	TEST(bcm_encode_init(&enc, BUFFER_SIZE, buffer), "bcm_encode_init failed");
36
37	TEST(bcm_encode_be16(&enc, 0x1122) == 2, "bcm_encode_be16 failed");
38	TEST(bcm_encode_be32(&enc, 0x11223344) == 4, "bcm_encode_be32 failed");
39	TEST(bcm_encode_le16(&enc, 0xaabb) == 2, "bcm_encode_le16 failed");
40	TEST(bcm_encode_le32(&enc, 0xaabbccdd) == 4, "bcm_encode_le32 failed");
41
42	/* packet full */
43	TEST(bcm_encode_bytes(&enc, BUFFER_SIZE, data) == 0, "bcm_encode_bytes failed");
44	TEST(bcm_encode_length(&enc) == 12, "bcm_encode_length failed");
45}
46
47static void testDecode(void)
48{
49	bcm_decode_t dec;
50	uint16 data16;
51	uint32 data32;
52
53	TEST(bcm_decode_init(&dec, bcm_encode_length(&enc),
54		bcm_encode_buf(&enc)), "bcm_decode_init failed");
55	WL_PRPKT("decode packet", bcm_decode_buf(&dec), bcm_decode_buf_length(&dec));
56
57	data16 = 0;
58	TEST(bcm_decode_be16(&dec, &data16) == 2, "bcm_decode_be16 failed");
59	TEST(data16 == 0x1122, "invalid data");
60	data32 = 0;
61	TEST(bcm_decode_be32(&dec, &data32) == 4, "bcm_decode_be32 failed");
62	TEST(data32 == 0x11223344, "invalid data");
63	data16 = 0;
64	TEST(bcm_decode_le16(&dec, &data16) == 2, "bcm_decode_le16 failed");
65	TEST(data16 == 0xaabb, "invalid data");
66	data32 = 0;
67	TEST(bcm_decode_le32(&dec, &data32) == 4, "bcm_decode_le32 failed");
68	TEST(data32 == 0xaabbccdd, "invalid data");
69
70	/* decode beyond buffer */
71	TEST(bcm_decode_be16(&dec, &data16) == 0, "bcm_decode_be16 failed");
72	TEST(bcm_decode_be32(&dec, &data32) == 0, "bcm_decode_be32 failed");
73	TEST(bcm_decode_le16(&dec, &data16) == 0, "bcm_decode_le16 failed");
74	TEST(bcm_decode_le32(&dec, &data32) == 0, "bcm_decode_le32 failed");
75}
76
77
78int main(int argc, char **argv)
79{
80	(void) argc;
81	(void) argv;
82
83	TRACE_LEVEL_SET(TRACE_ALL);
84	TEST_INITIALIZE();
85
86	testEncode();
87	testDecode();
88
89	TEST_FINALIZE();
90	return 0;
91}
92