1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright (C) 2017 Intel Corporation.
3 * All rights reserved.
4 */
5
6 #include "spdk/stdinc.h"
7
8 #include "spdk_internal/cunit.h"
9
10 #include "util/crc16.c"
11
12 static void
test_crc16_t10dif(void)13 test_crc16_t10dif(void)
14 {
15 uint16_t crc;
16 char buf[] = "123456789";
17
18 crc = spdk_crc16_t10dif(0, buf, strlen(buf));
19 CU_ASSERT(crc == 0xd0db);
20 }
21
22 static void
test_crc16_t10dif_seed(void)23 test_crc16_t10dif_seed(void)
24 {
25 uint16_t crc = 0;
26 char buf1[] = "1234";
27 char buf2[] = "56789";
28
29 crc = spdk_crc16_t10dif(crc, buf1, strlen(buf1));
30 crc = spdk_crc16_t10dif(crc, buf2, strlen(buf2));
31 CU_ASSERT(crc == 0xd0db);
32 }
33
34 static void
test_crc16_t10dif_copy(void)35 test_crc16_t10dif_copy(void)
36 {
37 uint16_t crc1 = 0, crc2;
38 char buf1[] = "1234";
39 char buf2[] = "56789";
40 char *buf3 = calloc(1, strlen(buf1) + strlen(buf2) + 1);
41 SPDK_CU_ASSERT_FATAL(buf3 != NULL);
42
43 crc1 = spdk_crc16_t10dif_copy(crc1, buf3, buf1, strlen(buf1));
44 crc1 = spdk_crc16_t10dif_copy(crc1, buf3 + strlen(buf1), buf2, strlen(buf2));
45 CU_ASSERT(crc1 == 0xd0db);
46
47 crc2 = spdk_crc16_t10dif(0, buf3, strlen(buf3));
48 CU_ASSERT(crc2 == 0xd0db);
49
50 free(buf3);
51 }
52
53 int
main(int argc,char ** argv)54 main(int argc, char **argv)
55 {
56 CU_pSuite suite = NULL;
57 unsigned int num_failures;
58
59 CU_initialize_registry();
60
61 suite = CU_add_suite("crc16", NULL, NULL);
62
63 CU_ADD_TEST(suite, test_crc16_t10dif);
64 CU_ADD_TEST(suite, test_crc16_t10dif_seed);
65 CU_ADD_TEST(suite, test_crc16_t10dif_copy);
66
67
68 num_failures = spdk_ut_run_tests(argc, argv, NULL);
69
70 CU_cleanup_registry();
71
72 return num_failures;
73 }
74