xref: /spdk/test/unit/lib/reduce/queue_internal.h/queue_internal_ut.c (revision 8d3f8fb818735d717730489685debac3c814d0ac)
1 /*   SPDX-License-Identifier: BSD-3-Clause
2  *   Copyright (C) 2016 Intel Corporation.
3  *   All rights reserved.
4  *   Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
5  */
6 
7 #include "spdk/stdinc.h"
8 
9 #include "spdk_internal/cunit.h"
10 
11 #include "reduce/queue_internal.h"
12 
13 static void
14 test_queue_create(void)
15 {
16 	struct reduce_queue queue;
17 
18 	queue_init(&queue);
19 	CU_ASSERT(queue_empty(&queue) == true);
20 	CU_ASSERT(queue_full(&queue) == false);
21 	CU_ASSERT(queue_size(&queue) == 0);
22 }
23 
24 static void
25 test_queue_enqueue_dequeue(void)
26 {
27 	int64_t value;
28 	struct reduce_queue queue;
29 
30 	queue_init(&queue);
31 
32 	CU_ASSERT(queue_enqueue(&queue, 10) == true);
33 	CU_ASSERT(queue_enqueue(&queue, 20) == true);
34 	CU_ASSERT(queue_enqueue(&queue, 30) == true);
35 	CU_ASSERT(queue_size(&queue) == 3);
36 
37 	CU_ASSERT(queue_dequeue(&queue, &value) == true);
38 	CU_ASSERT(value == 10);
39 	CU_ASSERT(queue_size(&queue) == 2);
40 
41 	CU_ASSERT(queue_dequeue(&queue, &value) == true);
42 	CU_ASSERT(value == 20);
43 	CU_ASSERT(queue_size(&queue) == 1);
44 }
45 
46 static void
47 test_queue_full(void)
48 {
49 	int i;
50 	struct reduce_queue queue;
51 
52 	queue_init(&queue);
53 
54 	for (i = 1; i < REDUCE_QUEUE_CAPACITY_SIZE; i++) {
55 		CU_ASSERT(queue_enqueue(&queue, i) == true);
56 	}
57 	CU_ASSERT(queue_full(&queue) == true);
58 
59 	CU_ASSERT(queue_enqueue(&queue, 40) == false);  /* Queue is full */
60 }
61 
62 static void
63 test_queue_empty(void)
64 {
65 	int64_t value;
66 
67 	struct reduce_queue queue;
68 
69 	queue_init(&queue);
70 
71 	CU_ASSERT(queue_empty(&queue) == true);
72 	CU_ASSERT(queue_enqueue(&queue, 10) == true);
73 	CU_ASSERT(queue_empty(&queue) == false);
74 
75 	CU_ASSERT(queue_dequeue(&queue, &value) == true);
76 	CU_ASSERT(queue_empty(&queue) == true);
77 }
78 
79 int
80 main(int argc, char **argv)
81 {
82 	CU_pSuite	suite = NULL;
83 	unsigned int	num_failures;
84 
85 	CU_initialize_registry();
86 
87 	suite = CU_add_suite("reduce_queue", NULL, NULL);
88 
89 	CU_ADD_TEST(suite, test_queue_create);
90 	CU_ADD_TEST(suite, test_queue_enqueue_dequeue);
91 	CU_ADD_TEST(suite, test_queue_empty);
92 	CU_ADD_TEST(suite, test_queue_create);
93 	CU_ADD_TEST(suite, test_queue_full);
94 
95 	num_failures = spdk_ut_run_tests(argc, argv, NULL);
96 	CU_cleanup_registry();
97 
98 	return num_failures;
99 }
100