@@ -249,6 +249,48 @@ FOSSIL_TEST_CASE(cpp_wrapper_argument_types) {
249249 parser.free (palette);
250250} // end case
251251
252+ FOSSIL_TEST_CASE (cpp_wrapper_null_palette) {
253+ fossil::io::Parser parser;
254+ fossil_io_parser_palette_t *palette = NULL ;
255+ FOSSIL_TEST_ASSUME (parser.add_command (palette, " test_command" , " Test Command Description" ) == NULL , " Adding command to NULL palette should return NULL" );
256+ parser.parse (palette, 0 , NULL );
257+ } // end case
258+
259+ FOSSIL_TEST_CASE (cpp_wrapper_empty_command_name) {
260+ fossil::io::Parser parser;
261+ fossil_io_parser_palette_t *palette = parser.create_palette (" wrapper_palette" , " Wrapper Test Description" );
262+ fossil_io_parser_command_t *command = parser.add_command (palette, " " , " Empty Command Name Description" );
263+ FOSSIL_TEST_ASSUME (command == NULL , " Command with empty name should not be added" );
264+ parser.free (palette);
265+ } // end case
266+
267+ FOSSIL_TEST_CASE (cpp_wrapper_duplicate_command_name) {
268+ fossil::io::Parser parser;
269+ fossil_io_parser_palette_t *palette = parser.create_palette (" wrapper_palette" , " Wrapper Test Description" );
270+ parser.add_command (palette, " wrapper_command" , " Wrapper Command Description" );
271+ fossil_io_parser_command_t *duplicate = parser.add_command (palette, " wrapper_command" , " Duplicate Command Description" );
272+ FOSSIL_TEST_ASSUME (duplicate == NULL , " Duplicate command name should not be allowed" );
273+ parser.free (palette);
274+ } // end case
275+
276+ FOSSIL_TEST_CASE (cpp_wrapper_null_argument_name) {
277+ fossil::io::Parser parser;
278+ fossil_io_parser_palette_t *palette = parser.create_palette (" wrapper_palette" , " Wrapper Test Description" );
279+ fossil_io_parser_command_t *command = parser.add_command (palette, " wrapper_command" , " Wrapper Command Description" );
280+ fossil_io_parser_argument_t *argument = parser.add_argument (command, NULL , FOSSIL_IO_PARSER_STRING, NULL , 0 );
281+ FOSSIL_TEST_ASSUME (argument == NULL , " Argument with NULL name should not be added" );
282+ parser.free (palette);
283+ } // end case
284+
285+ FOSSIL_TEST_CASE (cpp_wrapper_invalid_argument_type) {
286+ fossil::io::Parser parser;
287+ fossil_io_parser_palette_t *palette = parser.create_palette (" wrapper_palette" , " Wrapper Test Description" );
288+ fossil_io_parser_command_t *command = parser.add_command (palette, " wrapper_command" , " Wrapper Command Description" );
289+ fossil_io_parser_argument_t *argument = parser.add_argument (command, " invalid_arg" , FOSSIL_IO_PARSER_INVALID, NULL , 0 );
290+ FOSSIL_TEST_ASSUME (argument == NULL , " Argument with invalid type should not be added" );
291+ parser.free (palette);
292+ } // end case
293+
252294// * * * * * * * * * * * * * * * * * * * * * * * *
253295// * Fossil Logic Test Pool
254296// * * * * * * * * * * * * * * * * * * * * * * * *
@@ -267,6 +309,11 @@ FOSSIL_TEST_GROUP(cpp_parser_test_cases) {
267309 FOSSIL_TEST_ADD (cpp_parser_suite, cpp_wrapper_parse_command);
268310 FOSSIL_TEST_ADD (cpp_parser_suite, cpp_wrapper_free_palette);
269311 FOSSIL_TEST_ADD (cpp_parser_suite, cpp_wrapper_argument_types);
312+ FOSSIL_TEST_ADD (cpp_parser_suite, cpp_wrapper_null_palette);
313+ FOSSIL_TEST_ADD (cpp_parser_suite, cpp_wrapper_empty_command_name);
314+ FOSSIL_TEST_ADD (cpp_parser_suite, cpp_wrapper_duplicate_command_name);
315+ FOSSIL_TEST_ADD (cpp_parser_suite, cpp_wrapper_null_argument_name);
316+ FOSSIL_TEST_ADD (cpp_parser_suite, cpp_wrapper_invalid_argument_type);
270317
271318 FOSSIL_TEST_REGISTER (cpp_parser_suite);
272319} // end of group
0 commit comments