Michael Scott <[EMAIL PROTECTED]> writes:

> On Tuesday, Sep 30, 2003, at 15:44 Europe/Berlin, Juergen Boemmels
> wrote:
> 
> 
> > Michael Scott <[EMAIL PROTECTED]> writes:
> >
> >> Here are some tests for the io.h API that should go in t/src/io.t.
> >
> > Ah yes. I know I submitted one too. I thought it got committed a long
> > time ago but maybe it wasn't. I will try to merge it with your tests
> > and commit a change.
> >
> > In one test you include "../io/io_private.h". I'm not sure if it's a
> > good idea to test implementation details. On one side its better to
> > test as many as you can, on the other side mainly the public API
> > should be tested, the implementation should just work.
> 
> I'm just including io_private.h to get the correct flags to test the
> return values of PIO_parse_open_flags() which is in the public API.

Maybe PIO_parse_open_flags should also get moved to io_private.h. The
private/public split of the io subsystem is far from complete. In fact
io is the first subsystem that even tries to do so.

> I agree there are limits to what should be tested, but what embarked
> me on the tests in src/io.t was the failure of test 6 in pmc/io.t. I
> tried to fix it, but because there were no src/io.t tests I couldn't
> be sure whether the problem lay in the io.ops code or the io/* code.
> 
> 
> Needless to say, once I'd written src/io.t, I got sidetracked into the
> need for string C code tests, and never got back to pmc/io.t.
> 
> 
> It seems to me that there are at various levels of "public" in Parrot,
> and each one should be tested. Furthermore, the more tightly the
> testing is done at the lowest level, the more confident we can be
> about the higher level test results.

Ok you convinced me, we need to test private implementation
details. But this tests should be cleanly flagged as such.

> PIO_parse_open_flags() is, I think, a good case in point. It makes
> sense to throw a bunch of invalid values at it in src/io.t, and then
> assume that it works in pmc/io.t.
> 
> 
> BTW those src/io.t tests should be rewritten to use the scheme Leo
> uses in the 3rd test in src/basic.t. I proposed a patch to simplify
> this in "[PATCH] C code test header" which if you could get into CVS
> I'd be grateful as my string tests will rely on it.

The whole c_output_is() tests are more or less a hack.
Ideally there would be C-markos like
OK(val, name), DIAG(text), IS(this, that, name), etc. and be able to
check individual c-statements without recompiling and running a new
file each time.

bye
boe
-- 
Juergen Boemmels                        [EMAIL PROTECTED]
Fachbereich Physik                      Tel: ++49-(0)631-205-2817
Universitaet Kaiserslautern             Fax: ++49-(0)631-205-3906
PGP Key fingerprint = 9F 56 54 3D 45 C1 32 6F  23 F6 C7 2F 85 93 DD 47

Reply via email to