# Maximum lengths.
option('max_test_cases'           ,type: 'integer' ,value: 5000, description: 'Maximum number of test cases in a test application.')
option('max_nested_sections'      ,type: 'integer' ,value: 8   , description: 'Maximum depth of nested sections in a test case.')
option('max_expr_length'          ,type: 'integer' ,value: 1024, description: 'Maximum length of a printed expression when reporting failure.')
option('max_message_length'       ,type: 'integer' ,value: 1024, description: 'Maximum length of error or status messages.')
option('max_test_name_length'     ,type: 'integer' ,value: 1024, description: 'Maximum length of a test case name.')
option('max_tag_length'           ,type: 'integer' ,value: 256 , description: 'Maximum length of a test tag.')
option('max_captures'             ,type: 'integer' ,value: 8   , description: 'Maximum number of captured expressions in a test case.')
option('max_capture_length'       ,type: 'integer' ,value: 256 , description: 'Maximum length of a captured expression.')
option('max_unique_tags'          ,type: 'integer' ,value: 1024, description: 'Maximum number of unique tags in a test application.')
option('max_command_line_args'    ,type: 'integer' ,value: 1024, description: 'Maximum number of command line arguments to a test application.')
option('max_registered_reporters' ,type: 'integer' ,value: 8   , description: 'Maximum number of registered reporter that can be selected from the command line.')
option('max_path_length'          ,type: 'integer' ,value: 1024, description: 'Maximum length of a file path when writing output to file.')

# Feature toggles.
option('define_main'                     ,type: 'boolean' ,value: true, description: 'Define main() in snitch -- disable to provide your own main() function.')
option('with_exceptions'                 ,type: 'boolean' ,value: true, description: 'Use exceptions in snitch implementation -- will be forced OFF if exceptions are not available.')
option('with_timings'                    ,type: 'boolean' ,value: true, description: 'Measure the time taken by each test case -- disable to speed up tests.')
option('with_shorthand_macros'           ,type: 'boolean' ,value: true, description: 'Use short names for test macros -- disable if this causes conflicts.')
option('constexpr_float_use_bitcast'     ,type: 'boolean' ,value: true, description: 'Use std::bit_cast if available to implement exact constexpr float-to-string conversion.')
option('default_with_color'              ,type: 'boolean' ,value: true, description: 'Enable terminal colors by default -- can also be controlled by command line interface.')
option('decompose_successful_assertions' ,type: 'boolean' ,value: true, description: 'Enable expression decomposition even for successful assertions -- more expensive.')
option('with_all_reporters'              ,type: 'boolean' ,value: true, description: 'Allow all built-in reporters to be selected from the command line -- disable for faster compilation.')
option('with_teamcity_reporter'          ,type: 'boolean' ,value: true, description: 'Allow the TeamCity reporter to be selected from the command line -- enable if needed.')
option('with_catch2_xml_reporter'        ,type: 'boolean' ,value: true, description: 'Allow the Catch2 XML reporter to be selected from the command line -- enable if needed.')

# Building and packaging options; not part of the library API.
option('create_header_only' ,type: 'boolean' ,value: true, description: 'Create a single-header header-only version of snitch.')
option('create_library'     ,type: 'boolean' ,value: true, description: 'Build a compiled library version of snitch.')
option('unity_build'        ,type: 'boolean' ,value: true, description: 'Build sources as single file instead of separate files (faster full build).')
