$ASSERTS: Difference between revisions
Jump to navigation
Jump to search
Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link
No edit summary |
No edit summary |
||
Line 11: | Line 11: | ||
* If this metacommand is used in a program and any of the set [[_ASSERT]] checkpoints will fail, then the program will stop with an '''{{Text|_ASSERT failed|red}}''' error. | * If this metacommand is used in a program and any of the set [[_ASSERT]] checkpoints will fail, then the program will stop with an '''{{Text|_ASSERT failed|red}}''' error. | ||
* Detailed error messages passed to the [[_ASSERT]] statement will be displayed in the console window, but only if '''$ASSERTS:CONSOLE''' is used. | * Detailed error messages passed to the [[_ASSERT]] statement will be displayed in the console window, but only if '''$ASSERTS:CONSOLE''' is used. | ||
* The '''$ASSERTS''' metacommand serves as main switch to enable debug tests during development. Later you just need to remove the metacommand while leaving all the [[_ASSERT]] statements in place for later debugging sessions, they are simply ignored without the metacommand. | |||
* In newer versions a precompiler flag named '''_ASSERTS_''' is available (see [[#Availability|Availability]]): | |||
** The flag is ''one(1)'' if the program is compiled with '''$ASSERTS''' enabled and ''zero(0)'' if compiled without it. | |||
** You may use it to include/exclude debugging related code using precompiler [[$IF]]..[[$ELSE]]...[[$END IF]] blocks. | |||
Line 26: | Line 28: | ||
</gallery> | </gallery> | ||
<!-- additional availability notes go below here --> | <!-- additional availability notes go below here --> | ||
* Since '''QB64-PE v4.0.0''' the precompiler flag ''_ASSERTS_'' indicates the state of '''$ASSERTS''' at compile time. | |||
Latest revision as of 16:05, 18 November 2024
The $ASSERTS metacommand enables debug tests with the _ASSERT macro.
Syntax
- $ASSERTS
- $ASSERTS:CONSOLE
Description
- This metacommand does not require a comment ' or REM before it. There is no space between the metacommand name, the colon and the CONSOLE parameter.
- If this metacommand is used in a program and any of the set _ASSERT checkpoints will fail, then the program will stop with an _ASSERT failed error.
- Detailed error messages passed to the _ASSERT statement will be displayed in the console window, but only if $ASSERTS:CONSOLE is used.
- The $ASSERTS metacommand serves as main switch to enable debug tests during development. Later you just need to remove the metacommand while leaving all the _ASSERT statements in place for later debugging sessions, they are simply ignored without the metacommand.
- In newer versions a precompiler flag named _ASSERTS_ is available (see Availability):
Availability
- Since QB64-PE v4.0.0 the precompiler flag _ASSERTS_ indicates the state of $ASSERTS at compile time.
Examples
- Example
- Adding test checks for parameter inputs in a function.
$ASSERTS:CONSOLE DO a = INT(RND * 10) b$ = myFunc$(a) PRINT a, , b$ _LIMIT 3 LOOP UNTIL _KEYHIT END FUNCTION myFunc$ (value AS SINGLE) _ASSERT value > 0, "Value cannot be zero" _ASSERT value <= 10, "Value cannot exceed 10" IF value > 1 THEN plural$ = "s" myFunc$ = STRING$(value, "*") + STR$(value) + " star" + plural$ + " :-)" END FUNCTION |
See also