<font face="arial,helvetica,sans-serif">Hey Chris,<br><br>Thanks for the quick response. I took a look at the link you posted. The syntax I used was most heavily influenced by that in lisp-unit because<br>what any given function </font><font face="arial,helvetica,sans-serif"><font face="arial,helvetica,sans-serif">or </font></font><font face="arial,helvetica,sans-serif"><font face="arial,helvetica,sans-serif"><font face="arial,helvetica,sans-serif">macro did </font>was very clear from the name </font>without having to read the documentation first. Names like ASSERT-TRUE<br>

and ASSERT-EQUAL are pretty self explanatory! Also the syntax is very simple and easy to read and use.<br><br>Because the syntax is so close to that of lisp-unit I will make a quick translation with a few changes and test it. The changes would be as shown below,</font><font face="arial,helvetica,sans-serif"><br>

the rest is pretty much the same.</font><pre><span style="color:rgb(11,83,148)">(in-package :cs325-user)
<br>;;; Define a suite for all our tests since <span style class="">CLUnit</span> only groups according to test suites instead of the implicit package grouping in lisp-unit.<br>(<span style class="">defsuite</span> cs325-user ())
<br>(define-test <span style class="">testname</span> . body) -> (deftest <span style class="">testname</span> (cs325-user) . body)<br></span><br><font face="arial,helvetica,sans-serif">I had left out ASSERT-PRINTS simply because I had not considered its uses well enough. But after you pointed it out, I realised having a built in form</font><br>

to test the messages you print in your library would be very handy.<br><br>The definition of ASSERT-TRUE that I used is actually a predicate tester according to its common use in Lisp conditional<br>forms such as IF and WHEN. I figured if you want to test for the specific value T you would use (assert-<span style class="">eq</span> t form).<br>

<br><span style="color:rgb(61,133,198)"><span style="background-color:rgb(255,255,255)"><span style="color:rgb(11,83,148)">(assert-equality 'set-equal '(car) (functions-referenced '(car l))) -> (assert-true (set-equal '(car) (functions-referenced '(car l)))<span style></span></span><br>

<br></span></span><br>There is an idea I have been toying with in my head. It seems the library generally works now so I think its now<br>safe to write unit tests for the library itself. Now, I obviously need test the lower level functions and make<br>

sure that they are doing the correct thing. So I have a situation were I want to test A and B, but since B depends<br>of A, if A fails its test there is no point testing B. I would need to first fix A before I can trust what B will do.<br>

<br>Basically, I want to be able to short circuit tests. I want to add this without changing the current behaviour.<br>Since execution of tests in a test suite is unordered, you would place the dependent tests in a child test suite.<br>

So something like this:<br><br>1. (<span style class="">defsuite</span> A ())<br>2. (<span style class="">defsuite</span> B (A))<br>3. Define low level function tests in A.<br>4. Define tests in B that depend on functions tested in A.<br>

5. (run-suite 'A :stop-on-fail t)<br><br>The RUN-SUITE keyword argument :use-debugger, is for interactive tests, this option would work for short circuiting batch tests.<br>What do you think?<br></pre><div class="gmail_extra">

<br><br><div class="gmail_quote">On 10 November 2012 21:28, Christopher K Riesbeck <span dir="ltr"><<a href="mailto:c-riesbeck@northwestern.edu" target="_blank">c-riesbeck@northwestern.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div style="word-wrap:break-word">
<div>On a quick skim, looks like nice work. If you want to see if it handles a lot of the cases (better or as well) that lisp-unit was designed for, see</div>
<div><br>
</div>
<div>   <a href="http://www.cs.northwestern.edu/academics/courses/325/programs/exercise-tests.lisp" target="_blank">http://www.cs.northwestern.edu/academics/courses/325/programs/exercise-tests.lisp</a></div>
<div><br>
</div>
<div>This is what tests my students' solutions to exercises from Graham and elsewhere. I'd prefer to use a standard test framework in my class, but I would want that particular file to continue to be simple for novices to read and understand, since they're
 the target audience.</div>
<div><br>
</div>
<div> I'll try making the translation myself sometime but it won't be for the next few months at least, due to time constraints.</div>
<div><br>
</div>
<div>I notice that you didn't include an "assert-prints" though obviously it's not hard to use some wrapper macro like</div>
<div><br>
</div>
<div>   (assert-equal "...." (collect-output (print-dots 4)))</div>
<div><br>
</div>
<div>I would recommend adding something comparable to lisp-unit's assert-equality that lets you handle special equality testers, like set-equal, epsilon-equal, etc. (I used to call it assert-predicate but that implied a unary rather than binary predicate.)</div>


<div><br>
</div>
<div>Nice job.</div><div><div class="h5">
<div><br>
</div>
<div><br>
</div>
<br>
<div>
<div>On Nov 10, 2012, at 11:41 AM, Tapiwa Gutu wrote:</div>
<br>
<blockquote type="cite"><font face="arial,helvetica,sans-serif">Faithful hackers,<br>
<br>
</font><font face="arial,helvetica,sans-serif"><span style="font-family:arial,helvetica,sans-serif">I decided to take up the challenge laid down
</span></font><span style="font-family:arial,helvetica,sans-serif">here <a href="http://fare.livejournal.com/169346.html" target="_blank">
http://fare.livejournal.com/169346.html</a> </span><span style="font-family:arial,helvetica,sans-serif"><font face="arial,helvetica,sans-serif"><span style="font-family:arial,helvetica,sans-serif">and try to consolidate the Common Lisp unit testing frameworks.</span></font></span><span style="font-family:arial,helvetica,sans-serif">
 I have written a framework that aims to consolidate all the major features of all your frameworks mentioned in this blog
<a href="http://aperiodic.net/phil/archives/Geekery/notes-on-lisp-testing-frameworks.html" target="_blank">
http://aperiodic.net/phil/archives/Geekery/notes-on-lisp-testing-frameworks.html</a>.<br>
<br>
You can find it on Github <a href="https://github.com/tgutu/clunit" target="_blank">
https://github.com/tgutu/clunit</a>. I also wrote a blog on the development of the framework and reasons for it here
<a href="http://ml.sun.ac.za/2012/11/09/developing-a-unit-test-framework-part-1/" target="_blank">
http://ml.sun.ac.za/2012/11/09/developing-a-unit-test-framework-part-1/</a> if you are interested.<br>
<br>
I would very much appreciate it, if you could join me in this effort and we all work together torwards making this project a success.<br>
<br>
Regards,<br>
Tapiwa</span> </blockquote>
</div>
<br>
</div></div><div><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;font-size:medium;white-space:normal;font-family:Helvetica;word-spacing:0px">Christopher
 Riesbeck<br>
Home page: <a href="http://www.cs.northwestern.edu/~riesbeck" target="_blank">http://www.cs.northwestern.edu/~riesbeck</a><br>
Calendar: <a href="http://calendar.yahoo.com/criesbeck" target="_blank">http://calendar.yahoo.com/criesbeck</a><br>
<br>
</span></div>
<br>
</div>

</blockquote></div><br></div>