Assertions: Difference between revisions
(added J) |
(added haskell) |
||
Line 25: | Line 25: | ||
return 0; |
return 0; |
||
}</lang> |
}</lang> |
||
=={{header|Haskell}}== |
|||
<lang haskell>import Control.Exception |
|||
main = let a = someValue in |
|||
assert (a == 42) -- throws AssertionFailed when a is not 42 |
|||
somethingElse -- what to return when a is 42</lang> |
|||
=={{header|Java}}== |
=={{header|Java}}== |
||
Line 48: | Line 55: | ||
=={{header|OCaml}}== |
=={{header|OCaml}}== |
||
<lang ocaml>let a = get_some_value () in |
<lang ocaml>let a = get_some_value () in |
||
assert (a = 42); (* throws Assert_failure when a is not 42 *) |
assert (a = 42); (* throws Assert_failure when a is not 42 *) |
||
(* evaluate stuff to return here when a is 42 *)</lang> |
|||
=={{header|Python}}== |
=={{header|Python}}== |
Revision as of 19:22, 5 February 2009
You are encouraged to solve this task according to the task description, using any language you may know.
Assertions are a way of breaking out of code when there is an error or an unexpected input. Some languages throw exceptions and some treat it as a break point.
Show an assertion in your language by asserting that an integer variable is equal to 42.
Ada
Using pragma Assert: <lang ada> pragma Assert (A = 42, "Oops!"); </lang> The behavior of pragma is controlled by pragma Assertion_Policy. Another way is to use the predefined package Ada.Assertions: <lang ada> with Ada.Assertions; use Ada.Assertions; ... Assert (A = 42, "Oops!"); </lang> The procedure Assert propagates Assertion_Error when condition is false.
C
<lang c>#include <assert.h>
int main(){
int a; /* ...input or change a here */ assert(a == 42); /* aborts program when a is not 42 */
return 0;
}</lang>
Haskell
<lang haskell>import Control.Exception
main = let a = someValue in
assert (a == 42) -- throws AssertionFailed when a is not 42 somethingElse -- what to return when a is 42</lang>
Java
<lang java5>public static void main(String[] args){
int a; //...input or change a here assert a == 42;//throws an AssertionError when a is not 42 assert a == 42 : "Error message"; //throws an AssertionError //when a is not 42 with "Error message" for the message //the error message can be any non-void expression
}</lang>
J
assert n = 42
Modula-3
ASSERT
is a pragma, that creates a run-time error if it returns FALSE
.
<lang modula3><*ASSERT a = 42*></lang>
Assertions can be ignored in the compiler by using the -a
switch.
OCaml
<lang ocaml>let a = get_some_value () in
assert (a = 42); (* throws Assert_failure when a is not 42 *) (* evaluate stuff to return here when a is 42 *)</lang>
Python
<lang python>a = 5
- ...input or change a here
assert a == 42 # throws an AssertionError when a is not 42 assert a == 42, "Error message" # throws an AssertionError
# when a is not 42 with "Error message" for the message # the error message can be any expression</lang>