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