From: Maas-Maarten Zeeman <maas@wanadoo.nl>
To: mgushee@havenrock.com
Cc: caml-list@pauillac.inria.fr
Subject: Re: [Caml-list] OUnit usage
Date: Fri, 21 Feb 2003 09:24:39 +0100 [thread overview]
Message-ID: <3E55E247.7070805@wanadoo.nl> (raw)
In-Reply-To: <3E5541E5.15804.8F7F3E@localhost>
Hello,
>If I could see 1 or 2 simple but realistic examples, I think that would clear up the
>mystery.
>
>
Indeed I admid, the documentation is currently not very helpful, but I
did not want to wait to release the software until it was. Maybe this is
a good trigger to start working on it, but don't hold your breath until
it is finished. I'm currently very busy with other (not ocaml related)
stuff. If you are brave enough however, you could take a look test code
in the OUnit distribution itself. The OcamlExpat distribution also
contains some real live test examples, which might already be helpful.
To clarify things (a bit) more:
The basic idea of a TestCase is that it contains a function, which is
executed at test time. When the function executes without any exceptions
it was successful, when the function raises Failure, it is flagged as
being failed, and when some other exception is raised it has errored.
Now a small (realistic?) example
open OUnit
let empty_list = []
let list_a = [1;2;3]
let test_list_length _ =
assert_equal 0 (List.length empty_list);
assert_equal 3 (List.length list_a)
(* etc, etc *)
let test_list_append _ =
let list_b = List.append empty_list [1;2;3] in
assert_equal list_b list_a
let suite = "OUnit Example" >::: ["test_list_length" >:: test_list_length;
"test_list_append" >:: test_list_append]
let _ =
let verbose = ref false in
let set_verbose _ = verbose := true in
Arg.parse
[("-verbose", Arg.Unit set_verbose, "Run the test in verbose mode.");]
(fun x -> raise (Arg.Bad ("Bad argument : " ^ x)))
("usage: " ^ Sys.argv.(0) ^ " [-verbose]");
if not (was_successful (run_test_tt ~verbose:!verbose suite)) then
exit 1
Which can be compiled as follows:
$ ocamlc -o example unix.cma oUnit.cmo example.ml
And run like this:
$ ./example -verbose
OUnit Example:0:test_list_length ... ok
OUnit Example:1:test_list_append ... ok
Ran: 2 tests in: 0.00 Seconds
OK
When something is wrong you will see the following:
$ ./example -verbose
OUnit Example:0:test_list_length ... FAIL
OUnit Example:1:test_list_append ... ok
======================================================================
FAIL: OUnit Example:0:test_list_length
OUnit: not equal
----------------------------------------------------------------------
Ran: 2 tests in: 0.00 Seconds
FAILED: Cases: 2 Tried: 2 Errors: 0 Failures: 1
I hope this was helpful. If you are eager to learn more, I would like to
refer you to the original unit test article made by Kent Beck,
http://www.xprogramming.com/testfram.htm. The article describes the unit
test philosophy, and a smalltalk implementation of a unit test
framework. Much of it holds for OUnit.
Regards,
Maas
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
prev parent reply other threads:[~2003-02-21 8:29 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-02-21 4:00 mgushee
2003-02-21 8:24 ` Maas-Maarten Zeeman [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3E55E247.7070805@wanadoo.nl \
--to=maas@wanadoo.nl \
--cc=caml-list@pauillac.inria.fr \
--cc=mgushee@havenrock.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox