21
21
#include < catch2/catch.hpp>
22
22
#include " prime-time/is-prime-request.h"
23
23
24
+ #include " utils/queue.h"
25
+
24
26
#define PRIME_TRUE " {\" method\" :\" isPrime\" ,\" prime\" :true}\n "
25
27
#define PRIME_FALSE " {\" method\" :\" isPrime\" ,\" prime\" :false}\n "
26
28
#define PRIME_MALFORMED \
27
29
" {\" method\" :\" isPrime\" ,\" prime\" :\" ill-formed-request!!!\" }\n "
28
30
29
31
TEST_CASE (" is_prime_request_builder handles valid requests" , " [request]" )
30
32
{
33
+ char *data;
34
+ int size;
31
35
struct is_prime_request * request = NULL ;
36
+ struct queue *sdqu = NULL ;
37
+ queue_init (&sdqu, 1024 );
38
+
32
39
33
40
SECTION (" Valid request with prime number" )
34
41
{
35
42
char raw_request[] = " {\" method\" :\" isPrime\" ,\" number\" :17}\n " ;
36
- REQUIRE (is_prime_request_builder (&request, raw_request, strlen (raw_request))
43
+ REQUIRE (is_prime_request_builder (sdqu, &request, raw_request, strlen (raw_request))
37
44
== 1 );
38
45
REQUIRE (request != NULL );
39
46
REQUIRE (request->number == 17 );
40
47
REQUIRE (request->is_prime == true );
41
48
REQUIRE (request->is_malformed == false );
42
49
REQUIRE (request->next == NULL );
43
- REQUIRE (strcmp (request->response , PRIME_TRUE) == 0 );
50
+ size = queue_pop_no_copy (sdqu, &data);
51
+ REQUIRE (strncmp (data, PRIME_TRUE, size) == 0 );
44
52
}
45
53
46
54
SECTION (" Valid request with non-prime number" )
47
55
{
48
56
char raw_request[] = " {\" method\" :\" isPrime\" ,\" number\" :24}\n " ;
49
- REQUIRE (is_prime_request_builder (&request, raw_request, strlen (raw_request))
57
+ REQUIRE (is_prime_request_builder (sdqu, &request, raw_request, strlen (raw_request))
50
58
== 1 );
51
59
REQUIRE (request != NULL );
52
60
REQUIRE (request->number == 24 );
53
61
REQUIRE (request->is_prime == false );
54
62
REQUIRE (request->is_malformed == false );
55
63
REQUIRE (request->next == NULL );
56
- REQUIRE (strcmp (request->response , PRIME_FALSE) == 0 );
64
+ size = queue_pop_no_copy (sdqu, &data);
65
+ REQUIRE (strncmp (data, PRIME_FALSE, size) == 0 );
57
66
}
58
67
59
68
SECTION (" Valid request with floating-point number" )
60
69
{
61
70
char raw_request[] = " {\" method\" :\" isPrime\" ,\" number\" :17.5}\n " ;
62
- REQUIRE (is_prime_request_builder (&request, raw_request, strlen (raw_request))
71
+ REQUIRE (is_prime_request_builder (sdqu, &request, raw_request, strlen (raw_request))
63
72
== 1 );
64
73
REQUIRE (request != NULL );
65
74
REQUIRE (request->is_prime == false );
66
75
REQUIRE (request->is_malformed == true );
67
76
REQUIRE (request->next == NULL );
68
- REQUIRE (strcmp (request->response , PRIME_MALFORMED) == 0 );
77
+ size = queue_pop_no_copy (sdqu, &data);
78
+ REQUIRE (strncmp (data, PRIME_MALFORMED, size) == 0 );
69
79
}
70
80
71
81
SECTION (
72
82
" Valid composite request with prime number; followed by non prime "
73
83
" request" )
74
84
{
85
+ char response[1024 ];
75
86
char raw_request[] =
76
87
" {\" method\" :\" isPrime\" ,\" number\" :17}\n {\" method\" :\" isPrime\" ,"
77
88
" \" number\" :24}\n " ;
78
- REQUIRE (is_prime_request_builder (&request, raw_request, strlen (raw_request))
89
+ REQUIRE (is_prime_request_builder (sdqu, &request, raw_request, strlen (raw_request))
79
90
== 2 );
80
91
REQUIRE (request != NULL );
81
92
REQUIRE (request->number == 17 );
82
93
REQUIRE (request->is_prime == true );
83
94
REQUIRE (request->is_malformed == false );
84
95
REQUIRE (request->next != NULL );
85
- REQUIRE (strcmp (request->response , PRIME_TRUE) == 0 );
86
96
struct is_prime_request * next = request->next ;
87
97
REQUIRE (next->number == 24 );
88
98
REQUIRE (next->is_prime == false );
89
99
REQUIRE (request->is_malformed == false );
90
100
REQUIRE (next->next == NULL );
91
- REQUIRE (strcmp (next->response , PRIME_FALSE) == 0 );
101
+
102
+ sprintf (response, " %s%s" , PRIME_TRUE, PRIME_FALSE);
103
+ size = queue_pop_no_copy (sdqu, &data);
104
+ REQUIRE (strncmp (data, response, size) == 0 );
92
105
}
93
106
94
107
if (request)
95
108
is_prime_free (&request);
109
+ if (sdqu)
110
+ queue_free (&sdqu);
96
111
}
97
112
98
113
TEST_CASE (" is_prime_request_builder handles invalid requests" , " [request]" )
99
114
{
115
+ char *data;
116
+ int size;
100
117
struct is_prime_request * request = NULL ;
118
+ struct queue *sdqu = NULL ;
119
+ queue_init (&sdqu, 1024 );
120
+ char response[1024 ];
101
121
102
122
SECTION (" Valid request with prime number" )
103
123
{
104
124
char raw_request[] = " {\" method\" :\" isPrime\" ,\" number\" :\" foo\" }\n " ;
105
- REQUIRE (is_prime_request_builder (&request, raw_request, strlen (raw_request))
125
+ REQUIRE (is_prime_request_builder (sdqu, &request, raw_request, strlen (raw_request))
106
126
== 1 );
107
127
REQUIRE (request != NULL );
108
128
REQUIRE (request->is_prime == false );
109
129
REQUIRE (request->is_malformed == true );
110
130
REQUIRE (request->next == NULL );
111
- REQUIRE (strcmp (request->response , PRIME_MALFORMED) == 0 );
131
+ size = queue_pop_no_copy (sdqu, &data);
132
+ REQUIRE (strncmp (data, PRIME_MALFORMED, size) == 0 );
112
133
}
113
134
114
135
SECTION (
@@ -121,36 +142,38 @@ TEST_CASE("is_prime_request_builder handles invalid requests", "[request]")
121
142
" {\" method\" :\" isPrime\" ,\" number\" :13}\n "
122
143
" {\" method\" :\" isPrime\" ,\" number\" :\" hola\" }\n "
123
144
" {\" method\" :\" isPrime\" ,\" number\" :23}\n " ;
124
- REQUIRE (is_prime_request_builder (&request, raw_request, strlen (raw_request))
145
+ REQUIRE (is_prime_request_builder (sdqu, &request, raw_request, strlen (raw_request))
125
146
== 4 );
126
147
REQUIRE (request != NULL );
127
148
REQUIRE (request->number == 72727 );
128
149
REQUIRE (request->is_prime == true );
129
150
REQUIRE (request->is_malformed == false );
130
151
REQUIRE (request->next != NULL );
131
- REQUIRE (strcmp (request->response , PRIME_TRUE) == 0 );
132
152
133
153
struct is_prime_request * next = request->next ;
134
154
REQUIRE (next->number == 24 );
135
155
REQUIRE (next->is_prime == false );
136
156
REQUIRE (next->is_malformed == false );
137
157
REQUIRE (next->next != NULL );
138
- REQUIRE (strcmp (next->response , PRIME_FALSE) == 0 );
139
158
140
159
next = next->next ;
141
160
REQUIRE (next->number == 13 );
142
161
REQUIRE (next->is_prime == true );
143
162
REQUIRE (next->is_malformed == false );
144
163
REQUIRE (next->next != NULL );
145
- REQUIRE (strcmp (next->response , PRIME_TRUE) == 0 );
146
164
147
165
next = next->next ;
148
166
REQUIRE (next->is_prime == false );
149
167
REQUIRE (next->is_malformed == true );
150
168
REQUIRE (next->next == NULL );
151
- REQUIRE (strcmp (next->response , PRIME_MALFORMED) == 0 );
169
+
170
+ sprintf (response, " %s%s%s%s" , PRIME_TRUE, PRIME_FALSE, PRIME_TRUE, PRIME_MALFORMED);
171
+ size = queue_pop_no_copy (sdqu, &data);
172
+ REQUIRE (strncmp (data, response, size) == 0 );
152
173
}
153
174
154
175
if (request)
155
176
is_prime_free (&request);
177
+ if (sdqu)
178
+ queue_free (&sdqu);
156
179
}
0 commit comments