@@ -93,7 +93,7 @@ TEST_CASE("is_prime_request_builder handles invalid requests", "[request]")
9393
9494 SECTION (" Valid request with prime number" )
9595 {
96- char raw_request[] = " {\" method\" :\" isPrime\" ,\" number\" :foo}\n " ;
96+ char raw_request[] = " {\" method\" :\" isPrime\" ,\" number\" :\" foo\" }\n " ;
9797 REQUIRE (is_prime_request_builder (&request, raw_request, strlen (raw_request))
9898 == 1 );
9999 REQUIRE (request != NULL );
@@ -103,6 +103,40 @@ TEST_CASE("is_prime_request_builder handles invalid requests", "[request]")
103103 REQUIRE (strcmp (request->response , PRIME_MALFORMED) == 0 );
104104 }
105105
106+ SECTION (" Invalid composite request with prime number; followed by non prime request" )
107+ {
108+ char raw_request[] =
109+ " {\" method\" :\" isPrime\" ,\" number\" :17}\n "
110+ " {\" method\" :\" isPrime\" ,\" number\" :24}\n "
111+ " {\" method\" :\" isPrime\" ,\" number\" :13}\n "
112+ " {\" method\" :\" isPrime\" ,\" number\" :\" hola\" }\n "
113+ " {\" method\" :\" isPrime\" ,\" number\" :23}\n " ;
114+ REQUIRE (is_prime_request_builder (&request, raw_request, strlen (raw_request))
115+ == 4 );
116+ REQUIRE (request != NULL );
117+ REQUIRE (request->number == 17 );
118+ REQUIRE (request->is_prime == true );
119+ REQUIRE (request->next != NULL );
120+ REQUIRE (strcmp (request->response , PRIME_TRUE) == 0 );
121+
122+ struct is_prime_request *next = request->next ;
123+ REQUIRE (next->number == 24 );
124+ REQUIRE (next->is_prime == false );
125+ REQUIRE (next->next != NULL );
126+ REQUIRE (strcmp (next->response , PRIME_FALSE) == 0 );
127+
128+ next = next->next ;
129+ REQUIRE (next->number == 13 );
130+ REQUIRE (next->is_prime == true );
131+ REQUIRE (next->next != NULL );
132+ REQUIRE (strcmp (next->response , PRIME_TRUE) == 0 );
133+
134+ next = next->next ;
135+ REQUIRE (next->number < 0 );
136+ REQUIRE (next->is_prime == false );
137+ REQUIRE (next->next == NULL );
138+ REQUIRE (strcmp (next->response , PRIME_MALFORMED) == 0 );
139+ }
106140
107141 if (request)
108142 is_prime_free (&request);
0 commit comments