Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion testing/nettest/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,8 @@ if(CONFIG_TESTING_NET_TEST)
set(SRCS
${CMAKE_CURRENT_LIST_DIR}/others/test_others.c
${CMAKE_CURRENT_LIST_DIR}/others/test_others_common.c
${CMAKE_CURRENT_LIST_DIR}/others/test_others_bufpool.c)
${CMAKE_CURRENT_LIST_DIR}/others/test_others_bufpool.c
${CMAKE_CURRENT_LIST_DIR}/others/test_others_chksum.c)

nuttx_add_application(
NAME
Expand Down
3 changes: 2 additions & 1 deletion testing/nettest/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ endif
ifeq ($(CONFIG_TESTING_NET_OTHERS),y)
MAINSRC += others/test_others.c
PROGNAME += cmocka_net_others
CSRCS += others/test_others_common.c others/test_others_bufpool.c
CSRCS += others/test_others_common.c others/test_others_bufpool.c \
others/test_others_chksum.c
endif

endif
Expand Down
1 change: 1 addition & 0 deletions testing/nettest/others/test_others.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ int main(int argc, FAR char *argv[])
const struct CMUnitTest others_tests[] =
{
cmocka_unit_test(test_others_bufpool),
cmocka_unit_test(test_others_chksum),
};

return cmocka_run_group_tests(others_tests, test_others_group_setup,
Expand Down
1 change: 1 addition & 0 deletions testing/nettest/others/test_others.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,5 +48,6 @@ int test_others_group_teardown(FAR void **state);
****************************************************************************/

void test_others_bufpool(FAR void **state);
void test_others_chksum(FAR void **state);

#endif /* __APPS_TESTING_NETTEST_OTHERS_TEST_OTHERS_H */
63 changes: 63 additions & 0 deletions testing/nettest/others/test_others_chksum.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/****************************************************************************
* apps/testing/nettest/others/test_others_chksum.c
****************************************************************************/

#include <setjmp.h>
#include <stdarg.h>
#include <stddef.h>
#include <stdint.h>
#include <string.h>
#include <cmocka.h>

#include <nuttx/mm/iob.h>
#include <nuttx/net/netdev.h>

#include "test_others.h"

/****************************************************************************
* Public Functions
****************************************************************************/

void test_others_chksum(FAR void **state)
{
struct iob_s iob1;
struct iob_s iob2;
struct iob_s iob3;

uint8_t data1[] = {0xaa, 0xbb, 0xcc};
uint8_t data2[] = {0xdd, 0xee};
uint8_t data[] = {0xaa, 0xbb, 0xcc, 0xdd, 0xee};

uint16_t chained_sum;
uint16_t reference_sum;

memset(&iob1, 0, sizeof(iob1));
memset(&iob2, 0, sizeof(iob2));
memset(&iob3, 0, sizeof(iob3));

/* First IOB: odd number of bytes */

memcpy(iob1.io_data, data1, sizeof(data1));
iob1.io_len = sizeof(data1);
iob1.io_offset = 0;
iob1.io_flink = &iob2;

/* Second IOB: zero-length */

iob2.io_data[0] = 0xdd;
iob2.io_len = 0;
iob2.io_offset = 0;
iob2.io_flink = &iob3;

/* Third IOB: remaining bytes */

memcpy(iob3.io_data, data2, sizeof(data2));
iob3.io_len = sizeof(data2);
iob3.io_offset = 0;
iob3.io_flink = NULL;

chained_sum = chksum_iob(0, &iob1, 0);
reference_sum = chksum(0, data, sizeof(data));

assert_int_equal(chained_sum, reference_sum);
}