8 use base qw/ DynaLoader Exporter /;
10 # Items to export into callers namespace by default. Note: do not export
11 # names by default without a very good reason. Use EXPORT_OK instead.
12 # Do not simply export all your public functions/methods/constants.
14 # Export everything since these functions are only used by a test script
15 our @EXPORT = qw( print_double print_int print_long
16 print_float print_long_double have_long_double print_flush
17 mpushp mpushn mpushi mpushu
18 mxpushp mxpushn mxpushi mxpushu
19 call_sv call_pv call_method eval_sv eval_pv require_pv
20 G_SCALAR G_ARRAY G_VOID G_DISCARD G_EVAL G_NOARGS
21 G_KEEPERR G_NODEBUG G_METHOD
31 sub G_KEEPERR() { 16 }
32 sub G_NODEBUG() { 32 }
35 our $VERSION = '0.05';
37 bootstrap XS::APItest $VERSION;
44 XS::APItest - Test the perl C API
53 This module tests the perl C API. Currently tests that C<printf>
58 This module can be used to check that the perl C API is behaving
59 correctly. This module provides test functions and an associated
60 test script that verifies the output.
62 This module is not meant to be installed.
66 Exports all the test functions:
72 Test that a double-precision floating point number is formatted
73 correctly by C<printf>.
77 Output is sent to STDOUT.
79 =item B<print_long_double>
81 Test that a C<long double> is formatted correctly by
82 C<printf>. Takes no arguments - the test value is hard-wired
83 into the function (as "7").
87 Output is sent to STDOUT.
89 =item B<have_long_double>
91 Determine whether a C<long double> is supported by Perl. This should
92 be used to determine whether to test C<print_long_double>.
94 print_long_double() if have_long_double;
98 Test that an C<NV> is formatted correctly by
103 Output is sent to STDOUT.
107 Test that an C<IV> is formatted correctly by
112 Output is sent to STDOUT.
116 Test that an C<UV> is formatted correctly by
121 Output is sent to STDOUT.
125 Test that an C<int> is formatted correctly by
130 Output is sent to STDOUT.
134 Test that an C<long> is formatted correctly by
139 Output is sent to STDOUT.
143 Test that a single-precision floating point number is formatted
144 correctly by C<printf>.
148 Output is sent to STDOUT.
150 =item B<call_sv>, B<call_pv>, B<call_method>
152 These exercise the C calls of the same names. Everything after the flags
153 arg is passed as the the args to the called function. They return whatever
154 the C function itself pushed onto the stack, plus the return value from
155 the function; for example
157 call_sv( sub { @_, 'c' }, G_ARRAY, 'a', 'b'); # returns 'a', 'b', 'c', 3
158 call_sv( sub { @_ }, G_SCALAR, 'a', 'b'); # returns 'b', 1
162 Evalulates the passed SV. Result handling is done the same as for
167 Excercises the C function of the same name in scalar context. Returns the
168 same SV that the C function returns.
172 Excercises the C function of the same name. Returns nothing.
178 L<XS::Typemap>, L<perlapi>.
182 Tim Jenness, E<lt>t.jenness@jach.hawaii.eduE<gt>,
183 Christian Soeller, E<lt>csoelle@mph.auckland.ac.nzE<gt>,
184 Hugo van der Sanden E<lt>hv@crypt.compulink.co.ukE<gt>
186 =head1 COPYRIGHT AND LICENSE
188 Copyright (C) 2002,2004 Tim Jenness, Christian Soeller, Hugo van der Sanden.
191 This library is free software; you can redistribute it and/or modify
192 it under the same terms as Perl itself.