$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 |
||
(19 intermediate revisions by the same user not shown) | |||
Line 8: | Line 8: | ||
{{PageDescription}} | {{PageDescription}} | ||
* 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. | * This metacommand does not require a comment ''[[Apostrophe|']]'' 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 '''{{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. | ||
Line 16: | Line 16: | ||
{{PageAvailability}} | {{PageAvailability}} | ||
<!-- QB64 = a version or none, QBPE = a version or all, Platforms = yes or no --> | |||
<gallery widths="48px" heights="48px" mode="nolines"> | |||
File:Qb64.png|'''v1.4''' | |||
File:Qbpe.png|'''all''' | |||
File:Apix.png | |||
File:Win.png|'''yes''' | |||
File:Lnx.png|'''yes''' | |||
File:Osx.png|'''yes''' | |||
</gallery> | |||
<!-- additional availability notes go below here --> | |||
Line 23: | Line 31: | ||
;Example:Adding test checks for parameter inputs in a function. | ;Example:Adding test checks for parameter inputs in a function. | ||
{{CodeStart}} | {{CodeStart}} | ||
{{ | {{Cm|$ASSERTS}}:CONSOLE | ||
{{Cl|DO}} | {{Cl|DO}} | ||
a = {{Cl|INT}}({{Cl|RND}} * 10) | a = {{Cl|INT}}({{Cl|RND}} * {{Text|10|#F580B1}}) | ||
b$ = myFunc$(a) | b$ = {{Text|myFunc$|#55FF55}}(a) | ||
{{Cl|PRINT}} a, , b$ | {{Cl|PRINT}} a, , b$ | ||
{{Cl|_LIMIT}} 3 | {{Cl|_LIMIT}} {{Text|3|#F580B1}} | ||
{{Cl|LOOP}} {{Cl| | {{Cl|DO...LOOP|LOOP UNTIL}} {{Cl|_KEYHIT}} | ||
{{Cl|END}} | |||
{{Cl|FUNCTION}} myFunc$ (value {{Cl|AS}} {{Cl|SINGLE}}) | {{Cl|FUNCTION}} {{Text|myFunc$|#55FF55}} (value {{Cl|AS}} {{Cl|SINGLE}}) | ||
{{Cl|_ASSERT}} value > 0, "Value cannot be zero" | {{Cl|_ASSERT}} value > {{Text|0|#F580B1}}, {{Text|<nowiki>"Value cannot be zero"</nowiki>|#FFB100}} | ||
{{Cl|_ASSERT}} value <= 10, "Value cannot exceed 10" | {{Cl|_ASSERT}} value <= {{Text|10|#F580B1}}, {{Text|<nowiki>"Value cannot exceed 10"</nowiki>|#FFB100}} | ||
{{Cl|IF}} value > 1 {{Cl|THEN}} plural$ = "s" | {{Cl|IF}} value > {{Text|1|#F580B1}} {{Cl|THEN}} plural$ = {{Text|<nowiki>"s"</nowiki>|#FFB100}} | ||
myFunc$ = {{Cl|STRING$}}(value, "*") + {{Cl|STR$}}(value) + " star" + plural$ + " :-)" | {{Text|myFunc$|#55FF55}} = {{Cl|STRING$}}(value, {{Text|<nowiki>"*"</nowiki>|#FFB100}}) + {{Cl|STR$}}(value) + {{Text|<nowiki>" star"</nowiki>|#FFB100}} + plural$ + {{Text|<nowiki>" :-)"</nowiki>|#FFB100}} | ||
{{Cl|END FUNCTION}} | |||
{{CodeEnd}} | {{CodeEnd}} | ||
{{PageSeeAlso}} | {{PageSeeAlso}} | ||
* [[Metacommand]] | |||
* [[_ASSERT]] | * [[_ASSERT]] | ||
* [[$CHECKING]] | * [[$CHECKING]] | ||
Line 50: | Line 60: | ||
{{PageNavigation}} | {{PageNavigation}} | ||
Latest revision as of 14:18, 19 March 2023
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.
- Note
- This metacommand is the main switch to enable debug tests during development. Later just remove this metacommand to compile the program without debugging code, all the _ASSERT statements may remain in the code for later debugging sessions, they are simply ignored without this metacommand.
Availability
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