pax_global_header 0000666 0000000 0000000 00000000064 12607012350 0014506 g ustar 00root root 0000000 0000000 52 comment=43bb2f61059a8a44fbd3e0df2e4182d5c0aa4318
cunit-2.1-3-dfsg/ 0000775 0000000 0000000 00000000000 12607012350 0013553 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/AUTHORS 0000664 0000000 0000000 00000000524 12607012350 0014624 0 ustar 00root root 0000000 0000000 Anil Kumar (AK)
Email : anilsaharan@users.sourceforge.net
Jerry St.Clair (JDS)
Email : jds2@users.sourceforge.net
-----------------------------------------------------------
Special thanks to the following contributors to CUnit:
K. Cheung and Aurema Pty Ltd.
Shortcut code for efficient registration of
CUnit tests and suites.
cunit-2.1-3-dfsg/COPYING 0000664 0000000 0000000 00000062547 12607012350 0014624 0 ustar 00root root 0000000 0000000 This software package 'CUnit' is Covered under GNU Library
General Public License. More about Library GPL can be found
at http://www.gnu.org/ (or) in file named LGPL-2 under
/usr/share/common-licenses/ directory and is also stated as below.
Kindly reflect back the enhancements made to this package to the author/
project page located at http://sourceforge.net/projects/cunit/ or the same
may be notified to me.
Wishing you good time with CUnit.
-----------------------------------
Anil Kumar
Email : anilsaharan@users.sourceforge.net
Project Page : http://www.sourceforge.net/projects/cunit/
************************************************************************
GNU LIBRARY GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the library GPL. It is
numbered 2 because it goes with version 2 of the ordinary GPL.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Library General Public License, applies to some
specially designated Free Software Foundation software, and to any
other libraries whose authors decide to use it. You can use it for
your libraries, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if
you distribute copies of the library, or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link a program with the library, you must provide
complete object files to the recipients so that they can relink them
with the library, after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
Our method of protecting your rights has two steps: (1) copyright
the library, and (2) offer you this license which gives you legal
permission to copy, distribute and/or modify the library.
Also, for each distributor's protection, we want to make certain
that everyone understands that there is no warranty for this free
library. If the library is modified by someone else and passed on, we
want its recipients to know that what they have is not the original
version, so that any problems introduced by others will not reflect on
the original authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that companies distributing free
software will individually obtain patent licenses, thus in effect
transforming the program into proprietary software. To prevent this,
we have made it clear that any patent must be licensed for everyone's
free use or not licensed at all.
Most GNU software, including some libraries, is covered by the ordinary
GNU General Public License, which was designed for utility programs. This
license, the GNU Library General Public License, applies to certain
designated libraries. This license is quite different from the ordinary
one; be sure to read it in full, and don't assume that anything in it is
the same as in the ordinary license.
The reason we have a separate public license for some libraries is that
they blur the distinction we usually make between modifying or adding to a
program and simply using it. Linking a program with a library, without
changing the library, is in some sense simply using the library, and is
analogous to running a utility program or application program. However, in
a textual and legal sense, the linked executable is a combined work, a
derivative of the original library, and the ordinary General Public License
treats it as such.
Because of this blurred distinction, using the ordinary General
Public License for libraries did not effectively promote software
sharing, because most developers did not use the libraries. We
concluded that weaker conditions might promote sharing better.
However, unrestricted linking of non-free programs would deprive the
users of those programs of all benefit from the free status of the
libraries themselves. This Library General Public License is intended to
permit developers of non-free programs to use free libraries, while
preserving your freedom as a user of such programs to change the free
libraries that are incorporated in them. (We have not seen how to achieve
this as regards changes in header files, but we have achieved it as regards
changes in the actual functions of the Library.) The hope is that this
will lead to faster development of free libraries.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, while the latter only
works together with the library.
Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.
GNU LIBRARY GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library which
contains a notice placed by the copyright holder or other authorized
party saying it may be distributed under the terms of this Library
General Public License (also called "this License"). Each licensee is
addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also compile or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
c) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
d) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the source code distributed need not include anything that is normally
distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Library General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
Copyright (C)
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!
cunit-2.1-3-dfsg/CUnit.dsw 0000664 0000000 0000000 00000002551 12607012350 0015317 0 ustar 00root root 0000000 0000000 Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "CUnit"=".\CUnit\CUnit.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "AutomatedTest"=".\EXAMPLES\AutomatedTest\AutomatedTest.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name CUnit
End Project Dependency
}}}
###############################################################################
Project: "BasicTest"=".\EXAMPLES\BasicTest\BasicTest.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name CUnit
End Project Dependency
}}}
###############################################################################
Project: "ConsoleTest"=".\Examples\ConsoleTest\ConsoleTest.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name CUnit
End Project Dependency
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################
cunit-2.1-3-dfsg/CUnit.spec 0000664 0000000 0000000 00000005731 12607012350 0015457 0 ustar 00root root 0000000 0000000 Summary: A unit testing framework for 'C'
Name: CUnit
Version: 2.1
Release: 3
Source: http://www.sourceforge.net/projects/cunit/CUnit-2.1-3.tar.gz
Group: Development/Tools
License: GPL
URL: http://cunit.sourceforge.net
Packager: Jerry St. Clair
%description
CUnit is a unit testing framework for C.
This package installs the CUnit static library,
headers, and documentation files.
%prep
echo "Preparing for Installation."
%setup -q -n CUnit-2.1-3
%build
echo "Preparing for Building."
./configure --prefix=%{_prefix} --enable-automated --enable-basic --enable-console --enable-curses --enable-examples --enable-test && \
make
%install
echo "Preparing for Make install."
make DESTDIR=$RPM_BUILD_ROOT install
%clean
%files
%defattr(-,root,root)
########### Include Files
%{_prefix}/include/CUnit/Automated.h
%{_prefix}/include/CUnit/Basic.h
%{_prefix}/include/CUnit/Console.h
%{_prefix}/include/CUnit/CUError.h
%{_prefix}/include/CUnit/CUnit.h
%{_prefix}/include/CUnit/CUnit_intl.h
%{_prefix}/include/CUnit/CUCurses.h
%{_prefix}/include/CUnit/MyMem.h
%{_prefix}/include/CUnit/TestDB.h
%{_prefix}/include/CUnit/TestRun.h
%{_prefix}/include/CUnit/Util.h
########## Library Files
%{_prefix}/lib/libcunit.a
%{_prefix}/lib/libcunit.so.1.0.1
########## doc Files
%{_prefix}/doc/CUnit/CUnit_doc.css
%{_prefix}/doc/CUnit/error_handling.html
%{_prefix}/doc/CUnit/fdl.html
%{_prefix}/doc/CUnit/index.html
%{_prefix}/doc/CUnit/introduction.html
%{_prefix}/doc/CUnit/managing_tests.html
%{_prefix}/doc/CUnit/running_tests.html
%{_prefix}/doc/CUnit/test_registry.html
%{_prefix}/doc/CUnit/writing_tests.html
%{_prefix}/doc/CUnit/headers/Automated.h
%{_prefix}/doc/CUnit/headers/Basic.h
%{_prefix}/doc/CUnit/headers/Console.h
%{_prefix}/doc/CUnit/headers/CUError.h
%{_prefix}/doc/CUnit/headers/CUnit.h
%{_prefix}/doc/CUnit/headers/CUnit_intl.h
%{_prefix}/doc/CUnit/headers/CUCurses.h
%{_prefix}/doc/CUnit/headers/MyMem.h
%{_prefix}/doc/CUnit/headers/TestDB.h
%{_prefix}/doc/CUnit/headers/TestRun.h
%{_prefix}/doc/CUnit/headers/Util.h
%{_prefix}/doc/CUnit/headers/Win.h
########## Manpage Files
%{_prefix}/man/man3/CUnit.3*
########## Share information and Example Files
%{_prefix}/share/CUnit/Examples/Automated/README
%{_prefix}/share/CUnit/Examples/Automated/AutomatedTest
%{_prefix}/share/CUnit/Examples/Basic/README
%{_prefix}/share/CUnit/Examples/Basic/BasicTest
%{_prefix}/share/CUnit/Examples/Console/README
%{_prefix}/share/CUnit/Examples/Console/ConsoleTest
%{_prefix}/share/CUnit/Examples/Curses/README
%{_prefix}/share/CUnit/Examples/Curses/CursesTest
%{_prefix}/share/CUnit/Test/test_cunit
%{_prefix}/share/CUnit/CUnit-List.dtd
%{_prefix}/share/CUnit/CUnit-List.xsl
%{_prefix}/share/CUnit/CUnit-Run.dtd
%{_prefix}/share/CUnit/CUnit-Run.xsl
%{_prefix}/share/CUnit/Memory-Dump.dtd
%{_prefix}/share/CUnit/Memory-Dump.xsl
# Add the change log in ChangeLog file located under source home directory.
# The same file is used internally to populate the change log for the RPM creation.
cunit-2.1-3-dfsg/CUnit.spec.in 0000664 0000000 0000000 00000006252 12607012350 0016063 0 ustar 00root root 0000000 0000000 Summary: A unit testing framework for 'C'
Name: @PACKAGE@
Version: @VERSION@
Release: @RELEASE@
Source: http://www.sourceforge.net/projects/cunit/@PACKAGE@-@VERSION@-@RELEASE@.tar.gz
Group: Development/Tools
License: GPL
URL: http://cunit.sourceforge.net
Packager: Jerry St. Clair
%description
CUnit is a unit testing framework for C.
This package installs the CUnit static library,
headers, and documentation files.
%prep
echo "Preparing for Installation."
%setup -q -n @PACKAGE@-@VERSION@-@RELEASE@
%build
echo "Preparing for Building."
./configure --prefix=%{_prefix} --enable-automated --enable-basic --enable-console --enable-curses --enable-examples --enable-test && \
make
%install
echo "Preparing for Make install."
make DESTDIR=$RPM_BUILD_ROOT install
%clean
%files
%defattr(-,root,root)
########### Include Files
%{_prefix}/include/CUnit/Automated.h
%{_prefix}/include/CUnit/Basic.h
%{_prefix}/include/CUnit/Console.h
%{_prefix}/include/CUnit/CUError.h
%{_prefix}/include/CUnit/CUnit.h
%{_prefix}/include/CUnit/CUnit_intl.h
%{_prefix}/include/CUnit/CUCurses.h
%{_prefix}/include/CUnit/MyMem.h
%{_prefix}/include/CUnit/TestDB.h
%{_prefix}/include/CUnit/TestRun.h
%{_prefix}/include/CUnit/Util.h
########## Library Files
%{_prefix}/lib/libcunit.a
%{_prefix}/lib/libcunit.so.@LIBTOOL_SUFFIX@
########## doc Files
%{_prefix}/doc/@PACKAGE@/CUnit_doc.css
%{_prefix}/doc/@PACKAGE@/error_handling.html
%{_prefix}/doc/@PACKAGE@/fdl.html
%{_prefix}/doc/@PACKAGE@/index.html
%{_prefix}/doc/@PACKAGE@/introduction.html
%{_prefix}/doc/@PACKAGE@/managing_tests.html
%{_prefix}/doc/@PACKAGE@/running_tests.html
%{_prefix}/doc/@PACKAGE@/test_registry.html
%{_prefix}/doc/@PACKAGE@/writing_tests.html
%{_prefix}/doc/@PACKAGE@/headers/Automated.h
%{_prefix}/doc/@PACKAGE@/headers/Basic.h
%{_prefix}/doc/@PACKAGE@/headers/Console.h
%{_prefix}/doc/@PACKAGE@/headers/CUError.h
%{_prefix}/doc/@PACKAGE@/headers/CUnit.h
%{_prefix}/doc/@PACKAGE@/headers/CUnit_intl.h
%{_prefix}/doc/@PACKAGE@/headers/CUCurses.h
%{_prefix}/doc/@PACKAGE@/headers/MyMem.h
%{_prefix}/doc/@PACKAGE@/headers/TestDB.h
%{_prefix}/doc/@PACKAGE@/headers/TestRun.h
%{_prefix}/doc/@PACKAGE@/headers/Util.h
%{_prefix}/doc/@PACKAGE@/headers/Win.h
########## Manpage Files
%{_prefix}/man/man3/CUnit.3*
########## Share information and Example Files
%{_prefix}/share/@PACKAGE@/Examples/Automated/README
%{_prefix}/share/@PACKAGE@/Examples/Automated/AutomatedTest
%{_prefix}/share/@PACKAGE@/Examples/Basic/README
%{_prefix}/share/@PACKAGE@/Examples/Basic/BasicTest
%{_prefix}/share/@PACKAGE@/Examples/Console/README
%{_prefix}/share/@PACKAGE@/Examples/Console/ConsoleTest
%{_prefix}/share/@PACKAGE@/Examples/Curses/README
%{_prefix}/share/@PACKAGE@/Examples/Curses/CursesTest
%{_prefix}/share/@PACKAGE@/Test/test_cunit
%{_prefix}/share/@PACKAGE@/CUnit-List.dtd
%{_prefix}/share/@PACKAGE@/CUnit-List.xsl
%{_prefix}/share/@PACKAGE@/CUnit-Run.dtd
%{_prefix}/share/@PACKAGE@/CUnit-Run.xsl
%{_prefix}/share/@PACKAGE@/Memory-Dump.dtd
%{_prefix}/share/@PACKAGE@/Memory-Dump.xsl
# Add the change log in ChangeLog file located under source home directory.
# The same file is used internally to populate the change log for the RPM creation.
cunit-2.1-3-dfsg/CUnit/ 0000775 0000000 0000000 00000000000 12607012350 0014575 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/CUnit/Headers/ 0000775 0000000 0000000 00000000000 12607012350 0016150 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/CUnit/Headers/Automated.h 0000664 0000000 0000000 00000006261 12607012350 0020251 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Automated Interface (generates HTML Report Files).
*
* Feb 2002 Initial implementation (AK)
*
* 13-Feb-2002 Single interface to automated_run_tests. (AK)
*
* 20-Jul-2004 New interface, doxygen comments. (JDS)
*/
/** @file
* Automated testing interface with xml output (user interface).
*/
/** @addtogroup Automated
* @{
*/
#ifndef CUNIT_AUTOMATED_H_SEEN
#define CUNIT_AUTOMATED_H_SEEN
#include "CUnit.h"
#include "TestDB.h"
#ifdef __cplusplus
extern "C" {
#endif
CU_EXPORT void CU_automated_run_tests(void);
/**<
* Runs CUnit tests using the automated interface.
* This function sets appropriate callback functions, initializes the
* test output files, and calls the appropriate functions to list the
* tests and run them. If an output file name root has not been
* specified using CU_set_output_filename(), a generic root will be
* applied. It is an error to call this function before the CUnit
* test registry has been initialized (check by assertion).
*/
CU_EXPORT CU_ErrorCode CU_list_tests_to_file(void);
/**<
* Generates an xml file containing a list of all tests in all suites
* in the active registry. The output file will be named according to
* the most recent call to CU_set_output_filename(), or a default if
* not previously set.
*
* @return An error code indicating the error status.
*/
CU_EXPORT void CU_set_output_filename(const char* szFilenameRoot);
/**<
* Sets the root file name for automated test output files.
* The strings "-Listing.xml" and "-Results.xml" are appended to the
* specified root to generate the filenames. If szFilenameRoot is
* empty, the default root ("CUnitAutomated") is used.
*
* @param szFilenameRoot String containing root to use for file names.
*/
#ifdef USE_DEPRECATED_CUNIT_NAMES
/** Deprecated (version 1). @deprecated Use CU_automated_run_tests(). */
#define automated_run_tests() CU_automated_run_tests()
/** Deprecated (version 1). @deprecated Use CU_set_output_filename(). */
#define set_output_filename(x) CU_set_output_filename((x))
#endif /* USE_DEPRECATED_CUNIT_NAMES */
void CU_automated_enable_junit_xml(CU_BOOL bFlag);
void CU_automated_package_name_set(const char *pName);
const char *CU_automated_package_name_get();
#ifdef __cplusplus
}
#endif
#endif /* CUNIT_AUTOMATED_H_SEEN */
/** @} */
cunit-2.1-3-dfsg/CUnit/Headers/Basic.h 0000664 0000000 0000000 00000007600 12607012350 0017345 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2004-2006 Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Interface for simple test runner.
*
* 11-Aug-2004 Initial implementation of basic test runner interface. (JDS)
*/
/** @file
* Basic interface with output to stdout.
*/
/** @addtogroup Basic
* @{
*/
#ifndef CUNIT_BASIC_H_SEEN
#define CUNIT_BASIC_H_SEEN
#include "CUnit.h"
#include "TestDB.h"
#ifdef __cplusplus
extern "C" {
#endif
/** Run modes for the basic interface. */
typedef enum {
CU_BRM_NORMAL = 0, /**< Normal mode - failures and run summary are printed [default]. */
CU_BRM_SILENT, /**< Silent mode - no output is printed except framework error messages. */
CU_BRM_VERBOSE /**< Verbose mode - maximum output of run details. */
} CU_BasicRunMode;
CU_EXPORT CU_ErrorCode CU_basic_run_tests(void);
/**<
* Runs all registered CUnit tests using the basic interface.
* The default CU_BasicRunMode is used unless it has been
* previously changed using CU_basic_set_mode(). The CUnit test
* registry must have been initialized before calling this function.
*
* @return A CU_ErrorCode indicating the framework error condition, including
* CUE_NOREGISTRY - Registry has not been initialized.
*/
CU_EXPORT CU_ErrorCode CU_basic_run_suite(CU_pSuite pSuite);
/**<
* Runs all tests for a specific suite in the basic interface.
* If pSuite is NULL, the function returns without taking any
* action. The default CU_BasicRunMode is used unless it has
* been changed using CU_basic_set_mode().
*
* @param pSuite The CU_Suite to run.
* @return A CU_ErrorCode indicating the framework error condition, including
* CUE_NOSUITE - pSuite was NULL.
*/
CU_EXPORT CU_ErrorCode CU_basic_run_test(CU_pSuite pSuite, CU_pTest pTest);
/**<
* Runs a single test in a specific suite in the basic interface.
* If pSuite or pTest is NULL, the function returns without
* taking any action. The default CU_BasicRunMode is used unless
* it has been changed using CU_basic_set_mode.
*
* @param pSuite The CU_Suite holding the CU_Test to run.
* @param pTest The CU_Test to run.
* @return A CU_ErrorCode indicating the framework error condition, including
* CUE_NOSUITE - pSuite was NULL.
* CUE_NOTEST - pTest was NULL.
*/
CU_EXPORT void CU_basic_set_mode(CU_BasicRunMode mode);
/**< Sets the run mode for the basic interface.
* @param mode The new CU_BasicRunMode for subsequent test
* runs using the basic interface.
*/
CU_EXPORT CU_BasicRunMode CU_basic_get_mode(void);
/**< Retrieves the current run mode for the basic interface.
* @return The current CU_BasicRunMode setting for test
* runs using the basic interface.
*/
CU_EXPORT void CU_basic_show_failures(CU_pFailureRecord pFailure);
/**<
* Prints a summary of run failures to stdout.
* This is provided for user convenience upon request, and does
* not take into account the current run mode. The failures are
* printed to stdout independent of the most recent run mode.
*
* @param pFailure List of CU_pFailureRecord's to output.
*/
#ifdef __cplusplus
}
#endif
#endif /* CUNIT_BASIC_H_SEEN */
/** @} */
cunit-2.1-3-dfsg/CUnit/Headers/CUCurses.h 0000664 0000000 0000000 00000003405 12607012350 0020017 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Contains Interface for curses Run tests.
*
* Aug 2001 Initial implementation. (AK)
*
* 09/Aug/2001 Single interface to Console_run_tests. (AK)
*
* 18-Jul-2004 New interface. (JDS)
*
* 21-Apr-2005 Changed header name to avoid clash with system curses.h. (JDS)
*/
/** @file
* Curses testing interface with interactive output (user interface).
*/
/** @addtogroup Curses
* @{
*/
#ifndef CUNIT_CURSES_H_SEEN
#define CUNIT_CURSES_H_SEEN
#include "CUnit.h"
#include "TestDB.h"
#ifdef __cplusplus
extern "C" {
#endif
CU_EXPORT void CU_curses_run_tests(void);
/**< Run registered CUnit tests using the curses interface. */
#ifdef USE_DEPRECATED_CUNIT_NAMES
/** Deprecated (version 1). @deprecated Use CU_curses_run_tests(). */
#define curses_run_tests() CU_curses_run_tests()
#endif
#ifdef __cplusplus
}
#endif
#endif /* CUNIT_CURSES_H_SEEN */
/** @} */
cunit-2.1-3-dfsg/CUnit/Headers/CUError.h 0000664 0000000 0000000 00000017065 12607012350 0017653 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Contains CUnit error codes which can be used externally.
*
* Aug 2001 Initial implementation. (AK)
*
* 02/Oct/2001 Added proper Eror Codes. (AK)
*
* 13-Oct-2001 Added Error Codes for Duplicate TestGroup and Test. (AK)
*
* 03-Aug-2004 Converted error code macros to an enum, doxygen comments, moved
* error handing code here, changed file name from Errno.h, added
* error codes for file open errors, added error action selection. (JDS)
*
* 05-Sep-2004 Added internal test interface. (JDS)
*/
/** @file
* Error handling functions (user interface).
* CUnit uses a simple (and conventional) error handling strategy.
* Functions that can generate errors set (and usually return) an
* error code to indicate the run status. The error code can be
* inspected using the CU_get_error() function. A descriptive
* error message can be retrieved using CU_get_error_msg().
*/
/** @addtogroup Framework
* @{
*/
#ifndef CUNIT_CUERROR_H_SEEN
#define CUNIT_CUERROR_H_SEEN
#include
/*------------------------------------------------------------------------*/
/** CUnit error codes.
* If codes are added or removed, be sure to make a change to the
* error messages in CUError.c/get_error_desc().
* @see CU_set_error()
* @see CU_get_error()
* @see CU_get_error_msg()
*/
typedef enum {
/* basic errors */
CUE_SUCCESS = 0, /**< No error condition. */
CUE_NOMEMORY = 1, /**< Memory allocation failed. */
/* Test Registry Level Errors */
CUE_NOREGISTRY = 10, /**< Test registry not initialized. */
CUE_REGISTRY_EXISTS = 11, /**< Attempt to CU_set_registry() without CU_cleanup_registry(). */
/* Test Suite Level Errors */
CUE_NOSUITE = 20, /**< A required CU_pSuite pointer was NULL. */
CUE_NO_SUITENAME = 21, /**< Required CU_Suite name not provided. */
CUE_SINIT_FAILED = 22, /**< Suite initialization failed. */
CUE_SCLEAN_FAILED = 23, /**< Suite cleanup failed. */
CUE_DUP_SUITE = 24, /**< Duplicate suite name not allowed. */
CUE_SUITE_INACTIVE = 25, /**< Test run initiated for an inactive suite. */
/* Test Case Level Errors */
CUE_NOTEST = 30, /**< A required CU_pTest or CU_TestFunc pointer was NULL. */
CUE_NO_TESTNAME = 31, /**< Required CU_Test name not provided. */
CUE_DUP_TEST = 32, /**< Duplicate test case name not allowed. */
CUE_TEST_NOT_IN_SUITE = 33, /**< Test not registered in specified suite. */
CUE_TEST_INACTIVE = 34, /**< Test run initiated for an inactive test. */
/* File handling errors */
CUE_FOPEN_FAILED = 40, /**< An error occurred opening a file. */
CUE_FCLOSE_FAILED = 41, /**< An error occurred closing a file. */
CUE_BAD_FILENAME = 42, /**< A bad filename was requested (NULL, empty, nonexistent, etc.). */
CUE_WRITE_ERROR = 43 /**< An error occurred during a write to a file. */
} CU_ErrorCode;
/*------------------------------------------------------------------------*/
/** CUnit error action codes.
* These are used to set the action desired when an error
* condition is detected in the CUnit framework.
* @see CU_set_error_action()
* @see CU_get_error_action()
*/
typedef enum CU_ErrorAction {
CUEA_IGNORE, /**< Runs should be continued when an error condition occurs (if possible). */
CUEA_FAIL, /**< Runs should be stopped when an error condition occurs. */
CUEA_ABORT /**< The application should exit() when an error conditions occurs. */
} CU_ErrorAction;
/* Error handling & reporting functions. */
#include "CUnit.h"
#ifdef __cplusplus
extern "C" {
#endif
CU_EXPORT CU_ErrorCode CU_get_error(void);
/**<
* Retrieves the current CUnit framework error code.
* CUnit implementation functions set the error code to indicate the
* status of the most recent operation. In general, the CUnit functions
* will clear the code to CUE_SUCCESS, then reset it to a specific error
* code if an exception condition is encountered. Some functions
* return the code, others leave it to the user to inspect if desired.
*
* @return The current error condition code.
* @see CU_get_error_msg()
* @see CU_ErrorCode
*/
CU_EXPORT const char* CU_get_error_msg(void);
/**<
* Retrieves a message corresponding to the current framework error code.
* CUnit implementation functions set the error code to indicate the
* of the most recent operation. In general, the CUnit functions will
* clear the code to CUE_SUCCESS, then reset it to a specific error
* code if an exception condition is encountered. This function allows
* the user to retrieve a descriptive error message corresponding to the
* error code set by the last operation.
*
* @return A message corresponding to the current error condition.
* @see CU_get_error()
* @see CU_ErrorCode
*/
CU_EXPORT void CU_set_error_action(CU_ErrorAction action);
/**<
* Sets the action to take when a framework error condition occurs.
* This function should be used to specify the action to take
* when an error condition is encountered. The default action is
* CUEA_IGNORE, which results in errors being ignored and test runs
* being continued (if possible). A value of CUEA_FAIL causes test
* runs to stop as soon as an error condition occurs, while
* CU_ABORT causes the application to exit on any error.
*
* @param action CU_ErrorAction indicating the new error action.
* @see CU_get_error_action()
* @see CU_set_error()
* @see CU_ErrorAction
*/
CU_EXPORT CU_ErrorAction CU_get_error_action(void);
/**<
* Retrieves the current framework error action code.
*
* @return The current error action code.
* @see CU_set_error_action()
* @see CU_set_error()
* @see CU_ErrorAction
*/
#ifdef CUNIT_BUILD_TESTS
void test_cunit_CUError(void);
#endif
/* Internal function - users should not generally call this function */
CU_EXPORT void CU_set_error(CU_ErrorCode error);
/**<
* Sets the CUnit framework error code.
* This function is used internally by CUnit implementation functions
* when an error condition occurs within the framework. It should
* not generally be called by user code. NOTE that if the current
* error action is CUEA_ABORT, then calling this function will
* result in exit() being called for the current application.
*
* @param error CU_ErrorCode indicating the current error condition.
* @see CU_get_error()
* @see CU_get_error_msg()
* @see CU_ErrorCode
*/
#ifdef __cplusplus
}
#endif
#ifdef USE_DEPRECATED_CUNIT_NAMES
/** Deprecated (version 1). @deprecated Use CU_get_error_msg(). */
#define get_error() CU_get_error_msg()
#endif /* USE_DEPRECATED_CUNIT_NAMES */
#endif /* CUNIT_CUERROR_H_SEEN */
/** @} */
cunit-2.1-3-dfsg/CUnit/Headers/CUnit.h 0000664 0000000 0000000 00000045200 12607012350 0017344 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* ASSERT Macro definitions and general CUnit configuration definitions.
*
* 09/Aug/2001 ASSERT definitions. (AK)
*
* 12/Mar/2003 New Assert definitions. (AK)
*
* 27/Jul/2003 Modified ASSERT_XXX Macro definitions. (AK)
*
* 15-Jul-2004 New interface, changed action on assert failure to not
* return, provided _FATAL versions of assertions to return
* from test function on failure. (JDS)
*
* 01-Sep-2004 Modified assertions for setjmp/longjmp mechanism of
* aborting test runs, added CU_FAIL and CU_PASS macros. (JDS)
*
* 07-May-2005 Added CU_ prefix to remaining CUnit defines (BOOL, TRUE,
* FALSE, MAX_...). Added CU_UNREFERENCED_PARAMETER() define. (JDS)
*/
/** @file
* Basic CUnit include file for user and system code.
* Defines macros for assertions for use in user test cases.
* Basic system macro definitions also appear here.
*/
/** @addtogroup Framework
* @{
*/
#ifndef CUNIT_CUNIT_H_SEEN
#define CUNIT_CUNIT_H_SEEN
#include
#include
/** CUnit version number. */
#define CU_VERSION "2.1-2"
/* Max string lengths for names (includes terminating NULL. */
/** Maximum length of a test name string. */
#define CU_MAX_TEST_NAME_LENGTH 256
/** Maximim length of a suite name string. */
#define CU_MAX_SUITE_NAME_LENGTH 256
/* Global type Definitions to be used for boolean operators. */
#ifndef CU_BOOL
/** Boolean type for CUnit use. */
#define CU_BOOL int
#endif
#ifndef CU_TRUE
/** Boolean TRUE for CUnit use. */
#define CU_TRUE 1
#endif
#ifndef CU_FALSE
/** Boolean FALSE for CUnit use. */
#define CU_FALSE 0
#endif
#ifndef CU_UNREFERENCED_PARAMETER
/** Consistent approach to referencing unused parameters. */
#define CU_UNREFERENCED_PARAMETER(x) (void)x
#endif
#ifndef CU_MAX
# define CU_MAX(a,b) (((a) >= (b)) ? (a) : (b))
#endif
#ifndef CU_MIN
# define CU_MIN(a,b) (((a) >= (b)) ? (b) : (a))
#endif
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) || defined(__WIN32__)
# ifdef CU_DLL
# ifdef CU_BUILD_DLL
# define CU_EXPORT __declspec(dllexport)
# else
# define CU_EXPORT __declspec(dllimport)
# endif
# else
# define CU_EXPORT
# endif
# ifdef _MSC_VER
# define snprintf _snprintf
# endif
#else
# define CU_EXPORT
#endif /* WIN32 */
#include "CUError.h"
#include "TestDB.h" /* not needed here - included for user convenience */
#include "TestRun.h" /* not needed here - include (after BOOL define) for user convenience */
/** Record a pass condition without performing a logical test. */
#define CU_PASS(msg) \
{ CU_assertImplementation(CU_TRUE, __LINE__, ("CU_PASS(" #msg ")"), __FILE__, "", CU_FALSE); }
/** Simple assertion.
* Reports failure with no other action.
*/
#define CU_ASSERT(value) \
{ CU_assertImplementation((value), __LINE__, #value, __FILE__, "", CU_FALSE); }
/** Simple assertion.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_FATAL(value) \
{ CU_assertImplementation((value), __LINE__, #value, __FILE__, "", CU_TRUE); }
/** Simple assertion.
* Reports failure with no other action.
*/
#define CU_TEST(value) \
{ CU_assertImplementation((value), __LINE__, #value, __FILE__, "", CU_FALSE); }
/** Simple assertion.
* Reports failure and causes test to abort.
*/
#define CU_TEST_FATAL(value) \
{ CU_assertImplementation((value), __LINE__, #value, __FILE__, "", CU_TRUE); }
/** Record a failure without performing a logical test. */
#define CU_FAIL(msg) \
{ CU_assertImplementation(CU_FALSE, __LINE__, ("CU_FAIL(" #msg ")"), __FILE__, "", CU_FALSE); }
/** Record a failure without performing a logical test, and abort test. */
#define CU_FAIL_FATAL(msg) \
{ CU_assertImplementation(CU_FALSE, __LINE__, ("CU_FAIL_FATAL(" #msg ")"), __FILE__, "", CU_TRUE); }
/** Asserts that value is CU_TRUE.
* Reports failure with no other action.
*/
#define CU_ASSERT_TRUE(value) \
{ CU_assertImplementation((value), __LINE__, ("CU_ASSERT_TRUE(" #value ")"), __FILE__, "", CU_FALSE); }
/** Asserts that value is CU_TRUE.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_TRUE_FATAL(value) \
{ CU_assertImplementation((value), __LINE__, ("CU_ASSERT_TRUE_FATAL(" #value ")"), __FILE__, "", CU_TRUE); }
/** Asserts that value is CU_FALSE.
* Reports failure with no other action.
*/
#define CU_ASSERT_FALSE(value) \
{ CU_assertImplementation(!(value), __LINE__, ("CU_ASSERT_FALSE(" #value ")"), __FILE__, "", CU_FALSE); }
/** Asserts that value is CU_FALSE.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_FALSE_FATAL(value) \
{ CU_assertImplementation(!(value), __LINE__, ("CU_ASSERT_FALSE_FATAL(" #value ")"), __FILE__, "", CU_TRUE); }
/** Asserts that actual == expected.
* Reports failure with no other action.
*/
#define CU_ASSERT_EQUAL(actual, expected) \
{ CU_assertImplementation(((actual) == (expected)), __LINE__, ("CU_ASSERT_EQUAL(" #actual "," #expected ")"), __FILE__, "", CU_FALSE); }
/** Asserts that actual == expected.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_EQUAL_FATAL(actual, expected) \
{ CU_assertImplementation(((actual) == (expected)), __LINE__, ("CU_ASSERT_EQUAL_FATAL(" #actual "," #expected ")"), __FILE__, "", CU_TRUE); }
/** Asserts that actual != expected.
* Reports failure with no other action.
*/
#define CU_ASSERT_NOT_EQUAL(actual, expected) \
{ CU_assertImplementation(((actual) != (expected)), __LINE__, ("CU_ASSERT_NOT_EQUAL(" #actual "," #expected ")"), __FILE__, "", CU_FALSE); }
/** Asserts that actual != expected.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_NOT_EQUAL_FATAL(actual, expected) \
{ CU_assertImplementation(((actual) != (expected)), __LINE__, ("CU_ASSERT_NOT_EQUAL_FATAL(" #actual "," #expected ")"), __FILE__, "", CU_TRUE); }
/** Asserts that pointers actual == expected.
* Reports failure with no other action.
*/
#define CU_ASSERT_PTR_EQUAL(actual, expected) \
{ CU_assertImplementation(((void*)(actual) == (void*)(expected)), __LINE__, ("CU_ASSERT_PTR_EQUAL(" #actual "," #expected ")"), __FILE__, "", CU_FALSE); }
/** Asserts that pointers actual == expected.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_PTR_EQUAL_FATAL(actual, expected) \
{ CU_assertImplementation(((void*)(actual) == (void*)(expected)), __LINE__, ("CU_ASSERT_PTR_EQUAL_FATAL(" #actual "," #expected ")"), __FILE__, "", CU_TRUE); }
/** Asserts that pointers actual != expected.
* Reports failure with no other action.
*/
#define CU_ASSERT_PTR_NOT_EQUAL(actual, expected) \
{ CU_assertImplementation(((void*)(actual) != (void*)(expected)), __LINE__, ("CU_ASSERT_PTR_NOT_EQUAL(" #actual "," #expected ")"), __FILE__, "", CU_FALSE); }
/** Asserts that pointers actual != expected.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_PTR_NOT_EQUAL_FATAL(actual, expected) \
{ CU_assertImplementation(((void*)(actual) != (void*)(expected)), __LINE__, ("CU_ASSERT_PTR_NOT_EQUAL_FATAL(" #actual "," #expected ")"), __FILE__, "", CU_TRUE); }
/** Asserts that pointer value is NULL.
* Reports failure with no other action.
*/
#define CU_ASSERT_PTR_NULL(value) \
{ CU_assertImplementation((NULL == (void*)(value)), __LINE__, ("CU_ASSERT_PTR_NULL(" #value")"), __FILE__, "", CU_FALSE); }
/** Asserts that pointer value is NULL.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_PTR_NULL_FATAL(value) \
{ CU_assertImplementation((NULL == (void*)(value)), __LINE__, ("CU_ASSERT_PTR_NULL_FATAL(" #value")"), __FILE__, "", CU_TRUE); }
/** Asserts that pointer value is not NULL.
* Reports failure with no other action.
*/
#define CU_ASSERT_PTR_NOT_NULL(value) \
{ CU_assertImplementation((NULL != (void*)(value)), __LINE__, ("CU_ASSERT_PTR_NOT_NULL(" #value")"), __FILE__, "", CU_FALSE); }
/** Asserts that pointer value is not NULL.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_PTR_NOT_NULL_FATAL(value) \
{ CU_assertImplementation((NULL != (void*)(value)), __LINE__, ("CU_ASSERT_PTR_NOT_NULL_FATAL(" #value")"), __FILE__, "", CU_TRUE); }
/** Asserts that string actual == expected.
* Reports failure with no other action.
*/
#define CU_ASSERT_STRING_EQUAL(actual, expected) \
{ CU_assertImplementation(!(strcmp((const char*)(actual), (const char*)(expected))), __LINE__, ("CU_ASSERT_STRING_EQUAL(" #actual "," #expected ")"), __FILE__, "", CU_FALSE); }
/** Asserts that string actual == expected.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_STRING_EQUAL_FATAL(actual, expected) \
{ CU_assertImplementation(!(strcmp((const char*)(actual), (const char*)(expected))), __LINE__, ("CU_ASSERT_STRING_EQUAL_FATAL(" #actual "," #expected ")"), __FILE__, "", CU_TRUE); }
/** Asserts that string actual != expected.
* Reports failure with no other action.
*/
#define CU_ASSERT_STRING_NOT_EQUAL(actual, expected) \
{ CU_assertImplementation((strcmp((const char*)(actual), (const char*)(expected))), __LINE__, ("CU_ASSERT_STRING_NOT_EQUAL(" #actual "," #expected ")"), __FILE__, "", CU_FALSE); }
/** Asserts that string actual != expected.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_STRING_NOT_EQUAL_FATAL(actual, expected) \
{ CU_assertImplementation((strcmp((const char*)(actual), (const char*)(expected))), __LINE__, ("CU_ASSERT_STRING_NOT_EQUAL_FATAL(" #actual "," #expected ")"), __FILE__, "", CU_TRUE); }
/** Asserts that string actual == expected with length specified.
* The comparison is limited to count characters.
* Reports failure with no other action.
*/
#define CU_ASSERT_NSTRING_EQUAL(actual, expected, count) \
{ CU_assertImplementation(!(strncmp((const char*)(actual), (const char*)(expected), (size_t)(count))), __LINE__, ("CU_ASSERT_NSTRING_EQUAL(" #actual "," #expected "," #count ")"), __FILE__, "", CU_FALSE); }
/** Asserts that string actual == expected with length specified.
* The comparison is limited to count characters.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_NSTRING_EQUAL_FATAL(actual, expected, count) \
{ CU_assertImplementation(!(strncmp((const char*)(actual), (const char*)(expected), (size_t)(count))), __LINE__, ("CU_ASSERT_NSTRING_EQUAL_FATAL(" #actual "," #expected "," #count ")"), __FILE__, "", CU_TRUE); }
/** Asserts that string actual != expected with length specified.
* The comparison is limited to count characters.
* Reports failure with no other action.
*/
#define CU_ASSERT_NSTRING_NOT_EQUAL(actual, expected, count) \
{ CU_assertImplementation((strncmp((const char*)(actual), (const char*)(expected), (size_t)(count))), __LINE__, ("CU_ASSERT_NSTRING_NOT_EQUAL(" #actual "," #expected "," #count ")"), __FILE__, "", CU_FALSE); }
/** Asserts that string actual != expected with length specified.
* The comparison is limited to count characters.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_NSTRING_NOT_EQUAL_FATAL(actual, expected, count) \
{ CU_assertImplementation((strncmp((const char*)(actual), (const char*)(expected), (size_t)(count))), __LINE__, ("CU_ASSERT_NSTRING_NOT_EQUAL_FATAL(" #actual "," #expected "," #count ")"), __FILE__, "", CU_TRUE); }
/** Asserts that double actual == expected within the specified tolerance.
* If actual is within granularity of expected, the assertion passes.
* Reports failure with no other action.
*/
#define CU_ASSERT_DOUBLE_EQUAL(actual, expected, granularity) \
{ CU_assertImplementation(((fabs((double)(actual) - (expected)) <= fabs((double)(granularity)))), __LINE__, ("CU_ASSERT_DOUBLE_EQUAL(" #actual "," #expected "," #granularity ")"), __FILE__, "", CU_FALSE); }
/** Asserts that double actual == expected within the specified tolerance.
* If actual is within granularity of expected, the assertion passes.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_DOUBLE_EQUAL_FATAL(actual, expected, granularity) \
{ CU_assertImplementation(((fabs((double)(actual) - (expected)) <= fabs((double)(granularity)))), __LINE__, ("CU_ASSERT_DOUBLE_EQUAL_FATAL(" #actual "," #expected "," #granularity ")"), __FILE__, "", CU_TRUE); }
/** Asserts that double actual != expected within the specified tolerance.
* If actual is within granularity of expected, the assertion fails.
* Reports failure with no other action.
*/
#define CU_ASSERT_DOUBLE_NOT_EQUAL(actual, expected, granularity) \
{ CU_assertImplementation(((fabs((double)(actual) - (expected)) > fabs((double)(granularity)))), __LINE__, ("CU_ASSERT_DOUBLE_NOT_EQUAL(" #actual "," #expected "," #granularity ")"), __FILE__, "", CU_FALSE); }
/** Asserts that double actual != expected within the specified tolerance.
* If actual is within granularity of expected, the assertion fails.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_DOUBLE_NOT_EQUAL_FATAL(actual, expected, granularity) \
{ CU_assertImplementation(((fabs((double)(actual) - (expected)) > fabs((double)(granularity)))), __LINE__, ("CU_ASSERT_DOUBLE_NOT_EQUAL_FATAL(" #actual "," #expected "," #granularity ")"), __FILE__, "", CU_TRUE); }
#ifdef USE_DEPRECATED_CUNIT_NAMES
#ifndef BOOL
/** Deprecated (version 2.0-2). @deprecated Use CU_BOOL. */
#define BOOL int
#endif
#ifndef TRUE
/** Deprecated (version 2.0-2). @deprecated Use CU_TRUE. */
#define TRUE 1
#endif
#ifndef FALSE
/** Deprecated (version 2.0-2). @deprecated Use CU_FALSE. */
#define FALSE 0
#endif
/** Deprecated (version 2.0-2). @deprecated Use CU_MAX_TEST_NAME_LENGTH. */
#define MAX_TEST_NAME_LENGTH 256
/** Deprecated (version 2.0-2). @deprecated Use CU_MAX_SUITE_NAME_LENGTH. */
#define MAX_SUITE_NAME_LENGTH 256
/** Deprecated (version 1). @deprecated Use CU_ASSERT_FATAL. */
#define ASSERT(value) { if (FALSE == (int)(value)) { CU_assertImplementation((BOOL)value, __LINE__, #value, __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_TRUE_FATAL. */
#define ASSERT_TRUE(value) { if (FALSE == (value)) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_TRUE(" #value ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_FALSE_FATAL. */
#define ASSERT_FALSE(value) { if (FALSE != (value)) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_FALSE(" #value ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_EQUAL_FATAL. */
#define ASSERT_EQUAL(actual, expected) { if ((actual) != (expected)) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_EQUAL(" #actual "," #expected ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_NOT_EQUAL_FATAL. */
#define ASSERT_NOT_EQUAL(actual, expected) { if ((void*)(actual) == (void*)(expected)) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_NOT_EQUAL(" #actual "," #expected ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_PTR_EQUAL_FATAL. */
#define ASSERT_PTR_EQUAL(actual, expected) { if ((void*)(actual) != (void*)(expected)) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_PTR_EQUAL(" #actual "," #expected ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_PTR_NOT_EQUAL_FATAL. */
#define ASSERT_PTR_NOT_EQUAL(actual, expected) { if ((void*)(actual) == (void*)(expected)) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_PTR_NOT_EQUAL(" #actual "," #expected ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_PTR_NULL_FATAL. */
#define ASSERT_PTR_NULL(value) { if (NULL != (void*)(value)) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_PTR_NULL(" #value")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_PTR_NOT_NULL_FATAL. */
#define ASSERT_PTR_NOT_NULL(value) { if (NULL == (void*)(value)) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_PTR_NOT_NULL(" #value")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_STRING_EQUAL_FATAL. */
#define ASSERT_STRING_EQUAL(actual, expected) { if (strcmp((const char*)actual, (const char*)expected)) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_STRING_EQUAL(" #actual "," #expected ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_STRING_NOT_EQUAL_FATAL. */
#define ASSERT_STRING_NOT_EQUAL(actual, expected) { if (!strcmp((const char*)actual, (const char*)expected)) { CU_assertImplementation(TRUE, __LINE__, ("ASSERT_STRING_NOT_EQUAL(" #actual "," #expected ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_NSTRING_EQUAL_FATAL. */
#define ASSERT_NSTRING_EQUAL(actual, expected, count) { if (strncmp((const char*)actual, (const char*)expected, (size_t)count)) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_NSTRING_EQUAL(" #actual "," #expected "," #count ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_NSTRING_NOT_EQUAL_FATAL. */
#define ASSERT_NSTRING_NOT_EQUAL(actual, expected, count) { if (!strncmp((const char*)actual, (const char*)expected, (size_t)count)) { CU_assertImplementation(TRUE, __LINE__, ("ASSERT_NSTRING_NOT_EQUAL(" #actual "," #expected "," #count ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_DOUBLE_EQUAL_FATAL. */
#define ASSERT_DOUBLE_EQUAL(actual, expected, granularity) { if ((fabs((double)actual - expected) > fabs((double)granularity))) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_DOUBLE_EQUAL(" #actual "," #expected "," #granularity ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_DOUBLE_NOT_EQUAL_FATAL. */
#define ASSERT_DOUBLE_NOT_EQUAL(actual, expected, granularity) { if ((fabs((double)actual - expected) <= fabs((double)granularity))) { CU_assertImplementation(TRUE, __LINE__, ("ASSERT_DOUBLE_NOT_EQUAL(" #actual "," #expected "," #granularity ")"), __FILE__, "", FALSE); return; }}
#endif /* USE_DEPRECATED_CUNIT_NAMES */
#endif /* CUNIT_CUNIT_H_SEEN */
/** @} */
cunit-2.1-3-dfsg/CUnit/Headers/CUnit.h.in 0000664 0000000 0000000 00000045326 12607012350 0017762 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* ASSERT Macro definitions and general CUnit configuration definitions.
*
* 09/Aug/2001 ASSERT definitions. (AK)
*
* 12/Mar/2003 New Assert definitions. (AK)
*
* 27/Jul/2003 Modified ASSERT_XXX Macro definitions. (AK)
*
* 15-Jul-2004 New interface, changed action on assert failure to not
* return, provided _FATAL versions of assertions to return
* from test function on failure. (JDS)
*
* 01-Sep-2004 Modified assertions for setjmp/longjmp mechanism of
* aborting test runs, added CU_FAIL and CU_PASS macros. (JDS)
*
* 07-May-2005 Added CU_ prefix to remaining CUnit defines (BOOL, TRUE,
* FALSE, MAX_...). Added CU_UNREFERENCED_PARAMETER() define. (JDS)
*/
/** @file
* Basic CUnit include file for user and system code.
* Defines macros for assertions for use in user test cases.
* Basic system macro definitions also appear here.
*/
/** @addtogroup Framework
* @{
*/
#ifndef CUNIT_CUNIT_H_SEEN
#define CUNIT_CUNIT_H_SEEN
#include
#include
/** CUnit version number. */
#define CU_VERSION "@VERSION@-@RELEASE@"
/* Max string lengths for names (includes terminating NULL. */
/** Maximum length of a test name string. */
#define CU_MAX_TEST_NAME_LENGTH 256
/** Maximim length of a suite name string. */
#define CU_MAX_SUITE_NAME_LENGTH 256
/* Global type Definitions to be used for boolean operators. */
#ifndef CU_BOOL
/** Boolean type for CUnit use. */
#define CU_BOOL int
#endif
#ifndef CU_TRUE
/** Boolean TRUE for CUnit use. */
#define CU_TRUE 1
#endif
#ifndef CU_FALSE
/** Boolean FALSE for CUnit use. */
#define CU_FALSE 0
#endif
#ifndef CU_UNREFERENCED_PARAMETER
/** Consistent approach to referencing unused parameters. */
#define CU_UNREFERENCED_PARAMETER(x) (void)x
#endif
#ifndef CU_MAX
# define CU_MAX(a,b) (((a) >= (b)) ? (a) : (b))
#endif
#ifndef CU_MIN
# define CU_MIN(a,b) (((a) >= (b)) ? (b) : (a))
#endif
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32) || defined(__WIN32__)
# ifdef CU_DLL
# ifdef CU_BUILD_DLL
# define CU_EXPORT __declspec(dllexport)
# else
# define CU_EXPORT __declspec(dllimport)
# endif
# else
# define CU_EXPORT
# endif
# ifdef _MSC_VER
# define snprintf _snprintf
# endif
#else
# define CU_EXPORT
#endif /* WIN32 */
#include "CUError.h"
#include "TestDB.h" /* not needed here - included for user convenience */
#include "TestRun.h" /* not needed here - include (after BOOL define) for user convenience */
/** Record a pass condition without performing a logical test. */
#define CU_PASS(msg) \
{ CU_assertImplementation(CU_TRUE, __LINE__, ("CU_PASS(" #msg ")"), __FILE__, "", CU_FALSE); }
/** Simple assertion.
* Reports failure with no other action.
*/
#define CU_ASSERT(value) \
{ CU_assertImplementation((value), __LINE__, #value, __FILE__, "", CU_FALSE); }
/** Simple assertion.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_FATAL(value) \
{ CU_assertImplementation((value), __LINE__, #value, __FILE__, "", CU_TRUE); }
/** Simple assertion.
* Reports failure with no other action.
*/
#define CU_TEST(value) \
{ CU_assertImplementation((value), __LINE__, #value, __FILE__, "", CU_FALSE); }
/** Simple assertion.
* Reports failure and causes test to abort.
*/
#define CU_TEST_FATAL(value) \
{ CU_assertImplementation((value), __LINE__, #value, __FILE__, "", CU_TRUE); }
/** Record a failure without performing a logical test. */
#define CU_FAIL(msg) \
{ CU_assertImplementation(CU_FALSE, __LINE__, ("CU_FAIL(" #msg ")"), __FILE__, "", CU_FALSE); }
/** Record a failure without performing a logical test, and abort test. */
#define CU_FAIL_FATAL(msg) \
{ CU_assertImplementation(CU_FALSE, __LINE__, ("CU_FAIL_FATAL(" #msg ")"), __FILE__, "", CU_TRUE); }
/** Asserts that value is CU_TRUE.
* Reports failure with no other action.
*/
#define CU_ASSERT_TRUE(value) \
{ CU_assertImplementation((value), __LINE__, ("CU_ASSERT_TRUE(" #value ")"), __FILE__, "", CU_FALSE); }
/** Asserts that value is CU_TRUE.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_TRUE_FATAL(value) \
{ CU_assertImplementation((value), __LINE__, ("CU_ASSERT_TRUE_FATAL(" #value ")"), __FILE__, "", CU_TRUE); }
/** Asserts that value is CU_FALSE.
* Reports failure with no other action.
*/
#define CU_ASSERT_FALSE(value) \
{ CU_assertImplementation(!(value), __LINE__, ("CU_ASSERT_FALSE(" #value ")"), __FILE__, "", CU_FALSE); }
/** Asserts that value is CU_FALSE.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_FALSE_FATAL(value) \
{ CU_assertImplementation(!(value), __LINE__, ("CU_ASSERT_FALSE_FATAL(" #value ")"), __FILE__, "", CU_TRUE); }
/** Asserts that actual == expected.
* Reports failure with no other action.
*/
#define CU_ASSERT_EQUAL(actual, expected) \
{ CU_assertImplementation(((actual) == (expected)), __LINE__, ("CU_ASSERT_EQUAL(" #actual "," #expected ")"), __FILE__, "", CU_FALSE); }
/** Asserts that actual == expected.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_EQUAL_FATAL(actual, expected) \
{ CU_assertImplementation(((actual) == (expected)), __LINE__, ("CU_ASSERT_EQUAL_FATAL(" #actual "," #expected ")"), __FILE__, "", CU_TRUE); }
/** Asserts that actual != expected.
* Reports failure with no other action.
*/
#define CU_ASSERT_NOT_EQUAL(actual, expected) \
{ CU_assertImplementation(((actual) != (expected)), __LINE__, ("CU_ASSERT_NOT_EQUAL(" #actual "," #expected ")"), __FILE__, "", CU_FALSE); }
/** Asserts that actual != expected.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_NOT_EQUAL_FATAL(actual, expected) \
{ CU_assertImplementation(((actual) != (expected)), __LINE__, ("CU_ASSERT_NOT_EQUAL_FATAL(" #actual "," #expected ")"), __FILE__, "", CU_TRUE); }
/** Asserts that pointers actual == expected.
* Reports failure with no other action.
*/
#define CU_ASSERT_PTR_EQUAL(actual, expected) \
{ CU_assertImplementation(((const void*)(actual) == (const void*)(expected)), __LINE__, ("CU_ASSERT_PTR_EQUAL(" #actual "," #expected ")"), __FILE__, "", CU_FALSE); }
/** Asserts that pointers actual == expected.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_PTR_EQUAL_FATAL(actual, expected) \
{ CU_assertImplementation(((const void*)(actual) == (const void*)(expected)), __LINE__, ("CU_ASSERT_PTR_EQUAL_FATAL(" #actual "," #expected ")"), __FILE__, "", CU_TRUE); }
/** Asserts that pointers actual != expected.
* Reports failure with no other action.
*/
#define CU_ASSERT_PTR_NOT_EQUAL(actual, expected) \
{ CU_assertImplementation(((const void*)(actual) != (const void*)(expected)), __LINE__, ("CU_ASSERT_PTR_NOT_EQUAL(" #actual "," #expected ")"), __FILE__, "", CU_FALSE); }
/** Asserts that pointers actual != expected.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_PTR_NOT_EQUAL_FATAL(actual, expected) \
{ CU_assertImplementation(((const void*)(actual) != (const void*)(expected)), __LINE__, ("CU_ASSERT_PTR_NOT_EQUAL_FATAL(" #actual "," #expected ")"), __FILE__, "", CU_TRUE); }
/** Asserts that pointer value is NULL.
* Reports failure with no other action.
*/
#define CU_ASSERT_PTR_NULL(value) \
{ CU_assertImplementation((NULL == (const void*)(value)), __LINE__, ("CU_ASSERT_PTR_NULL(" #value")"), __FILE__, "", CU_FALSE); }
/** Asserts that pointer value is NULL.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_PTR_NULL_FATAL(value) \
{ CU_assertImplementation((NULL == (const void*)(value)), __LINE__, ("CU_ASSERT_PTR_NULL_FATAL(" #value")"), __FILE__, "", CU_TRUE); }
/** Asserts that pointer value is not NULL.
* Reports failure with no other action.
*/
#define CU_ASSERT_PTR_NOT_NULL(value) \
{ CU_assertImplementation((NULL != (const void*)(value)), __LINE__, ("CU_ASSERT_PTR_NOT_NULL(" #value")"), __FILE__, "", CU_FALSE); }
/** Asserts that pointer value is not NULL.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_PTR_NOT_NULL_FATAL(value) \
{ CU_assertImplementation((NULL != (const void*)(value)), __LINE__, ("CU_ASSERT_PTR_NOT_NULL_FATAL(" #value")"), __FILE__, "", CU_TRUE); }
/** Asserts that string actual == expected.
* Reports failure with no other action.
*/
#define CU_ASSERT_STRING_EQUAL(actual, expected) \
{ CU_assertImplementation(!(strcmp((const char*)(actual), (const char*)(expected))), __LINE__, ("CU_ASSERT_STRING_EQUAL(" #actual "," #expected ")"), __FILE__, "", CU_FALSE); }
/** Asserts that string actual == expected.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_STRING_EQUAL_FATAL(actual, expected) \
{ CU_assertImplementation(!(strcmp((const char*)(actual), (const char*)(expected))), __LINE__, ("CU_ASSERT_STRING_EQUAL_FATAL(" #actual "," #expected ")"), __FILE__, "", CU_TRUE); }
/** Asserts that string actual != expected.
* Reports failure with no other action.
*/
#define CU_ASSERT_STRING_NOT_EQUAL(actual, expected) \
{ CU_assertImplementation((strcmp((const char*)(actual), (const char*)(expected))), __LINE__, ("CU_ASSERT_STRING_NOT_EQUAL(" #actual "," #expected ")"), __FILE__, "", CU_FALSE); }
/** Asserts that string actual != expected.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_STRING_NOT_EQUAL_FATAL(actual, expected) \
{ CU_assertImplementation((strcmp((const char*)(actual), (const char*)(expected))), __LINE__, ("CU_ASSERT_STRING_NOT_EQUAL_FATAL(" #actual "," #expected ")"), __FILE__, "", CU_TRUE); }
/** Asserts that string actual == expected with length specified.
* The comparison is limited to count characters.
* Reports failure with no other action.
*/
#define CU_ASSERT_NSTRING_EQUAL(actual, expected, count) \
{ CU_assertImplementation(!(strncmp((const char*)(actual), (const char*)(expected), (size_t)(count))), __LINE__, ("CU_ASSERT_NSTRING_EQUAL(" #actual "," #expected "," #count ")"), __FILE__, "", CU_FALSE); }
/** Asserts that string actual == expected with length specified.
* The comparison is limited to count characters.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_NSTRING_EQUAL_FATAL(actual, expected, count) \
{ CU_assertImplementation(!(strncmp((const char*)(actual), (const char*)(expected), (size_t)(count))), __LINE__, ("CU_ASSERT_NSTRING_EQUAL_FATAL(" #actual "," #expected "," #count ")"), __FILE__, "", CU_TRUE); }
/** Asserts that string actual != expected with length specified.
* The comparison is limited to count characters.
* Reports failure with no other action.
*/
#define CU_ASSERT_NSTRING_NOT_EQUAL(actual, expected, count) \
{ CU_assertImplementation((strncmp((const char*)(actual), (const char*)(expected), (size_t)(count))), __LINE__, ("CU_ASSERT_NSTRING_NOT_EQUAL(" #actual "," #expected "," #count ")"), __FILE__, "", CU_FALSE); }
/** Asserts that string actual != expected with length specified.
* The comparison is limited to count characters.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_NSTRING_NOT_EQUAL_FATAL(actual, expected, count) \
{ CU_assertImplementation((strncmp((const char*)(actual), (const char*)(expected), (size_t)(count))), __LINE__, ("CU_ASSERT_NSTRING_NOT_EQUAL_FATAL(" #actual "," #expected "," #count ")"), __FILE__, "", CU_TRUE); }
/** Asserts that double actual == expected within the specified tolerance.
* If actual is within granularity of expected, the assertion passes.
* Reports failure with no other action.
*/
#define CU_ASSERT_DOUBLE_EQUAL(actual, expected, granularity) \
{ CU_assertImplementation(((fabs((double)(actual) - (expected)) <= fabs((double)(granularity)))), __LINE__, ("CU_ASSERT_DOUBLE_EQUAL(" #actual "," #expected "," #granularity ")"), __FILE__, "", CU_FALSE); }
/** Asserts that double actual == expected within the specified tolerance.
* If actual is within granularity of expected, the assertion passes.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_DOUBLE_EQUAL_FATAL(actual, expected, granularity) \
{ CU_assertImplementation(((fabs((double)(actual) - (expected)) <= fabs((double)(granularity)))), __LINE__, ("CU_ASSERT_DOUBLE_EQUAL_FATAL(" #actual "," #expected "," #granularity ")"), __FILE__, "", CU_TRUE); }
/** Asserts that double actual != expected within the specified tolerance.
* If actual is within granularity of expected, the assertion fails.
* Reports failure with no other action.
*/
#define CU_ASSERT_DOUBLE_NOT_EQUAL(actual, expected, granularity) \
{ CU_assertImplementation(((fabs((double)(actual) - (expected)) > fabs((double)(granularity)))), __LINE__, ("CU_ASSERT_DOUBLE_NOT_EQUAL(" #actual "," #expected "," #granularity ")"), __FILE__, "", CU_FALSE); }
/** Asserts that double actual != expected within the specified tolerance.
* If actual is within granularity of expected, the assertion fails.
* Reports failure and causes test to abort.
*/
#define CU_ASSERT_DOUBLE_NOT_EQUAL_FATAL(actual, expected, granularity) \
{ CU_assertImplementation(((fabs((double)(actual) - (expected)) > fabs((double)(granularity)))), __LINE__, ("CU_ASSERT_DOUBLE_NOT_EQUAL_FATAL(" #actual "," #expected "," #granularity ")"), __FILE__, "", CU_TRUE); }
#ifdef USE_DEPRECATED_CUNIT_NAMES
#ifndef BOOL
/** Deprecated (version 2.0-2). @deprecated Use CU_BOOL. */
#define BOOL int
#endif
#ifndef TRUE
/** Deprecated (version 2.0-2). @deprecated Use CU_TRUE. */
#define TRUE 1
#endif
#ifndef FALSE
/** Deprecated (version 2.0-2). @deprecated Use CU_FALSE. */
#define FALSE 0
#endif
/** Deprecated (version 2.0-2). @deprecated Use CU_MAX_TEST_NAME_LENGTH. */
#define MAX_TEST_NAME_LENGTH 256
/** Deprecated (version 2.0-2). @deprecated Use CU_MAX_SUITE_NAME_LENGTH. */
#define MAX_SUITE_NAME_LENGTH 256
/** Deprecated (version 1). @deprecated Use CU_ASSERT_FATAL. */
#define ASSERT(value) { if (FALSE == (int)(value)) { CU_assertImplementation((BOOL)value, __LINE__, #value, __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_TRUE_FATAL. */
#define ASSERT_TRUE(value) { if (FALSE == (value)) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_TRUE(" #value ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_FALSE_FATAL. */
#define ASSERT_FALSE(value) { if (FALSE != (value)) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_FALSE(" #value ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_EQUAL_FATAL. */
#define ASSERT_EQUAL(actual, expected) { if ((actual) != (expected)) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_EQUAL(" #actual "," #expected ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_NOT_EQUAL_FATAL. */
#define ASSERT_NOT_EQUAL(actual, expected) { if ((void*)(actual) == (void*)(expected)) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_NOT_EQUAL(" #actual "," #expected ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_PTR_EQUAL_FATAL. */
#define ASSERT_PTR_EQUAL(actual, expected) { if ((void*)(actual) != (void*)(expected)) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_PTR_EQUAL(" #actual "," #expected ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_PTR_NOT_EQUAL_FATAL. */
#define ASSERT_PTR_NOT_EQUAL(actual, expected) { if ((void*)(actual) == (void*)(expected)) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_PTR_NOT_EQUAL(" #actual "," #expected ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_PTR_NULL_FATAL. */
#define ASSERT_PTR_NULL(value) { if (NULL != (void*)(value)) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_PTR_NULL(" #value")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_PTR_NOT_NULL_FATAL. */
#define ASSERT_PTR_NOT_NULL(value) { if (NULL == (void*)(value)) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_PTR_NOT_NULL(" #value")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_STRING_EQUAL_FATAL. */
#define ASSERT_STRING_EQUAL(actual, expected) { if (strcmp((const char*)actual, (const char*)expected)) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_STRING_EQUAL(" #actual "," #expected ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_STRING_NOT_EQUAL_FATAL. */
#define ASSERT_STRING_NOT_EQUAL(actual, expected) { if (!strcmp((const char*)actual, (const char*)expected)) { CU_assertImplementation(TRUE, __LINE__, ("ASSERT_STRING_NOT_EQUAL(" #actual "," #expected ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_NSTRING_EQUAL_FATAL. */
#define ASSERT_NSTRING_EQUAL(actual, expected, count) { if (strncmp((const char*)actual, (const char*)expected, (size_t)count)) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_NSTRING_EQUAL(" #actual "," #expected "," #count ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_NSTRING_NOT_EQUAL_FATAL. */
#define ASSERT_NSTRING_NOT_EQUAL(actual, expected, count) { if (!strncmp((const char*)actual, (const char*)expected, (size_t)count)) { CU_assertImplementation(TRUE, __LINE__, ("ASSERT_NSTRING_NOT_EQUAL(" #actual "," #expected "," #count ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_DOUBLE_EQUAL_FATAL. */
#define ASSERT_DOUBLE_EQUAL(actual, expected, granularity) { if ((fabs((double)actual - expected) > fabs((double)granularity))) { CU_assertImplementation(FALSE, __LINE__, ("ASSERT_DOUBLE_EQUAL(" #actual "," #expected "," #granularity ")"), __FILE__, "", FALSE); return; }}
/** Deprecated (version 1). @deprecated Use CU_ASSERT_DOUBLE_NOT_EQUAL_FATAL. */
#define ASSERT_DOUBLE_NOT_EQUAL(actual, expected, granularity) { if ((fabs((double)actual - expected) <= fabs((double)granularity))) { CU_assertImplementation(TRUE, __LINE__, ("ASSERT_DOUBLE_NOT_EQUAL(" #actual "," #expected "," #granularity ")"), __FILE__, "", FALSE); return; }}
#endif /* USE_DEPRECATED_CUNIT_NAMES */
#endif /* CUNIT_CUNIT_H_SEEN */
/** @} */
cunit-2.1-3-dfsg/CUnit/Headers/CUnit_intl.h 0000664 0000000 0000000 00000003253 12607012350 0020374 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2006 Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Internationalization support
*
* 05-May-2006 Initial implementation. (JDS)
*/
/** @file
* Internal CUnit header supporting internationalization of
* CUnit framework & interfaces.
*/
/** @addtogroup Framework
* @{
*/
#ifndef CUNIT_CUNIT_INTL_H_SEEN
#define CUNIT_CUNIT_INTL_H_SEEN
/* activate these when source preparation is complete
#include
#ifndef _
# define _(String) gettext (String)
#endif
#ifndef gettext_noop
# define gettext_noop(String) String
#endif
#ifndef N_
# define N_(String) gettext_noop (String)
#endif
*/
/* deactivate these when source preparation is complete */
#undef _
#define _(String) (String)
#undef N_
#define N_(String) String
#undef textdomain
#define textdomain(Domain)
#undef bindtextdomain
#define bindtextdomain(Package, Directory)
#endif /* CUNIT_CUNIT_INTL_H_SEEN */
/** @} */
cunit-2.1-3-dfsg/CUnit/Headers/Console.h 0000664 0000000 0000000 00000003350 12607012350 0017724 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Contains Interface for console Run tests.
*
* Aug 2001 Initial implementation. (AK)
*
* 09/Aug/2001 Single interface to Console_run_tests. (AK)
*
* 20-Jul-2004 New interface, doxygen comments. (JDS)
*/
/** @file
* Console interface with interactive output (user interface).
*/
/** @addtogroup Console
* @{
*/
#ifndef CUNIT_CONSOLE_H_SEEN
#define CUNIT_CONSOLE_H_SEEN
#include "CUnit.h"
#include "TestDB.h"
#ifdef __cplusplus
extern "C" {
#endif
CU_EXPORT void CU_console_run_tests(void);
/**< Run registered CUnit tests using the console interface. */
#ifdef USE_DEPRECATED_CUNIT_NAMES
/** Deprecated (version 1). @deprecated Use CU_console_run_tests(). */
#define console_run_tests() CU_console_run_tests()
#endif /* USE_DEPRECATED_CUNIT_NAMES */
#ifdef __cplusplus
}
#endif
#endif /* CUNIT_CONSOLE_H_SEEN */
/** @} */
cunit-2.1-3-dfsg/CUnit/Headers/Jamfile 0000664 0000000 0000000 00000002262 12607012350 0017444 0 ustar 00root root 0000000 0000000 #
# Jamfile to build CUnit - Source Headers Directory
# (see http://www.freetype.org/jam/index.html)
#
# Copyright (C) 2004-2006 Jerry St.Clair
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#---------------------------------------------------------------------------
SubDir TOP CUnit Headers ;
CU_HEADERS =
Automated.h
Basic.h
Console.h
CUError.h
CUnit.h
CUCurses.h
MyMem.h
TestDB.h
TestRun.h
Util.h
Win.h
;
if $(INSTALL_DOC_DIR)
{
InstallCUnitFile $(INSTALL_INC_DIR) : $(CU_HEADERS) ;
}
cunit-2.1-3-dfsg/CUnit/Headers/Makefile.am 0000664 0000000 0000000 00000001463 12607012350 0020210 0 ustar 00root root 0000000 0000000 ## Process this file with automake to produce Makefile.in
CUnitIncludedir=${includedir}/CUnit
AUTOMATED_INCLUDES = Automated.h
BASIC_INCLUDES = Basic.h
CONSOLE_INCLUDES = Console.h
CURSES_INCLUDES = CUCurses.h
FRAMEWORK_INCLUDES = CUError.h CUnit.h CUnit_intl.h MyMem.h TestDB.h TestRun.h Util.h
# Default configuration without enabling anything
INCLUDE_FILES = ${FRAMEWORK_INCLUDES}
if ENABLE_BASIC
BASIC_INCLUDE_FILES = $(BASIC_INCLUDES)
endif
if ENABLE_CONSOLE
CONSOLE_INCLUDE_FILES = $(CONSOLE_INCLUDES)
endif
if ENABLE_AUTOMATED
AUTOMATED_INCLUDE_FILES = $(AUTOMATED_INCLUDES)
endif
if ENABLE_CURSES
CURSES_INCLUDE_FILES = $(CURSES_INCLUDES)
endif
INCLUDE_FILES += $(BASIC_INCLUDE_FILES) $(CONSOLE_INCLUDE_FILES) $(AUTOMATED_INCLUDE_FILES) $(CURSES_INCLUDE_FILES)
CUnitInclude_HEADERS = ${INCLUDE_FILES}
cunit-2.1-3-dfsg/CUnit/Headers/Makefile.in 0000664 0000000 0000000 00000042327 12607012350 0020225 0 ustar 00root root 0000000 0000000 # Makefile.in generated by automake 1.14 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = CUnit/Headers
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/mkinstalldirs $(srcdir)/CUnit.h.in \
$(am__CUnitInclude_HEADERS_DIST)
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES = CUnit.h
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
SOURCES =
DIST_SOURCES =
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__CUnitInclude_HEADERS_DIST = CUError.h CUnit.h CUnit_intl.h MyMem.h \
TestDB.h TestRun.h Util.h Basic.h Console.h Automated.h \
CUCurses.h
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
am__installdirs = "$(DESTDIR)$(CUnitIncludedir)"
HEADERS = $(CUnitInclude_HEADERS)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_AUTOMATED = @BUILD_AUTOMATED@
BUILD_BASIC = @BUILD_BASIC@
BUILD_CONSOLE = @BUILD_CONSOLE@
BUILD_CURSES = @BUILD_CURSES@
BUILD_EXAMPLES = @BUILD_EXAMPLES@
BUILD_TEST = @BUILD_TEST@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CURSES_LIB = @CURSES_LIB@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_DEBUG = @ENABLE_DEBUG@
ENABLE_DEPRECATED = @ENABLE_DEPRECATED@
ENABLE_MEMTRACE = @ENABLE_MEMTRACE@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBTOOL_AGE = @LIBTOOL_AGE@
LIBTOOL_CURRENT = @LIBTOOL_CURRENT@
LIBTOOL_REVISION = @LIBTOOL_REVISION@
LIBTOOL_SUFFIX = @LIBTOOL_SUFFIX@
LIBTOOL_SUFFIX1 = @LIBTOOL_SUFFIX1@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
RELEASE = @RELEASE@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
VERSION_MAJOR = @VERSION_MAJOR@
VERSION_MINOR = @VERSION_MINOR@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
CUnitIncludedir = ${includedir}/CUnit
AUTOMATED_INCLUDES = Automated.h
BASIC_INCLUDES = Basic.h
CONSOLE_INCLUDES = Console.h
CURSES_INCLUDES = CUCurses.h
FRAMEWORK_INCLUDES = CUError.h CUnit.h CUnit_intl.h MyMem.h TestDB.h TestRun.h Util.h
# Default configuration without enabling anything
INCLUDE_FILES = ${FRAMEWORK_INCLUDES} $(BASIC_INCLUDE_FILES) \
$(CONSOLE_INCLUDE_FILES) $(AUTOMATED_INCLUDE_FILES) \
$(CURSES_INCLUDE_FILES)
@ENABLE_BASIC_TRUE@BASIC_INCLUDE_FILES = $(BASIC_INCLUDES)
@ENABLE_CONSOLE_TRUE@CONSOLE_INCLUDE_FILES = $(CONSOLE_INCLUDES)
@ENABLE_AUTOMATED_TRUE@AUTOMATED_INCLUDE_FILES = $(AUTOMATED_INCLUDES)
@ENABLE_CURSES_TRUE@CURSES_INCLUDE_FILES = $(CURSES_INCLUDES)
CUnitInclude_HEADERS = ${INCLUDE_FILES}
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu CUnit/Headers/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu CUnit/Headers/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
CUnit.h: $(top_builddir)/config.status $(srcdir)/CUnit.h.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-CUnitIncludeHEADERS: $(CUnitInclude_HEADERS)
@$(NORMAL_INSTALL)
@list='$(CUnitInclude_HEADERS)'; test -n "$(CUnitIncludedir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(CUnitIncludedir)'"; \
$(MKDIR_P) "$(DESTDIR)$(CUnitIncludedir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(CUnitIncludedir)'"; \
$(INSTALL_HEADER) $$files "$(DESTDIR)$(CUnitIncludedir)" || exit $$?; \
done
uninstall-CUnitIncludeHEADERS:
@$(NORMAL_UNINSTALL)
@list='$(CUnitInclude_HEADERS)'; test -n "$(CUnitIncludedir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(CUnitIncludedir)'; $(am__uninstall_files_from_dir)
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-am
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-am
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(HEADERS)
installdirs:
for dir in "$(DESTDIR)$(CUnitIncludedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-CUnitIncludeHEADERS
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-CUnitIncludeHEADERS
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
clean-libtool cscopelist-am ctags ctags-am distclean \
distclean-generic distclean-libtool distclean-tags distdir dvi \
dvi-am html html-am info info-am install \
install-CUnitIncludeHEADERS install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic \
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
uninstall-CUnitIncludeHEADERS uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
cunit-2.1-3-dfsg/CUnit/Headers/MyMem.h 0000664 0000000 0000000 00000007767 12607012350 0017366 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Contains Memory Related Defines to use internal routines to detect Memory Leak
* in Debug Versions
*
* 18/Jun/2002 Memory Debug Functions. (AK)
*
* 17-Jul-2004 New interface for global function names. (JDS)
*
* 05-Sep-2004 Added internal test interface. (JDS)
*/
/** @file
* Memory management functions (user interface).
* Two versions of memory allocation/deallocation are available.
* If compiled with MEMTRACE defined, CUnit keeps track of all
* system allocations & deallocations. The memory record can
* then be reported using CU_CREATE_MEMORY_REPORT. Otherwise,
* standard system memory allocation is used without tracing.
*/
/** @addtogroup Framework
* @{
*/
#ifndef CUNIT_MYMEM_H_SEEN
#define CUNIT_MYMEM_H_SEEN
#ifdef __cplusplus
extern "C" {
#endif
#ifdef MEMTRACE
void* CU_calloc(size_t nmemb, size_t size, unsigned int uiLine, const char* szFileName);
void* CU_malloc(size_t size, unsigned int uiLine, const char* szFileName);
void CU_free(void *ptr, unsigned int uiLine, const char* szFileName);
void* CU_realloc(void *ptr, size_t size, unsigned int uiLine, const char* szFileName);
CU_EXPORT void CU_dump_memory_usage(const char*);
/** c-allocate with memory tracking. */
#define CU_CALLOC(x, y) CU_calloc((x), (y), __LINE__, __FILE__)
/** m-allocate with memory tracking. */
#define CU_MALLOC(x) CU_malloc((x), __LINE__, __FILE__)
/** Free with memory tracking. */
#define CU_FREE(x) CU_free((x), __LINE__, __FILE__)
/** Reallocate with memory tracking. */
#define CU_REALLOC(x, y) CU_realloc((x), (y), __LINE__, __FILE__)
/** Generate report on tracked memory. */
#define CU_CREATE_MEMORY_REPORT(x) CU_dump_memory_usage((x))
/** Generate report on tracked memory (old macro). */
#define CU_DUMP_MEMORY_USAGE(x) CU_dump_memory_usage((x))
#else /* MEMTRACE */
/** Standard calloc() if MEMTRACE not defined. */
#define CU_CALLOC(x, y) calloc((x), (y))
/** Standard malloc() if MEMTRACE not defined. */
#define CU_MALLOC(x) malloc((x))
/** Standard free() if MEMTRACE not defined. */
#define CU_FREE(x) free((x))
/** Standard realloc() if MEMTRACE not defined. */
#define CU_REALLOC(x, y) realloc((x), (y))
/** No-op if MEMTRACE not defined. */
#define CU_CREATE_MEMORY_REPORT(x)
/** No-op if MEMTRACE not defined. */
#define CU_DUMP_MEMORY_USAGE(x)
#endif /* MEMTRACE */
#ifdef CUNIT_BUILD_TESTS
/** Disable memory allocation for testing purposes. */
void test_cunit_deactivate_malloc(void);
/** Enable memory allocation for testing purposes. */
void test_cunit_activate_malloc(void);
/** Retrieve number of memory events for a given pointer */
unsigned int test_cunit_get_n_memevents(void* pLocation);
/** Retrieve number of allocations for a given pointer */
unsigned int test_cunit_get_n_allocations(void* pLocation);
/** Retrieve number of deallocations for a given pointer */
unsigned int test_cunit_get_n_deallocations(void* pLocation);
void test_cunit_MyMem(void);
#endif /* CUNIT_BUILD_TESTS */
#ifdef __cplusplus
}
#endif
#endif /* CUNIT_MYMEM_H_SEEN */
/** @} */
cunit-2.1-3-dfsg/CUnit/Headers/TestDB.h 0000664 0000000 0000000 00000122734 12607012350 0017457 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Contains all the Type Definitions and functions declarations
* for the CUnit test database maintenance.
*
* Aug 2001 Initial implementation. (AK)
*
* 09/Aug/2001 Added Preprocessor conditionals for the file. (AK)
*
* 24/aug/2001 Made the linked list from SLL to DLL(doubly linked list). (AK)
*
* 31-Aug-2004 Restructured to eliminate global variables error_number,
* g_pTestRegistry; new interface, support for deprecated
* version 1 interface, moved error handling code to
* CUError.[ch], moved test run counts and _TestResult out
* of TestRegistry to TestRun.h. (JDS)
*
* 01-Sep-2004 Added jmp_buf to CU_Test. (JDS)
*
* 05-Sep-2004 Added internal test interface. (JDS)
*
* 15-Apr-2006 Removed constraint that suites/tests be uniquely named.
* Added ability to turn individual tests/suites on or off.
* Moved doxygen comments for public API here to header. (JDS)
*
* 16-Avr-2007 Added setup and teardown functions. (CJN)
*
*/
/** @file
* Management functions for tests, suites, and the test registry.
* Unit testing in CUnit follows the common structure of unit
* tests aggregated in suites, which are themselves aggregated
* in a test registry. This module provides functions and
* typedef's to support the creation, registration, and manipulation
* of test cases, suites, and the registry.
*/
/** @addtogroup Framework
* @{
*/
#ifndef CUNIT_TESTDB_H_SEEN
#define CUNIT_TESTDB_H_SEEN
#include /* jmp_buf */
#include "CUnit.h"
#include "CUError.h"
#ifdef __cplusplus
extern "C" {
#endif
/*=================================================================
* Typedefs and Data Structures
*=================================================================*/
typedef int (*CU_InitializeFunc)(void); /**< Signature for suite initialization function. */
typedef int (*CU_CleanupFunc)(void); /**< Signature for suite cleanup function. */
typedef void (*CU_TestFunc)(void); /**< Signature for a testing function in a test case. */
typedef void (*CU_SetUpFunc)(void); /**< Signature for a test SetUp function. */
typedef void (*CU_TearDownFunc)(void); /**< Signature for a test TearDown function. */
/*-----------------------------------------------------------------
* CU_Test, CU_pTest
*-----------------------------------------------------------------*/
/** CUnit test case data type.
* CU_Test is a double linked list of unit tests. Each test has
* a name, a callable test function, and a flag for whether the
* test is active and thus executed during a test run. A test
* also holds links to the next and previous tests in the list,
* as well as a jmp_buf reference for use in implementing fatal
* assertions.
*
* Generally, the linked list includes tests which are associated
* with each other in a CU_Suite. As a result, tests are run in
* the order in which they are added to a suite (see CU_add_test()).
*
*
* It is recommended that the name of each CU_Test in a suite have
* a unique name. Otherwise, only the first-registered test having
* a given name will be accessible by that name. There are no
* restrictions on the test function. This means that the same
* function could, in principle, be called more than once from
* different tests.
*
* @see CU_Suite
* @see CU_TestRegistry
*/
typedef struct CU_Test
{
char* pName; /**< Test name. */
CU_BOOL fActive; /**< Flag for whether test is executed during a run. */
CU_TestFunc pTestFunc; /**< Pointer to the test function. */
jmp_buf* pJumpBuf; /**< Jump buffer for setjmp/longjmp test abort mechanism. */
struct CU_Test* pNext; /**< Pointer to the next test in linked list. */
struct CU_Test* pPrev; /**< Pointer to the previous test in linked list. */
} CU_Test;
typedef CU_Test* CU_pTest; /**< Pointer to a CUnit test case. */
/*-----------------------------------------------------------------
* CU_Suite, CU_pSuite
*-----------------------------------------------------------------*/
/** CUnit suite data type.
* CU_Suite is a linked list of CU_Test containers. Each suite has
* a name, a count of registered unit tests, and a flag for whether
* the suite is active during test runs. It also holds pointers to
* optional initialization and cleanup functions. If non-NULL, these
* are called before and after running the suite's tests, respectively.
* In addition, the suite holds a pointer to the head of the linked
* list of associated CU_Test objects. Finally, pointers to the next
* and previous suites in the linked list are maintained.
*
* Generally, the linked list includes suites which are associated with
* each other in a CU_TestRegistry. As a result, suites are run in the
* order in which they are registered (see CU_add_suite()).
*
* It is recommended that name of each CU_Suite in a test registry have
* a unique name. Otherwise, only the first-registered suite having a
* given name will be accessible by name. There are no restrictions on
* the contained tests. This means that the same CU_Test could, in
* principle, be run more than once fron different suites.
*
* @see CU_Test
* @see CU_TestRegistry
*/
typedef struct CU_Suite
{
char* pName; /**< Suite name. */
CU_BOOL fActive; /**< Flag for whether suite is executed during a run. */
CU_pTest pTest; /**< Pointer to the 1st test in the suite. */
CU_InitializeFunc pInitializeFunc; /**< Pointer to the suite initialization function. */
CU_CleanupFunc pCleanupFunc; /**< Pointer to the suite cleanup function. */
CU_SetUpFunc pSetUpFunc; /**< Pointer to the test SetUp function. */
CU_TearDownFunc pTearDownFunc; /**< Pointer to the test TearDown function. */
unsigned int uiNumberOfTests; /**< Number of tests in the suite. */
struct CU_Suite* pNext; /**< Pointer to the next suite in linked list. */
struct CU_Suite* pPrev; /**< Pointer to the previous suite in linked list. */
unsigned int uiNumberOfTestsFailed; /**< Number of failed tests in the suite. */
unsigned int uiNumberOfTestsSuccess; /**< Number of success tests in the suite. */
} CU_Suite;
typedef CU_Suite* CU_pSuite; /**< Pointer to a CUnit suite. */
/*-----------------------------------------------------------------
* CU_TestRegistry, CU_pTestRegistry
*-----------------------------------------------------------------*/
/** CUnit test registry data type.
* CU_TestRegisty is the repository for suites containing unit tests.
* The test registry maintains a count of the number of CU_Suite
* objects contained in the registry, as well as a count of the total
* number of CU_Test objects associated with those suites. It also
* holds a pointer to the head of the linked list of CU_Suite objects.
*
*
* With this structure, the user will normally add suites implictly to
* the internal test registry using CU_add_suite(), and then add tests
* to each suite using CU_add_test(). Test runs are then initiated
* using one of the appropriate functions in TestRun.c via one of the
* user interfaces.
*
* Automatic creation and destruction of the internal registry and its
* objects is available using CU_initialize_registry() and
* CU_cleanup_registry(), respectively. For internal and testing
* purposes, the internal registry can be retrieved and assigned.
* Functions are also provided for creating and destroying independent
* registries.
*
* Note that earlier versions of CUnit also contained a pointer to a
* linked list of CU_FailureRecord objects (termed _TestResults).
* This has been removed from theregistry and relocated to TestRun.c.
*
* @see CU_Test
* @see CU_Suite
* @see CU_initialize_registry()
* @see CU_cleanup_registry()
* @see CU_get_registry()
* @see CU_set_registry()
* @see CU_create_new_registry()
* @see CU_destroy_existing_registry()
*/
typedef struct CU_TestRegistry
{
#ifdef USE_DEPRECATED_CUNIT_NAMES
/** Union to support v1.1-1 member name. */
union {
unsigned int uiNumberOfSuites; /**< Number of suites in the test registry. */
unsigned int uiNumberOfGroups; /**< Deprecated (version 1). @deprecated Use uiNumberOfSuites. */
};
unsigned int uiNumberOfTests; /**< Number of tests in the test registry. */
/** Union to support v1.1-1 member name. */
union {
CU_pSuite pSuite; /**< Pointer to the 1st suite in the test registry. */
CU_pSuite pGroup; /**< Deprecated (version 1). @deprecated Use pSuite. */
};
#else
unsigned int uiNumberOfSuites; /**< Number of registered suites in the registry. */
unsigned int uiNumberOfTests; /**< Total number of registered tests in the registry. */
CU_pSuite pSuite; /**< Pointer to the 1st suite in the test registry. */
#endif
} CU_TestRegistry;
typedef CU_TestRegistry* CU_pTestRegistry; /**< Pointer to a CUnit test registry. */
/*=================================================================
* Public interface functions
*=================================================================*/
CU_EXPORT
CU_ErrorCode CU_initialize_registry(void);
/**<
* Initializes the framework test registry.
* Any existing registry is freed, including all stored suites
* and associated tests. It is not necessary to explicitly call
* CU_cleanup_registry() before reinitializing the framework.
* The most recent stored test results are also cleared.
*
* This function must not be called during a test run (checked
* by assertion)
*
* @return CUE_NOMEMORY if memory for the new registry cannot
* be allocated, CUE_SUCCESS otherwise.
* @see CU_cleanup_registry
* @see CU_get_registry
* @see CU_set_registry
* @see CU_registry_initialized
*/
CU_EXPORT
void CU_cleanup_registry(void);
/**<
* Clears the test registry.
* The active test registry is freed, including all stored suites
* and associated tests. The most recent stored test results are
* also cleared. After calling this function, CUnit suites cannot
* be added until CU_initialize_registry() or CU_set_registry() is
* called. Further, any pointers to suites or test cases held by
* the user will be invalidated by calling this function.
*
* This function may be called multiple times without generating
* an error condition. However, this function must not be
* called during a test run (checked by assertion)
.
*
* @see CU_initialize_registry
* @see CU_get_registry
* @see CU_set_registry
*/
CU_EXPORT CU_BOOL CU_registry_initialized(void);
/**<
* Checks whether the test registry has been initialized.
*
* @return CU_TRUE if the registry has been initialized,
* CU_FALSE otherwise.
* @see CU_initialize_registry
* @see CU_cleanup_registry
*/
CU_EXPORT
CU_pSuite CU_add_suite(const char *strName,
CU_InitializeFunc pInit,
CU_CleanupFunc pClean);
/**<
* Creates a new test suite and adds it to the test registry.
* This function creates a new test suite having the specified
* name and initialization/cleanup functions and adds it to the
* test registry. The new suite will be active and able to be
* executed during a test run. The test registry must be
* initialized before calling this function (checked by assertion).
* pInit and pClean may be NULL, in which case no corresponding
* initialization of cleanup function will be called when the suite
* is run. strName may be empty ("") but may not be NULL.
*
* The return value is a pointer to the newly-created suite, or
* NULL if there was a problem with the suite creation or addition.
* An error code is also set for the framework. Note that if the
* name specified for the new suite is a duplicate, the suite will
* be created and added but the error code will be set to CUE_DUP_SUITE.
* The duplicate suite will not be accessible by name.
*
* NOTE - the CU_pSuite pointer returned should NOT BE FREED BY
* THE USER. The suite is freed by the CUnit system when
* CU_cleanup_registry() is called. This function must not
* be called during a test run (checked by assertion).
*
* CU_add_suite() sets the following error codes:
* - CUE_SUCCESS if no errors occurred.
* - CUE_NOREGISTRY if the registry has not been initialized.
* - CUE_NO_SUITENAME if strName is NULL.
* - CUE_DUP_SUITE if a suite having strName is already registered.
* - CUE_NOMEMORY if a memory allocation failed.
*
* @param strName Name for the new test suite (non-NULL).
* @param pInit Initialization function to call before running suite.
* @param pClean Cleanup function to call after running suite.
* @return A pointer to the newly-created suite (NULL if creation failed)
*/
CU_EXPORT
CU_pSuite CU_add_suite_with_setup_and_teardown(const char *strName,
CU_InitializeFunc pInit,
CU_CleanupFunc pClean,
CU_SetUpFunc pSetup,
CU_TearDownFunc pTear);
/**<
* The same as CU_add_suite but also adds setup and tear down callbacks for
* each test in this suite.
*
* @param pSetup SetUp function to call before running each test.
* @param pTear TearDown function to call after running each test.
*/
CU_EXPORT
CU_ErrorCode CU_set_suite_active(CU_pSuite pSuite, CU_BOOL fNewActive);
/**<
* Activates or deactivates a suite.
* Only activated suites can be executed during a test run.
* By default a suite is active upon creation, but can be deactivated
* by passing it along with CU_FALSE to this function. The suite
* can be reactivated by passing it along with CU_TRUE. The current
* value of the active flag is available as pSuite->fActive. If pSuite
* is NULL then error code CUE_NOSUITE is returned.
*
* @param pSuite Pointer to the suite to modify (non-NULL).
* @param fNewActive If CU_TRUE then the suite will be activated;
* if CU_FALSE it will be deactivated.
* @return Returns CUE_NOSUITE if pSuite is NULL, CUE_SUCCESS if all is well.
*/
CU_EXPORT
CU_ErrorCode CU_set_suite_name(CU_pSuite pSuite, const char *strNewName);
/**<
* Modifies the name of a suite.
* This function allows the name associated with a suite to
* be changed. It is not recommended that a suite name be changed,
* nor should it be necessary under most circumstances. However,
* this function is provided for those clients who need to change
* a suite's name. The current value of the suite's name
* is available as pSuite->pName. CUE_SUCCESS is returned if the
* function succeeds in changing the name. CUE_NOSUITE is returned if
* pSuite is NULL, and CUE_NO_SUITENAME if strNewName is NULL.
*
* @param pSuite Pointer to the suite to modify (non-NULL).
* @param strNewName Pointer to string containing new suite name (non-NULL).
* @return Returns CUE_NOSUITE if pSuite is NULL, CUE_NO_SUITENAME if
* strNewName is NULL, and CUE_SUCCESS if all is well.
*/
CU_EXPORT
CU_ErrorCode CU_set_suite_initfunc(CU_pSuite pSuite, CU_InitializeFunc pNewInit);
/**<
* Modifies the initialization function of a suite.
* This function allows the initialization function associated with
* a suite to be changed. This is neither recommended nor should it
* be necessary under most circumstances. However, this function is
* provided for those clients who need to change the function. The
* current value of the function is available as pSuite->pInitializeFunc.
* CUE_SUCCESS is returned if the function succeeds, or CUE_NOSUITE if
* pSuite is NULL. pNewInit may be NULL, which indicates the suite has
* no initialization function.
*
* @param pSuite Pointer to the suite to modify (non-NULL).
* @param pNewInit Pointer to function to use to initialize suite.
* @return Returns CUE_NOSUITE if pSuite is NULL, and CUE_SUCCESS if
* all is well.
*/
CU_EXPORT
CU_ErrorCode CU_set_suite_cleanupfunc(CU_pSuite pSuite, CU_CleanupFunc pNewClean);
/**<
* Modifies the cleanup function of a suite.
* This function allows the cleanup function associated with a suite to
* be changed. This is neither recommended nor should it be necessary
* under most circumstances. However, this function is provided for those
* clients who need to change the function. The current value of the
* function is available as pSuite->pCleanupFunc. CUE_SUCCESS is returned
* if the function succeeds, or CUE_NOSUITE if pSuite is NULL. pNewClean
* may be NULL, which indicates the suite has no cleanup function.
*
* @param pSuite Pointer to the suite to modify (non-NULL).
* @param pNewClean Pointer to function to use to clean up suite.
* @return Returns CUE_NOSUITE if pSuite is NULL, and CUE_SUCCESS if
* all is well.
*/
CU_EXPORT
CU_pSuite CU_get_suite(const char* strName);
/**<
* Retrieves the suite having the specified name.
* Searches the active test registry and returns a pointer to the 1st
* suite found. NULL is returned if no suite having the specified name
* is found. In addition, the framework error state is set to CUE_NOREGISTRY
* if the registry is not initialized or to CUE_NO_SUITENAME if strName is NULL.
* If the return value is NULL and framework error state is CUE_SUCCESS, then
* the search simply failed to find the specified name.
* Use CU_get_suite_at_pos() to retrieve a suite by position rather than name.
*
* @param strName The name of the suite to search for (non-NULL).
* @return Returns a pointer to the suite, or NULL if not found or an error occurred.
* @see CU_get_suite_at_pos()
*/
CU_EXPORT
CU_pSuite CU_get_suite_at_pos(unsigned int pos);
/**<
* Retrieves the suite at the specified position.
* Iterates the active test registry and returns a pointer to the suite at
* position pos. pos is a 1-based index having valid values
* [1 .. CU_get_registry()->uiNumberOfSuites] and corresponds to the order in
* which suites were registered. If pos is invalid or an error occurs, 0 is
* returned. In addition, the framework error state is set to CUE_NOREGISTRY if
* the registry is not initialized, or CUE_SUCCESS if pos was invalid. Use
* CU_get_suite() to retrieve a suite by name rather than position.
*
* @param pos The 1-based position of the suite to fetch.
* @return Returns a pointer to the suite, or 0 if not found or an error occurred.
* @see CU_get_suite()
*/
CU_EXPORT
unsigned int CU_get_suite_pos(CU_pSuite pSuite);
/**<
* Looks up the position of the specified suite.
* The position is a 1-based index of suites in the active test registry which
* corresponds to the order in which suites were registered. If pSuite is not
* found or an error occurs, 0 is returned. In addition, the framework error
* state is set to CUE_NOREGISTRY if the registry is not initialized, or
* CUE_NOSUITE if pSuite is NULL. The returned position may be used to retrieve
* the suite using CU_get_suite_by_pos().
*
* @param pSuite Pointer to the suite to find (non-NULL).
* @return Returns the 1-based position of pSuite in the registry, or NULL if
* not found or an error occurred.
* @see CU_get_suite_by_pos()
* @see CU_get_suite_pos_by_name()
*/
CU_EXPORT
unsigned int CU_get_suite_pos_by_name(const char* strName);
/**<
* Looks up the position of the suite having the specified name.
* The position is a 1-based index of suites in the active test registry which
* corresponds to the order in which suites were registered. If no suite has the
* specified name or an error occurs, 0 is returned. In addition, the framework error
* state is set to CUE_NOREGISTRY if the registry is not initialized, or
* CUE_NO_SUITENAME if strName is NULL. The search ends at the 1st suite found having
* name strName. The returned position may be used to retrieve the suite using
* CU_get_suite_by_pos().
*
* @param strName Name of the suite to find (non-NULL).
* @return Returns the 1-based position of pSuite in the registry, or NULL if
* not found or an error occurred.
* @see CU_get_suite_by_pos()
* @see CU_get_suite_pos_by_name()
*/
CU_EXPORT
CU_pTest CU_add_test(CU_pSuite pSuite, const char* strName, CU_TestFunc pTestFunc);
/**<
* This function creates a new test having the specified name
* and function, and adds it to the specified suite. The new test
* is active and able to be executed during a test run. At present,
* there is no mechanism for creating a test case independent of a
* suite. Neither pSuite, strName, nor pTestFunc may be NULL.
*
* The return value is a pointer to the newly-created test, or
* NULL if there was a problem with the test creation or addition.
* An error code is also set for the framework. Note that if the
* name specified for the new test is a duplicate within pSuite,
* the test will be created and added but the error code will be
* set to CUE_DUP_TEST. The duplicate test will not be accessible
* by name.
*
* NOTE - the CU_pTest pointer returned should NOT BE FREED BY
* THE USER. The test is freed by the CUnit system when
* CU_cleanup_registry() is called. This function must not
* be called during a test run (checked by assertion).
* CU_add_test() sets the following error codes:
* - CUE_SUCCESS if no errors occurred.
* - CUE_NOREGISTRY if the registry has not been initialized.
* - CUE_NOSUITE if pSuite is NULL.
* - CUE_NO_TESTNAME if strName is NULL.
* - CUE_NOTEST if pTestFunc is NULL.
* - CUE_DUP_TEST if a test having strName is already registered to pSuite.
* - CUE_NOMEMORY if a memory allocation failed.
*
* @param pSuite Test suite to which to add new test (non-NULL).
* @param strName Name for the new test case (non-NULL).
* @param pTest Function to call when running the test (non-NULL).
* @return A pointer to the newly-created test (NULL if creation failed)
*/
CU_EXPORT
CU_ErrorCode CU_set_test_active(CU_pTest pTest, CU_BOOL fNewActive);
/**<
* Activates or deactivates a specific test.
* Only activated tests can be executed during a test run.
* By default a test is active upon creation, but can be deactvated
* by passing it along with CU_FALSE to this function. The test
* can be reactivated by passing it along with CU_TRUE.
* The current value of the active flag is available as pTest->fActive.
* If pTest is NULL then error code CUE_NOTEST is returned. Otherwise
* CUE_SUCCESS is returned.
*
* @param pTest Pointer to the test to modify (non-NULL).
* @param fNewActive If CU_TRUE then test will be activated;
* if CU_FALSE it will be deactivated.
* @return Returns CUE_NOTEST if pTest is NULL, CUE_SUCCESS if all is well.
*/
CU_EXPORT
CU_ErrorCode CU_set_test_name(CU_pTest pTest, const char *strNewName);
/**<
* Modifies the name of a test.
* This function allows the name associated with a test to
* be changed. It is not recommended that a test name be changed,
* nor should it be necessary under most circumstances. However,
* this function is provided for those clients who need to change
* a test's name. The current value of the test's name is
* available as pTest->pName. CUE_SUCCESS is returned if the
* function succeeds in changing the name. CUE_NOTEST is returned if
* pTest is NULL, and CUE_NO_TESTNAME if strNewName is NULL.
*
* @param pTest Pointer to the test to modify (non-NULL).
* @param strNewName Pointer to string containing new test name (non-NULL).
* @return Returns CUE_NOTEST if pTest is NULL, CUE_NO_TESTNAME if
* strNewName is NULL, and CUE_SUCCESS if all is well.
*/
CU_EXPORT
CU_ErrorCode CU_set_test_func(CU_pTest pTest, CU_TestFunc pNewFunc);
/**<
* Modifies the test function of a test.
* This function allows the test function associated with a test to be
* changed. This is neither recommended nor should it be necessary under
* most circumstances. However, this function is provided for those
* clients who need to change the test function. The current value of
* the test function is available as pTest->pTestFunc. CUE_SUCCESS is
* returned if the function succeeds, or CUE_NOTEST if either pTest or
* pNewFunc is NULL.
*
* @param pTest Pointer to the test to modify (non-NULL).
* @param pNewFunc Pointer to function to use for test function (non-NULL).
* @return Returns CUE_NOTEST if pTest or pNewFunc is NULL, and CUE_SUCCESS
* if all is well.
*/
CU_EXPORT
CU_pTest CU_get_test(CU_pSuite pSuite, const char *strName);
/**<
* Retrieves the test having the specified name.
* Searches pSuite and returns a pointer to the 1st test found named strName.
* NULL is returned if no test having the specified name is found in pSuite.
* In addition, the framework error state is set as follows:
* - CUE_NOREGISTRY if the registry is not initialized
* - CUE_NOSUITE if pSuite is NULL
* - CUE_NO_TESTNAME if strName is NULL.
*
* If the return value is NULL and framework error state is CUE_SUCCESS, then
* the search simply failed to find the specified name. Use CU_get_test_at_pos()
* to retrieve a test by position rather than name.
*
* @param pSuite Pointer to the suite to search (non-NULL).
* @param strName The name of the test to search for (non-NULL).
* @return Returns a pointer to the test, or NULL if not found or an error occurred.
* @see CU_get_test_at_pos()
*/
CU_EXPORT
CU_pTest CU_get_test_at_pos(CU_pSuite pSuite, unsigned int pos);
/**<
* Retrieves the test at the specified position in pSuite.
* Iterates the tests registered in pSuite and returns a pointer to the
* test at position pos. pos is a 1-based index having valid values
* [1 .. pSuite->uiNumberOfTests] and corresponds to the order in
* which tests were added to pSuite. If pos is invalid or an error occurs, 0 is
* returned. In addition, the framework error state is set as follows:
* - CUE_NOREGISTRY if the registry is not initialized
* - CUE_NOSUITE if pSuite is NULL
* Use CU_get_test() to retrieve a test by name rather than position.
*
* @param pSuite Pointer to the suite to search (non-NULL).
* @param pos The 1-based position of the test to fetch.
* @return Returns a pointer to the test, or 0 if not found or an error occurred.
* @see CU_get_test()
*/
CU_EXPORT
unsigned int CU_get_test_pos(CU_pSuite pSuite, CU_pTest pTest);
/**<
* Looks up the position of the specified test in pSuite.
* The position is a 1-based index of tests in pSuite which corresponds to the
* order in which tests were added. If pTest is not found or an error occurs,
* 0 is returned. In addition, the framework error state is set as follows:
* - CUE_NOREGISTRY if the registry is not initialized
* - CUE_NOSUITE if pSuite is NULL
* - CUE_NOTEST if pTest is NULL
*
* The returned position may be used to retrieve the test using CU_get_test_by_pos().
*
* @param pSuite Pointer to the suite to search (non-NULL).
* @param pTest Pointer to the test to find (non-NULL).
* @return Returns the 1-based position of pTest in pSuite, or NULL if
* not found or an error occurred.
* @see CU_get_test_by_pos()
* @see CU_get_test_pos_by_name()
*/
CU_EXPORT
unsigned int CU_get_test_pos_by_name(CU_pSuite pSuite, const char *strName);
/**<
* Looks up the position of the test having the specified name in pSuite.
* The position is a 1-based index of tests in pSuite which corresponds to the order
* in which tests were added. If no test has the specified name or an error occurs,
* 0 is returned. In addition, the framework error state is set as follows:
* - CUE_NOREGISTRY if the registry is not initialized
* - CUE_NOSUITE if pSuite is NULL
* - CUE_NO_TESTNAME if strName is NULL
* The search ends at the 1st test found having name strName. The returned position
* may be used to retrieve the suite using CU_get_test_by_pos().
*
* @param pSuite Pointer to the suite to search (non-NULL).
* @param strName Name of the test to find (non-NULL).
* @return Returns the 1-based position of pTest in pSuite, or NULL if
* not found or an error occurred.
* @see CU_get_test_by_pos()
* @see CU_get_test_pos_by_name()
*/
#define CU_ADD_TEST(suite, test) (CU_add_test(suite, #test, (CU_TestFunc)test))
/**< Shortcut macro for adding a test to a suite. */
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
/* This section is based conceptually on code
* Copyright (C) 2004 Aurema Pty Ltd.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Derived from code contributed by K. Cheung and Aurema Pty Ltd. (thanks!)
* test_case_t, test_group_t, test_suite_t
*/
/**
* Test case parameters structure.
* This data type is provided to assist CUnit users manage collections of
* tests and suites. It is intended to be used to build arrays of test case
* parameters that can be then be referred to in a CU_suite_info_t variable.
*/
typedef struct CU_TestInfo {
const char *pName; /**< Test name. */
CU_TestFunc pTestFunc; /**< Test function. */
} CU_TestInfo;
typedef CU_TestInfo* CU_pTestInfo; /**< Pointer to CU_TestInfo type. */
/**
* Suite parameters.
* This data type is provided to assist CUnit users manage collections of
* tests and suites. It is intended to be used to build arrays of suite
* parameters that can be passed to a bulk registration function such as
* CU_register_suite() or CU_register_suites().
*/
typedef struct CU_SuiteInfo {
const char *pName; /**< Suite name. */
CU_InitializeFunc pInitFunc; /**< Suite initialization function. */
CU_CleanupFunc pCleanupFunc; /**< Suite cleanup function */
CU_SetUpFunc pSetUpFunc; /**< Pointer to the test SetUp function. */
CU_TearDownFunc pTearDownFunc; /**< Pointer to the test TearDown function. */
CU_TestInfo *pTests; /**< Test case array - must be NULL terminated. */
} CU_SuiteInfo;
typedef CU_SuiteInfo* CU_pSuiteInfo; /**< Pointer to CU_SuiteInfo type. */
#define CU_TEST_INFO_NULL { NULL, NULL }
/**< NULL CU_test_info_t to terminate arrays of tests. */
#define CU_SUITE_INFO_NULL { NULL, NULL, NULL, NULL, NULL, NULL }
/**< NULL CU_suite_info_t to terminate arrays of suites. */
CU_EXPORT CU_ErrorCode CU_register_suites(CU_SuiteInfo suite_info[]);
/**<
* Registers the suites in a single CU_SuiteInfo array.
* Multiple arrays can be registered using CU_register_nsuites().
*
* @param suite_info NULL-terminated array of CU_SuiteInfo items to register.
* @return A CU_ErrorCode indicating the error status.
* @see CU_register_suites()
*/
CU_EXPORT CU_ErrorCode CU_register_nsuites(int suite_count, ...);
/**<
* Registers multiple suite arrays in CU_SuiteInfo format.
* The function accepts a variable number of suite arrays to be registered.
* The number of arrays is indicated by the value of the 1st argument,
* suite_count. Each suite in each array is registered with the CUnit test
* registry, along with all of the associated tests.
*
* @param suite_count The number of CU_SuiteInfo* arguments to follow.
* @param ... suite_count number of CU_SuiteInfo* arguments. NULLs are ignored.
* @return A CU_ErrorCode indicating the error status.
* @see CU_register_suites()
*/
#ifdef USE_DEPRECATED_CUNIT_NAMES
typedef CU_TestInfo test_case_t; /**< Deprecated (version 1). @deprecated Use CU_TestInfo. */
typedef CU_SuiteInfo test_group_t; /**< Deprecated (version 1). @deprecated Use CU_SuiteInfo. */
/** Deprecated (version 1). @deprecated Use CU_SuiteInfo and CU_TestInfo. */
typedef struct test_suite {
char *name; /**< Suite name. Currently not used. */
test_group_t *groups; /**< Test groups. This must be a NULL terminated array. */
} test_suite_t;
/** Deprecated (version 1). @deprecated Use CU_TEST_INFO_NULL. */
#define TEST_CASE_NULL { NULL, NULL }
/** Deprecated (version 1). @deprecated Use CU_TEST_GROUP_NULL. */
#define TEST_GROUP_NULL { NULL, NULL, NULL, NULL }
/** Deprecated (version 1). @deprecated Use CU_register_suites(). */
#define test_group_register(tg) CU_register_suites(tg)
/** Deprecated (version 1). @deprecated Use CU_SuiteInfo and CU_register_suites(). */
CU_EXPORT int test_suite_register(test_suite_t *ts)
{
test_group_t *tg;
int error;
for (tg = ts->groups; tg->pName; tg++)
if ((error = CU_register_suites(tg)) != CUE_SUCCESS)
return error;
return CUE_SUCCESS;
}
#endif /* USE_DEPRECATED_CUNIT_NAMES */
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
#ifdef USE_DEPRECATED_CUNIT_NAMES
typedef CU_InitializeFunc InitializeFunc; /**< Deprecated (version 1). @deprecated Use CU_InitializeFunc. */
typedef CU_CleanupFunc CleanupFunc; /**< Deprecated (version 1). @deprecated Use CU_CleanupFunc. */
typedef CU_TestFunc TestFunc; /**< Deprecated (version 1). @deprecated Use CU_TestFunc. */
typedef CU_Test _TestCase; /**< Deprecated (version 1). @deprecated Use CU_Test. */
typedef CU_pTest PTestCase; /**< Deprecated (version 1). @deprecated Use CU_pTest. */
typedef CU_Suite _TestGroup; /**< Deprecated (version 1). @deprecated Use CU_Suite. */
typedef CU_pSuite PTestGroup; /**< Deprecated (version 1). @deprecated Use CU_pSuite. */
typedef CU_TestRegistry _TestRegistry; /**< Deprecated (version 1). @deprecated Use CU_TestRegistry. */
typedef CU_pTestRegistry PTestRegistry; /**< Deprecated (version 1). @deprecated Use CU_pTestRegistry. */
/* Public interface functions */
/** Deprecated (version 1). @deprecated Use CU_initialize_registry(). */
#define initialize_registry() CU_initialize_registry()
/** Deprecated (version 1). @deprecated Use CU_cleanup_registry(). */
#define cleanup_registry() CU_cleanup_registry()
/** Deprecated (version 1). @deprecated Use CU_add_suite(). */
#define add_test_group(name, init, clean) CU_add_suite(name, init, clean)
/** Deprecated (version 1). @deprecated Use CU_add_test(). */
#define add_test_case(group, name, test) CU_add_test(group, name, test)
/* private internal CUnit testing functions */
/** Deprecated (version 1). @deprecated Use CU_get_registry(). */
#define get_registry() CU_get_registry()
/** Deprecated (version 1). @deprecated Use CU_set_registry(). */
#define set_registry(reg) CU_set_registry((reg))
/** Deprecated (version 1). @deprecated Use CU_get_suite_by_name(). */
#define get_group_by_name(group, reg) CU_get_suite_by_name(group, reg)
/** Deprecated (version 1). @deprecated Use CU_get_test_by_name(). */
#define get_test_by_name(test, group) CU_get_test_by_name(test, group)
/** Deprecated (version 1). @deprecated Use ADD_TEST_TO_SUITE. */
#define ADD_TEST_TO_GROUP(group, test) (CU_add_test(group, #test, (CU_TestFunc)test))
#endif /* USE_DEPRECATED_CUNIT_NAMES */
/*=================================================================
* Internal CUnit system functions.
* Should not be routinely called by users.
*=================================================================*/
CU_EXPORT CU_pTestRegistry CU_get_registry(void);
/**<
* Retrieves a pointer to the current test registry.
* Returns NULL if the registry has not been initialized using
* CU_initialize_registry(). Directly accessing the registry
* should not be necessary for most users. This function is
* provided primarily for internal and testing purposes.
*
* @return A pointer to the current registry (NULL if uninitialized).
* @see CU_initialize_registry
* @see CU_set_registry
*/
CU_EXPORT CU_pTestRegistry CU_set_registry(CU_pTestRegistry pTestRegistry);
/**<
* Sets the registry to an existing CU_pTestRegistry instance.
* A pointer to the original registry is returned. Note that the
* original registry is not freed, and it becomes the caller's
* responsibility to do so. Directly accessing the registry
* should not be necessary for most users. This function is
* provided primarily for internal and testing purposes.
*
* This function must not be called during a test run (checked
* by assertion).
*
* @return A pointer to the original registry that was replaced.
* @see CU_initialize_registry
* @see CU_cleanup_registry
* @see CU_get_registry
*/
CU_EXPORT CU_pTestRegistry CU_create_new_registry(void);
/**<
* Creates and initializes a new test registry.
* Returns a pointer to a new, initialized registry (NULL if memory could
* not be allocated). It is the caller's responsibility to destroy and free
* the new registry (unless it is made the active test registry using
* CU_set_registry()).
*/
CU_EXPORT
void CU_destroy_existing_registry(CU_pTestRegistry* ppRegistry);
/**<
* Destroys and frees all memory for an existing test registry.
* The active test registry is destroyed by the CUnit system in
* CU_cleanup_registry(), so only call this function on registries created
* or held independently of the internal CUnit system.
*
* Once a registry is made the active test registry using CU_set_registry(),
* its destruction will be handled by the framework. ppRegistry may not be
* NULL (checked by assertion), but *ppRegistry can be NULL (in which case the
* function has no effect). Note that *ppRegistry will be set to NULL on return.
*
* @param ppRegistry Address of a pointer to the registry to destroy (non-NULL).
*/
CU_EXPORT
CU_pSuite CU_get_suite_by_name(const char *szSuiteName, CU_pTestRegistry pRegistry);
/**<
* Retrieves a pointer to the suite having the specified name.
* Scans the pRegistry and returns a pointer to the first suite located
* having the specified name. Neither szSuiteName nor pRegistry may be
* NULL (checked by assertion). Clients should normally use CU_get_suite()
* instead, which automatically searches the active test registry.
*
* @param szSuiteName The name of the suite to locate (non-NULL).
* @param pRegistry The registry to scan (non-NULL).
* @return Pointer to the first suite having the specified name,
* NULL if not found.
* @see CU_get_suite()
*/
CU_EXPORT
CU_pSuite CU_get_suite_by_index(unsigned int index, CU_pTestRegistry pRegistry);
/**<
* Retrieves a pointer to the suite at the specified (1-based) index.
* Iterates pRegistry and returns a pointer to the suite located at the
* specified index. pRegistry may not be NULL (checked by assertion).
* Clients should normally use CU_get_suite_at_pos() instead, which
* automatically searches the active test registry.
*
* @param index The 1-based index of the suite to find.
* @param pRegistry The registry to scan (non-NULL).
* @return Pointer to the suite at the specified index, or
* NULL if index is invalid.
* @see CU_get_suite_at_pos()
*/
CU_EXPORT
CU_pTest CU_get_test_by_name(const char* szTestName, CU_pSuite pSuite);
/**<
* Retrieves a pointer to the test case in pSuite having the specified name.
* The first test case in pSuite having the specified name is returned, or
* NULL if not found. Neither szSuiteName nor pSuite may be NULL (checked
* by assertion). Clients should normally use CU_get_test() instead.
*
* @param szTestName The name of the test case to locate (non-NULL).
* @param pSuite The suite to scan (non-NULL).
* @return Pointer to the first test case having the specified name,
* NULL if not found.
* @see CU_get_test()
*/
CU_EXPORT
CU_pTest CU_get_test_by_index(unsigned int index, CU_pSuite pSuite);
/**<
* Retrieves a pointer to the test at the specified (1-based) index.
* Iterates pSuite and returns a pointer to the test located at the
* specified index. pSuite may not be NULL (checked by assertion).
* Clients should normally use CU_get_test_at_pos() instead, which
* automatically searches the active test registry.
*
* @param index The 1-based index of the test to find.
* @param pRegistry The registry to scan (non-NULL).
* @return Pointer to the test at the specified index, or
* NULL if index is invalid.
* @see CU_get_test_at_pos()
*/
#ifdef CUNIT_BUILD_TESTS
void test_cunit_TestDB(void);
#endif
#ifdef __cplusplus
}
#endif
#endif /* CUNIT_TESTDB_H_SEEN */
/** @} */
cunit-2.1-3-dfsg/CUnit/Headers/TestRun.h 0000664 0000000 0000000 00000053776 12607012350 0017747 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Contains Interface to Run tests.
*
* Aug 2001 Initial implementation. (AK)
*
* 09/Aug/2001 Contains generic run tests interface which can be used
* for any type of frontend interface framework. (AK)
*
* 24/Nov/2001 Added Handler for Group Initialization failure condition. (AK)
*
* 05-Aug-2004 New interface. Since these should be internal functions,
* no support for deprecated version 1 names provided now,
* eliminated global variables for current test & suite,
* moved (renamed) _TestResult here from TestDB.h. (JDS)
*
* 05-Sep-2004 Added internal test interface. (JDS)
*
* 23-Apr-2006 Moved doxygen comments into header.
* Added type marker to CU_FailureRecord.
* Added support for tracking inactive suites/tests. (JDS)
*
* 08-May-2006 Moved CU_print_run_results() functionality from
* console/basic test complete handler. (JDS)
*
* 24-May-2006 Added callbacks for suite start and complete events.
* Added tracking/reported of elapsed time. (JDS)
*/
/** @file
* Test run management functions (user interface).
* The TestRun module implements functions supporting the running
* of tests elements (suites and tests). This includes functions for
* running suites and tests, retrieving the number of tests/suites run,
* and managing callbacks during the run process.
*
* The callback mechanism works as follows. The CUnit runtime system
* supports the registering and calling of functions at the start and end
* of each test, when all tests are complete, and when a suite
* initialialization function returns an error. This allows clients to
* perform actions associated with these events such as output formatting
* and reporting.
*/
/** @addtogroup Framework
* @{
*/
#ifndef CUNIT_TESTRUN_H_SEEN
#define CUNIT_TESTRUN_H_SEEN
#include "CUnit.h"
#include "CUError.h"
#include "TestDB.h"
#include
#ifdef __cplusplus
extern "C" {
#endif
/** Types of failures occurring during test runs. */
typedef enum CU_FailureTypes
{
CUF_SuiteInactive = 1, /**< Inactive suite was run. */
CUF_SuiteInitFailed, /**< Suite initialization function failed. */
CUF_SuiteCleanupFailed, /**< Suite cleanup function failed. */
CUF_TestInactive, /**< Inactive test was run. */
CUF_AssertFailed /**< CUnit assertion failed during test run. */
} CU_FailureType; /**< Failure type. */
/* CU_FailureRecord type definition. */
/** Data type for holding assertion failure information (linked list). */
typedef struct CU_FailureRecord
{
CU_FailureType type; /**< Failure type. */
unsigned int uiLineNumber; /**< Line number of failure. */
char* strFileName; /**< Name of file where failure occurred. */
char* strCondition; /**< Test condition which failed. */
CU_pTest pTest; /**< Test containing failure. */
CU_pSuite pSuite; /**< Suite containing test having failure. */
struct CU_FailureRecord* pNext; /**< Pointer to next record in linked list. */
struct CU_FailureRecord* pPrev; /**< Pointer to previous record in linked list. */
} CU_FailureRecord;
typedef CU_FailureRecord* CU_pFailureRecord; /**< Pointer to CU_FailureRecord. */
/* CU_RunSummary type definition. */
/** Data type for holding statistics and assertion failures for a test run. */
typedef struct CU_RunSummary
{
char PackageName[50];
unsigned int nSuitesRun; /**< Number of suites completed during run. */
unsigned int nSuitesFailed; /**< Number of suites for which initialization failed. */
unsigned int nSuitesInactive; /**< Number of suites which were inactive. */
unsigned int nTestsRun; /**< Number of tests completed during run. */
unsigned int nTestsFailed; /**< Number of tests containing failed assertions. */
unsigned int nTestsInactive; /**< Number of tests which were inactive (in active suites). */
unsigned int nAsserts; /**< Number of assertions tested during run. */
unsigned int nAssertsFailed; /**< Number of failed assertions. */
unsigned int nFailureRecords; /**< Number of failure records generated. */
double ElapsedTime; /**< Elapsed time for run in seconds. */
} CU_RunSummary;
typedef CU_RunSummary* CU_pRunSummary; /**< Pointer to CU_RunSummary. */
/*--------------------------------------------------------------------
* Type Definitions for Message Handlers.
*--------------------------------------------------------------------*/
typedef void (*CU_SuiteStartMessageHandler)(const CU_pSuite pSuite);
/**< Message handler called at the start of a suite. pSuite will not be null. */
typedef void (*CU_TestStartMessageHandler)(const CU_pTest pTest, const CU_pSuite pSuite);
/**< Message handler called at the start of a test.
* The parameters are the test and suite being run. The test run is
* considered in progress when the message handler is called.
* Neither pTest nor pSuite may be null.
*/
typedef void (*CU_TestCompleteMessageHandler)(const CU_pTest pTest, const CU_pSuite pSuite,
const CU_pFailureRecord pFailure);
/**< Message handler called at the completion of a test.
* The parameters are the test and suite being run, plus a pointer to
* the first failure record applicable to this test. If the test did
* not have any assertion failures, pFailure will be NULL. The test run
* is considered in progress when the message handler is called.
*/
typedef void (*CU_SuiteCompleteMessageHandler)(const CU_pSuite pSuite,
const CU_pFailureRecord pFailure);
/**< Message handler called at the completion of a suite.
* The parameters are suite being run, plus a pointer to the first failure
* record applicable to this suite. If the suite and it's tests did not
* have any failures, pFailure will be NULL. The test run is considered
* in progress when the message handler is called.
*/
typedef void (*CU_AllTestsCompleteMessageHandler)(const CU_pFailureRecord pFailure);
/**< Message handler called at the completion of a test run.
* The parameter is a pointer to the linked list holding the failure
* records for the test run. The test run is considered completed
* when the message handler is called.
*/
typedef void (*CU_SuiteInitFailureMessageHandler)(const CU_pSuite pSuite);
/**< Message handler called when a suite initializer fails.
* The test run is considered in progress when the message handler is called.
*/
typedef void (*CU_SuiteCleanupFailureMessageHandler)(const CU_pSuite pSuite);
/**< Message handler called when a suite cleanup function fails.
* The test run is considered in progress when the message handler is called.
*/
/*--------------------------------------------------------------------
* Get/Set functions for Message Handlers
*--------------------------------------------------------------------*/
CU_EXPORT void CU_set_suite_start_handler(CU_SuiteStartMessageHandler pSuiteStartMessage);
/**< Sets the message handler to call before each suite is run. */
CU_EXPORT void CU_set_test_start_handler(CU_TestStartMessageHandler pTestStartMessage);
/**< Sets the message handler to call before each test is run. */
CU_EXPORT void CU_set_test_complete_handler(CU_TestCompleteMessageHandler pTestCompleteMessage);
/**< Sets the message handler to call after each test is run. */
CU_EXPORT void CU_set_suite_complete_handler(CU_SuiteCompleteMessageHandler pSuiteCompleteMessage);
/**< Sets the message handler to call after each suite is run. */
CU_EXPORT void CU_set_all_test_complete_handler(CU_AllTestsCompleteMessageHandler pAllTestsCompleteMessage);
/**< Sets the message handler to call after all tests have been run. */
CU_EXPORT void CU_set_suite_init_failure_handler(CU_SuiteInitFailureMessageHandler pSuiteInitFailureMessage);
/**< Sets the message handler to call when a suite initialization function returns an error. */
CU_EXPORT void CU_set_suite_cleanup_failure_handler(CU_SuiteCleanupFailureMessageHandler pSuiteCleanupFailureMessage);
/**< Sets the message handler to call when a suite cleanup function returns an error. */
CU_EXPORT CU_SuiteStartMessageHandler CU_get_suite_start_handler(void);
/**< Retrieves the message handler called before each suite is run. */
CU_EXPORT CU_TestStartMessageHandler CU_get_test_start_handler(void);
/**< Retrieves the message handler called before each test is run. */
CU_EXPORT CU_TestCompleteMessageHandler CU_get_test_complete_handler(void);
/**< Retrieves the message handler called after each test is run. */
CU_EXPORT CU_SuiteCompleteMessageHandler CU_get_suite_complete_handler(void);
/**< Retrieves the message handler called after each suite is run. */
CU_EXPORT CU_AllTestsCompleteMessageHandler CU_get_all_test_complete_handler(void);
/**< Retrieves the message handler called after all tests are run. */
CU_EXPORT CU_SuiteInitFailureMessageHandler CU_get_suite_init_failure_handler(void);
/**< Retrieves the message handler called when a suite initialization error occurs. */
CU_EXPORT CU_SuiteCleanupFailureMessageHandler CU_get_suite_cleanup_failure_handler(void);
/**< Retrieves the message handler called when a suite cleanup error occurs. */
/*--------------------------------------------------------------------
* Functions for running registered tests and suites.
*--------------------------------------------------------------------*/
CU_EXPORT CU_ErrorCode CU_run_all_tests(void);
/**<
* Runs all tests in all suites registered in the test registry.
* The suites are run in the order registered in the test registry.
* For each suite, it is first checked to make sure it is active.
* Any initialization function is then called, the suite is run
* using run_single_suite(), and finally any suite cleanup function
* is called. If an error condition (other than CUE_NOREGISTRY)
* occurs during the run, the action depends on the current error
* action (see CU_set_error_action()). An inactive suite is not
* considered an error for this function. Note that the run
* statistics (counts of tests, successes, failures) are cleared
* each time this function is run, even if it is unsuccessful.
*
* @return A CU_ErrorCode indicating the first error condition
* encountered while running the tests.
* @see CU_run_suite() to run the tests in a specific suite.
* @see CU_run_test() for run a specific test only.
*/
CU_EXPORT CU_ErrorCode CU_run_suite(CU_pSuite pSuite);
/**<
* Runs all tests in a specified suite.
* The suite need not be registered in the test registry to be
* run. It does, however, need to have its fActive flag set to
* CU_TRUE.
*
* Any initialization function for the suite is first called,
* then the suite is run using run_single_suite(), and any suite
* cleanup function is called. Note that the run statistics
* (counts of tests, successes, failures) are initialized each
* time this function is called even if it is unsuccessful. If
* an error condition occurs during the run, the action depends
* on the current error action (see CU_set_error_action()).
*
* @param pSuite The suite containing the test (non-NULL)
* @return A CU_ErrorCode indicating the first error condition
* encountered while running the suite. CU_run_suite()
* sets and returns CUE_NOSUITE if pSuite is NULL, or
* CUE_SUITE_INACTIVE if the requested suite is not
* activated. Other error codes can be set during suite
* initialization or cleanup or during test runs.
* @see CU_run_all_tests() to run all suites.
* @see CU_run_test() to run a single test in a specific suite.
*/
CU_EXPORT CU_ErrorCode CU_run_test(CU_pSuite pSuite, CU_pTest pTest);
/**<
* Runs a specific test in a specified suite.
* The suite need not be registered in the test registry to be run,
* although the test must be registered in the specified suite.
* Any initialization function for the suite is first
* called, then the test is run using run_single_test(), and
* any suite cleanup function is called. Note that the
* run statistics (counts of tests, successes, failures)
* will be initialized each time this function is called even
* if it is not successful. Both the suite and test specified
* must be active for the test to be run. The suite is not
* considered to be run, although it may be counted as a failed
* suite if the intialization or cleanup functions fail.
*
* @param pSuite The suite containing the test (non-NULL)
* @param pTest The test to run (non-NULL)
* @return A CU_ErrorCode indicating the first error condition
* encountered while running the suite. CU_run_test()
* sets and returns CUE_NOSUITE if pSuite is NULL,
* CUE_NOTEST if pTest is NULL, CUE_SUITE_INACTIVE if
* pSuite is not active, CUE_TEST_NOT_IN_SUITE
* if pTest is not registered in pSuite, and CU_TEST_INACTIVE
* if pTest is not active. Other error codes can be set during
* suite initialization or cleanup or during the test run.
* @see CU_run_all_tests() to run all tests/suites.
* @see CU_run_suite() to run all tests in a specific suite.
*/
/*--------------------------------------------------------------------
* Functions for setting runtime behavior.
*--------------------------------------------------------------------*/
CU_EXPORT void CU_set_fail_on_inactive(CU_BOOL new_inactive);
/**<
* Sets whether an inactive suite or test is treated as a failure.
* If CU_TRUE, then failure records will be generated for inactive
* suites or tests encountered during a test run. The default is
* CU_TRUE so that the client is reminded that the framewrork
* contains inactive suites/tests. Set to CU_FALSE to turn off
* this behavior.
*
* @param new_inactive New setting for whether to treat inactive
* suites and tests as failures during a test
* run (CU_TRUE) or not (CU_FALSE).
* @see CU_get_fail_on_failure()
*/
CU_EXPORT CU_BOOL CU_get_fail_on_inactive(void);
/**<
* Retrieves the current setting for whether inactive suites/tests
* are treated as failures. If CU_TRUE then failure records will
* be generated for inactive suites encountered during a test run.
*
* @return CU_TRUE if inactive suites/tests are failures, CU_FALSE if not.
* @see CU_set_fail_on_inactive()
*/
/*--------------------------------------------------------------------
* Functions for getting information about the previous test run.
*--------------------------------------------------------------------*/
CU_EXPORT unsigned int CU_get_number_of_suites_run(void);
/**< Retrieves the number of suites completed during the previous run (reset each run). */
CU_EXPORT unsigned int CU_get_number_of_suites_failed(void);
/**< Retrieves the number of suites which failed to initialize during the previous run (reset each run). */
CU_EXPORT unsigned int CU_get_number_of_suites_inactive(void);
/**< Retrieves the number of inactive suites found during the previous run (reset each run). */
CU_EXPORT unsigned int CU_get_number_of_tests_run(void);
/**< Retrieves the number of tests completed during the previous run (reset each run). */
CU_EXPORT unsigned int CU_get_number_of_tests_failed(void);
/**< Retrieves the number of tests containing failed assertions during the previous run (reset each run). */
CU_EXPORT unsigned int CU_get_number_of_tests_inactive(void);
/**< Retrieves the number of inactive tests found during the previous run (reset each run). */
CU_EXPORT unsigned int CU_get_number_of_asserts(void);
/**< Retrieves the number of assertions processed during the last run (reset each run). */
CU_EXPORT unsigned int CU_get_number_of_successes(void);
/**< Retrieves the number of successful assertions during the last run (reset each run). */
CU_EXPORT unsigned int CU_get_number_of_failures(void);
/**< Retrieves the number of failed assertions during the last run (reset each run). */
CU_EXPORT unsigned int CU_get_number_of_failure_records(void);
/**<
* Retrieves the number failure records created during the previous run (reset each run).
* Note that this may be more than the number of failed assertions, since failure
* records may also be created for failed suite initialization and cleanup.
*/
CU_EXPORT double CU_get_elapsed_time(void);
/**<
* Retrieves the elapsed time for the last run in seconds (reset each run).
* This function will calculate the current elapsed time if the test run has not
* yet completed. This is in contrast to the run summary returned by
* CU_get_run_summary(), for which the elapsed time is not updated until the
* end of the run.
*/
CU_EXPORT CU_pFailureRecord CU_get_failure_list(void);
/**<
* Retrieves the head of the linked list of failures which occurred during the
* last run (reset each run). Note that the pointer returned is invalidated
* when the client initiates a run using CU_run_all_tests(), CU_run_suite(),
* or CU_run_test().
*/
CU_EXPORT CU_pRunSummary CU_get_run_summary(void);
/**<
* Retrieves the entire run summary for the last test run (reset each run).
* The run counts and stats contained in the run summary are updated
* throughout a test run. Note, however, that the elapsed time is not
* updated until after all suites/tests are run but before the "all tests
* complete" message handler is called (if any). To get the elapsed
* time during a test run, use CU_get_elapsed_time() instead.
*/
CU_EXPORT char * CU_get_run_results_string(void);
/**<
* Creates a string and fills it with a summary of the current run results.
* The run summary presents data for the suites, tests, and assertions
* encountered during the run, as well as the elapsed time. The data
* presented include the number of registered, run, passed, failed, and
* inactive entities for each, as well as the elapsed time. This function
* can be called at any time, although the test registry must have been
* initialized (checked by assertion). The returned string is owned by
* the caller and should be deallocated using CU_FREE(). NULL is returned
* if there is an error allocating the new string.
*
* @return A new string containing the run summary (owned by caller).
*/
CU_EXPORT void CU_print_run_results(FILE *file);
/**<
* Prints a summary of the current run results to file.
* The run summary is the same as returned by CU_get_run_results_string().
* Note that no newlines are printed before or after the report, so any
* positioning must be performed before/after calling this function. The
* report itself extends over several lines broken by '\n' characters.
* file may not be NULL (checked by assertion).
*
* @param file Pointer to stream to receive the printed summary (non-NULL).
*/
/*--------------------------------------------------------------------
* Functions for internal & testing use.
*--------------------------------------------------------------------*/
CU_EXPORT CU_pSuite CU_get_current_suite(void);
/**< Retrieves a pointer to the currently-running suite (NULL if none). */
CU_EXPORT CU_pTest CU_get_current_test(void);
/**< Retrievea a pointer to the currently-running test (NULL if none). */
CU_EXPORT CU_BOOL CU_is_test_running(void);
/**< Returns CU_TRUE
if a test run is in progress,
* CU_TRUE
otherwise.
*/
CU_EXPORT void CU_clear_previous_results(void);
/**<
* Initializes the run summary information stored from the previous test run.
* Resets the run counts to zero, and frees any memory associated with
* failure records. Calling this function multiple times, while inefficient,
* will not cause an error condition.
* @see clear_previous_results()
*/
CU_EXPORT CU_BOOL CU_assertImplementation(CU_BOOL bValue,
unsigned int uiLine,
const char *strCondition,
const char *strFile,
const char *strFunction,
CU_BOOL bFatal);
/**<
* Assertion implementation function.
* All CUnit assertions reduce to a call to this function. It should only be
* called during an active test run (checked by assertion). This means that CUnit
* assertions should only be used in registered test functions during a test run.
*
* @param bValue Value of the assertion (CU_TRUE or CU_FALSE).
* @param uiLine Line number of failed test statement.
* @param strCondition String containing logical test that failed.
* @param strFile Source file where test statement failed.
* @param strFunction Function where test statement failed.
* @param bFatal CU_TRUE to abort test (via longjmp()), CU_FALSE to continue test.
* @return As a convenience, returns the value of the assertion (i.e. bValue).
*/
#ifdef USE_DEPRECATED_CUNIT_NAMES
typedef CU_FailureRecord _TestResult; /**< @deprecated Use CU_FailureRecord. */
typedef CU_pFailureRecord PTestResult; /**< @deprecated Use CU_pFailureRecord. */
#endif /* USE_DEPRECATED_CUNIT_NAMES */
#ifdef CUNIT_BUILD_TESTS
void test_cunit_TestRun(void);
#endif
#ifdef __cplusplus
}
#endif
#endif /* CUNIT_TESTRUN_H_SEEN */
/** @} */
cunit-2.1-3-dfsg/CUnit/Headers/Util.h 0000664 0000000 0000000 00000013507 12607012350 0017244 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Contains Type Definitions for some generic functions used across
* CUnit project files.
*
* 13/Oct/2001 Moved some of the generic functions declarations from
* other files to this one so as to use the functions
* consitently. This file is not included in the distribution
* headers because it is used internally by CUnit. (AK)
*
* 20-Jul-2004 New interface, support for deprecated version 1 names. (JDS)
*
* 5-Sep-2004 Added internal test interface. (JDS)
*
* 17-Apr-2006 Added CU_translated_strlen() and CU_number_width().
* Removed CUNIT_MAX_STRING_LENGTH - dangerous since not enforced.
* Fixed off-by-1 error in CU_translate_special_characters(),
* modifying implementation & results in some cases. User can
* now tell if conversion failed. (JDS)
*/
/** @file
* Utility functions (user interface).
*/
/** @addtogroup Framework
* @{
*/
#ifndef CUNIT_UTIL_H_SEEN
#define CUNIT_UTIL_H_SEEN
#include "CUnit.h"
#ifdef __cplusplus
extern "C" {
#endif
#define CUNIT_MAX_ENTITY_LEN 5
/**< Maximum number of characters in a translated xml entity. */
CU_EXPORT size_t CU_translate_special_characters(const char *szSrc, char *szDest, size_t maxlen);
/**<
* Converts special characters in szSrc to xml entity codes and stores
* result in szDest. Currently conversion of '&', '<', and '>' is supported.
* Note that conversion to entities increases the length of the converted
* string. The greatest conversion size increase would be a string
* consisting entirely of entity characters of converted length
* CUNIT_MAX_ENTITY_LEN. Neither szSrc nor szDest may be NULL
* (checked by assertion).
*
* maxlen gives the maximum number of characters in the translated string.
* If szDest does not have enough room to hold the converted string, the
* return value will be zero and szDest will contain an empty string.
* If this occurs, the remaining characters in szDest may be overwritten
* in an unspecified manner. It is the caller's responsibility to make
* sure there is sufficient room in szDest to hold the converted string.
* CU_translated_strlen() may be used to calculate the length of buffer
* required (remember to add 1 for the terminating \0).
*
* @param szSrc Source string to convert (non-NULL).
* @param szDest Location to hold the converted string (non-NULL).
* @param maxlen Maximum number of characters szDest can hold.
* @return The number of special characters converted (always 0 if
* szDest did not have enough room to hold converted string).
*/
CU_EXPORT size_t CU_translated_strlen(const char *szSrc);
/**<
* Calculates the length of a translated string.
* This function calculates the buffer length required to hold a string
* after processing with CU_translate_special_characters(). The returned
* length does not include space for the terminating '\0' character.
* szSrc may not be NULL (checked by assertion).
*
* @param szSrc Source string to analyze (non-NULL).
* @return The number of characters szSrc will expand to when converted.
*/
CU_EXPORT int CU_compare_strings(const char *szSrc, const char *szDest);
/**<
* Case-insensitive string comparison. Neither string pointer
* can be NULL (checked by assertion).
*
* @param szSrc 1st string to compare (non-NULL).
* @param szDest 2nd string to compare (non-NULL).
* @return 0 if the strings are equal, non-zero otherwise.
*/
CU_EXPORT void CU_trim_left(char *szString);
/**<
* Trims leading whitespace from the specified string.
* @param szString The string to trim.
*/
CU_EXPORT void CU_trim_right(char *szString);
/**<
* Trims trailing whitespace from the specified string.
* @param szString The string to trim.
*/
CU_EXPORT void CU_trim(char *szString);
/**<
* Trims leading and trailing whitespace from the specified string.
* @param szString The string to trim.
*/
CU_EXPORT size_t CU_number_width(int number);
/**<
* Calulates the number of places required to display
* number in decimal.
*/
#ifdef CUNIT_BUILD_TESTS
void test_cunit_Util(void);
#endif
#ifdef __cplusplus
}
#endif
#ifdef USE_DEPRECATED_CUNIT_NAMES
#define CUNIT_MAX_STRING_LENGTH 1024
/**< Maximum string length. */
#define translate_special_characters(src, dest, len) CU_translate_special_characters(src, dest, len)
/**< Deprecated (version 1). @deprecated Use CU_translate_special_characters(). */
#define compare_strings(src, dest) CU_compare_strings(src, dest)
/**< Deprecated (version 1). @deprecated Use CU_compare_strings(). */
#define trim_left(str) CU_trim_left(str)
/**< Deprecated (version 1). @deprecated Use CU_trim_left(). */
#define trim_right(str) CU_trim_right(str)
/**< Deprecated (version 1). @deprecated Use CU_trim_right(). */
#define trim(str) CU_trim(str)
/**< Deprecated (version 1). @deprecated Use CU_trim(). */
#endif /* USE_DEPRECATED_CUNIT_NAMES */
#endif /* CUNIT_UTIL_H_SEEN */
/** @} */
cunit-2.1-3-dfsg/CUnit/Headers/wxWidget.h 0000664 0000000 0000000 00000002434 12607012350 0020126 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2006 Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* wxWidgets gui Interface.
*
* May 2006 Initial implementation. (JDS)
*/
/** @file
* wxWidgets-based gui (user interface).
*/
/** @addtogroup wxWidgets
* @{
*/
#ifndef CUNIT_WXWIDGET_H_SEEN
#define CUNIT_WXWIDGET_H_SEEN
#include "CUnit.h"
#include "TestDB.h"
#ifdef __cplusplus
extern "C" {
#endif
CU_BOOL create_tests(void);
CU_BOOL destroy_tests(void);
#ifdef __cplusplus
}
#endif
#endif /* CUNIT_WXWIDGET_H_SEEN */
/** @} */
cunit-2.1-3-dfsg/CUnit/Jamfile 0000664 0000000 0000000 00000010371 12607012350 0016071 0 ustar 00root root 0000000 0000000 #
# Jamfile to build CUnit - Source root Directory
# (see http://www.freetype.org/jam/index.html)
#
# Copyright (C) 2004-2006 Jerry St.Clair
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#---------------------------------------------------------------------------
SubDir TOP CUnit ;
SubDirHdrs $(CUNIT_HDR_DIR) $(CUNIT_WIN_DIR) ;
# set location for target, source, and temporary files
LOCATE_TARGET = $(BUILD_DIR)$(SLASH)CUnit ;
SEARCH_SOURCE +=
$(TOP)$(SLASH)CUnit
$(TOP)$(SLASH)CUnit$(SLASH)Headers
$(TOP)$(SLASH)CUnit$(SLASH)Sources$(SLASH)Framework
;
SOURCES =
CUError.c
MyMem.c
TestDB.c
TestRun.c
Util.c
;
if $(BUILD_AUTOMATED)
{
SEARCH_SOURCE += $(TOP)$(SLASH)CUnit$(SLASH)Sources$(SLASH)Automated ;
SOURCES += Automated.c ;
}
if $(BUILD_BASIC)
{
SEARCH_SOURCE += $(TOP)$(SLASH)CUnit$(SLASH)Sources$(SLASH)Basic ;
SOURCES += Basic.c ;
}
if $(BUILD_CONSOLE)
{
SEARCH_SOURCE += $(TOP)$(SLASH)CUnit$(SLASH)Sources$(SLASH)Console ;
SOURCES += Console.c ;
}
if $(BUILD_CURSES)
{
SEARCH_SOURCE += $(TOP)$(SLASH)CUnit$(SLASH)Sources$(SLASH)Curses ;
SOURCES += Curses.c ;
}
if $(BUILD_WINDOWS)
{
SEARCH_SOURCE += $(TOP)$(SLASH)CUnit$(SLASH)Sources$(SLASH)Win ;
SOURCES += Win.c ;
}
if $(BUILD_SHARED_LIB)
{
if $(NT)
{
# extra symbolic targets for building CUnit library
DEPENDS cunit CUnit libcunit : $(CUNIT_LIB_NAME)$(SUFSHR) ;
SubDirCcFlags -DCU_DLL -DCU_BUILD_DLL ;
Main $(CUNIT_LIB_NAME)$(SUFSHR) : $(SOURCES) ;
MakeLocate $(CUNIT_LIB_NAME)$(SUFSHR) : $(BUILD_DIR) ;
if $(BCCROOT) || ( $(TOOLSET) = BORLANDC )
{
LINKFLAGS on $(CUNIT_LIB_NAME)$(SUFSHR) += -WD -lGi ;
}
else if $(MSVCNT) || ( $(TOOLSET) = VISUALC )
{
LINKFLAGS on $(CUNIT_LIB_NAME)$(SUFSHR) = $(LINKFLAGS) /DLL /IMPLIB:$(BUILD_DIR)$(SLASH)$(CUNIT_LIB_NAME)_dll$(SUFLIB) ;
}
else if $(MINGW) || ( $(TOOLSET) = MINGW )
{
SubDirCcFlags -fPIC ;
LINKFLAGS on $(CUNIT_LIB_NAME)$(SUFSHR) +=
-shared
libcunit_dll.def
-Wl,--out-implib,$(BUILD_DIR)$(SLASH)$(CUNIT_LIB_NAME)_dll$(SUFLIB)
;
}
else
{
EXIT Building of CUnit shared library is not supported for this compiler on Windows. ;
}
MakeImportLibrary $(CUNIT_LIB_NAME)$(SUFSHR) : $(CUNIT_LIB_NAME)_dll$(SUFLIB) ;
# install import library
if $(INSTALL_LIB_DIR)
{
InstallLib $(INSTALL_LIB_DIR) : $(CUNIT_LIB_NAME)_dll$(SUFLIB) ;
}
# install shared library
if $(INSTALL_BIN_DIR)
{
InstallBin $(INSTALL_BIN_DIR) : $(CUNIT_LIB_NAME)$(SUFSHR) ;
}
}
else if $(UNIX) || ( $(OS) = LINUX )
{
# extra symbolic targets for building CUnit library
DEPENDS cunit CUnit libcunit : $(CUNIT_LIB_NAME)$(SUFSHR).$(VERSION).$(RELEASE) ;
Main $(CUNIT_LIB_NAME)$(SUFSHR).$(VERSION).$(RELEASE) : $(SOURCES) ;
MakeLocate $(CUNIT_LIB_NAME)$(SUFSHR).$(VERSION).$(RELEASE) : $(BUILD_DIR) ;
CCFLAGS on $(SOURCES) += -fPIC ;
LINKFLAGS on $(CUNIT_LIB_NAME)$(SUFSHR).$(VERSION).$(RELEASE) +=
-shared
-Wl,-soname,$(CUNIT_LIB_NAME)$(SUFSHR).$(VERSION_MAJOR)
;
# install shared library
if $(INSTALL_LIB_DIR)
{
InstallLib $(INSTALL_BIN_DIR) : $(CUNIT_LIB_NAME)$(SUFSHR).$(VERSION).$(RELEASE) ;
}
}
}
if $(BUILD_STATIC_LIB)
{
Library $(CUNIT_LIB_NAME) : $(SOURCES) ;
MakeLocate $(CUNIT_LIB_NAME)$(SUFLIB) : $(BUILD_DIR) ;
# install static library
if $(INSTALL_LIB_DIR)
{
InstallLib $(INSTALL_LIB_DIR) : $(CUNIT_LIB_NAME)$(SUFLIB) ;
}
}
SubInclude TOP CUnit Headers ;
SubInclude TOP CUnit Sources Test ;
cunit-2.1-3-dfsg/CUnit/Makefile.am 0000664 0000000 0000000 00000000125 12607012350 0016627 0 ustar 00root root 0000000 0000000 ## Process this file with automake to produce Makefile.in
SUBDIRS = Sources Headers
cunit-2.1-3-dfsg/CUnit/Makefile.in 0000664 0000000 0000000 00000044123 12607012350 0016646 0 ustar 00root root 0000000 0000000 # Makefile.in generated by automake 1.14 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = CUnit
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/mkinstalldirs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
ctags-recursive dvi-recursive html-recursive info-recursive \
install-data-recursive install-dvi-recursive \
install-exec-recursive install-html-recursive \
install-info-recursive install-pdf-recursive \
install-ps-recursive install-recursive installcheck-recursive \
installdirs-recursive pdf-recursive ps-recursive \
tags-recursive uninstall-recursive
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
am__recursive_targets = \
$(RECURSIVE_TARGETS) \
$(RECURSIVE_CLEAN_TARGETS) \
$(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
distdir
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
sed_rest='s,^[^/]*/*,,'; \
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
sed_butlast='s,/*[^/]*$$,,'; \
while test -n "$$dir1"; do \
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
if test "$$first" != "."; then \
if test "$$first" = ".."; then \
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
else \
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
if test "$$first2" = "$$first"; then \
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
else \
dir2="../$$dir2"; \
fi; \
dir0="$$dir0"/"$$first"; \
fi; \
fi; \
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
done; \
reldir="$$dir2"
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_AUTOMATED = @BUILD_AUTOMATED@
BUILD_BASIC = @BUILD_BASIC@
BUILD_CONSOLE = @BUILD_CONSOLE@
BUILD_CURSES = @BUILD_CURSES@
BUILD_EXAMPLES = @BUILD_EXAMPLES@
BUILD_TEST = @BUILD_TEST@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CURSES_LIB = @CURSES_LIB@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_DEBUG = @ENABLE_DEBUG@
ENABLE_DEPRECATED = @ENABLE_DEPRECATED@
ENABLE_MEMTRACE = @ENABLE_MEMTRACE@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBTOOL_AGE = @LIBTOOL_AGE@
LIBTOOL_CURRENT = @LIBTOOL_CURRENT@
LIBTOOL_REVISION = @LIBTOOL_REVISION@
LIBTOOL_SUFFIX = @LIBTOOL_SUFFIX@
LIBTOOL_SUFFIX1 = @LIBTOOL_SUFFIX1@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
RELEASE = @RELEASE@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
VERSION_MAJOR = @VERSION_MAJOR@
VERSION_MINOR = @VERSION_MINOR@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
SUBDIRS = Sources Headers
all: all-recursive
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu CUnit/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu CUnit/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
# This directory's subdirectories are mostly independent; you can cd
# into them and run 'make' without going through this Makefile.
# To change the values of 'make' variables: instead of editing Makefiles,
# (1) if the variable is set in 'config.status', edit 'config.status'
# (which will cause the Makefiles to be regenerated when you run 'make');
# (2) otherwise, pass the desired values on the 'make' command line.
$(am__recursive_targets):
@fail=; \
if $(am__make_keepgoing); then \
failcom='fail=yes'; \
else \
failcom='exit 1'; \
fi; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-recursive
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-recursive
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-recursive
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
$(am__make_dryrun) \
|| test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
dir1=$$subdir; dir2="$(top_distdir)"; \
$(am__relativize); \
new_top_distdir=$$reldir; \
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
($(am__cd) $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$new_top_distdir" \
distdir="$$new_distdir" \
am__remove_distdir=: \
am__skip_length_check=: \
am__skip_mode_fix=: \
distdir) \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-recursive
all-am: Makefile
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
html-am:
info: info-recursive
info-am:
install-data-am:
install-dvi: install-dvi-recursive
install-dvi-am:
install-exec-am:
install-html: install-html-recursive
install-html-am:
install-info: install-info-recursive
install-info-am:
install-man:
install-pdf: install-pdf-recursive
install-pdf-am:
install-ps: install-ps-recursive
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am:
.MAKE: $(am__recursive_targets) install-am install-strip
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
check-am clean clean-generic clean-libtool cscopelist-am ctags \
ctags-am distclean distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
installdirs-am maintainer-clean maintainer-clean-generic \
mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
ps ps-am tags tags-am uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
cunit-2.1-3-dfsg/CUnit/Sources/ 0000775 0000000 0000000 00000000000 12607012350 0016220 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/CUnit/Sources/Automated/ 0000775 0000000 0000000 00000000000 12607012350 0020143 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/CUnit/Sources/Automated/.deps/ 0000775 0000000 0000000 00000000000 12607012350 0021154 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/CUnit/Sources/Automated/.deps/Automated.Plo 0000664 0000000 0000000 00000014554 12607012350 0023564 0 ustar 00root root 0000000 0000000 Automated.lo: Automated.c /usr/include/stdio.h /usr/include/sys/cdefs.h \
/usr/include/sys/_symbol_aliasing.h \
/usr/include/sys/_posix_availability.h /usr/include/Availability.h \
/usr/include/AvailabilityInternal.h /usr/include/_types.h \
/usr/include/sys/_types.h /usr/include/machine/_types.h \
/usr/include/i386/_types.h /usr/include/sys/_types/_va_list.h \
/usr/include/sys/_types/_size_t.h /usr/include/sys/_types/_null.h \
/usr/include/sys/_types/_off_t.h /usr/include/sys/_types/_ssize_t.h \
/usr/include/secure/_stdio.h /usr/include/secure/_common.h \
/usr/include/stdlib.h /usr/include/sys/wait.h \
/usr/include/sys/_types/_pid_t.h /usr/include/sys/_types/_id_t.h \
/usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \
/usr/include/machine/signal.h /usr/include/i386/signal.h \
/usr/include/machine/_mcontext.h /usr/include/i386/_mcontext.h \
/usr/include/mach/i386/_structs.h \
/usr/include/sys/_types/_sigaltstack.h \
/usr/include/sys/_types/_ucontext.h \
/usr/include/sys/_types/_pthread_attr_t.h \
/usr/include/sys/_types/_sigset_t.h /usr/include/sys/_types/_uid_t.h \
/usr/include/sys/resource.h \
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h \
/usr/include/stdint.h /usr/include/sys/_types/_int8_t.h \
/usr/include/sys/_types/_int16_t.h /usr/include/sys/_types/_int32_t.h \
/usr/include/sys/_types/_int64_t.h /usr/include/_types/_uint8_t.h \
/usr/include/_types/_uint16_t.h /usr/include/_types/_uint32_t.h \
/usr/include/_types/_uint64_t.h /usr/include/sys/_types/_intptr_t.h \
/usr/include/sys/_types/_uintptr_t.h /usr/include/_types/_intmax_t.h \
/usr/include/_types/_uintmax_t.h /usr/include/sys/_types/_timeval.h \
/usr/include/machine/endian.h /usr/include/i386/endian.h \
/usr/include/sys/_endian.h /usr/include/libkern/_OSByteOrder.h \
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
/usr/include/sys/_types/_ct_rune_t.h /usr/include/sys/_types/_rune_t.h \
/usr/include/sys/_types/_wchar_t.h /usr/include/machine/types.h \
/usr/include/i386/types.h /usr/include/sys/_types/___offsetof.h \
/usr/include/sys/_types/_dev_t.h /usr/include/sys/_types/_mode_t.h \
/usr/include/ctype.h /usr/include/runetype.h \
/usr/include/sys/_types/_wint_t.h /usr/include/assert.h \
/usr/include/string.h /usr/include/strings.h \
/usr/include/secure/_string.h \
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/limits.h \
/usr/include/limits.h /usr/include/machine/limits.h \
/usr/include/i386/limits.h /usr/include/i386/_limits.h \
/usr/include/sys/syslimits.h /usr/include/time.h \
/usr/include/_structs.h /usr/include/sys/_structs.h \
/usr/include/sys/_types/_timespec.h /usr/include/sys/_types/_clock_t.h \
/usr/include/sys/_types/_time_t.h ../../../CUnit/Headers/CUnit.h \
/usr/include/math.h ../../../CUnit/Headers/CUError.h \
/usr/include/errno.h /usr/include/sys/errno.h \
../../../CUnit/Headers/TestDB.h /usr/include/setjmp.h \
../../../CUnit/Headers/TestRun.h ../../../CUnit/Headers/MyMem.h \
../../../CUnit/Headers/Util.h ../../../CUnit/Headers/Automated.h \
../../../CUnit/Headers/CUnit_intl.h
/usr/include/stdio.h:
/usr/include/sys/cdefs.h:
/usr/include/sys/_symbol_aliasing.h:
/usr/include/sys/_posix_availability.h:
/usr/include/Availability.h:
/usr/include/AvailabilityInternal.h:
/usr/include/_types.h:
/usr/include/sys/_types.h:
/usr/include/machine/_types.h:
/usr/include/i386/_types.h:
/usr/include/sys/_types/_va_list.h:
/usr/include/sys/_types/_size_t.h:
/usr/include/sys/_types/_null.h:
/usr/include/sys/_types/_off_t.h:
/usr/include/sys/_types/_ssize_t.h:
/usr/include/secure/_stdio.h:
/usr/include/secure/_common.h:
/usr/include/stdlib.h:
/usr/include/sys/wait.h:
/usr/include/sys/_types/_pid_t.h:
/usr/include/sys/_types/_id_t.h:
/usr/include/sys/signal.h:
/usr/include/sys/appleapiopts.h:
/usr/include/machine/signal.h:
/usr/include/i386/signal.h:
/usr/include/machine/_mcontext.h:
/usr/include/i386/_mcontext.h:
/usr/include/mach/i386/_structs.h:
/usr/include/sys/_types/_sigaltstack.h:
/usr/include/sys/_types/_ucontext.h:
/usr/include/sys/_types/_pthread_attr_t.h:
/usr/include/sys/_types/_sigset_t.h:
/usr/include/sys/_types/_uid_t.h:
/usr/include/sys/resource.h:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h:
/usr/include/stdint.h:
/usr/include/sys/_types/_int8_t.h:
/usr/include/sys/_types/_int16_t.h:
/usr/include/sys/_types/_int32_t.h:
/usr/include/sys/_types/_int64_t.h:
/usr/include/_types/_uint8_t.h:
/usr/include/_types/_uint16_t.h:
/usr/include/_types/_uint32_t.h:
/usr/include/_types/_uint64_t.h:
/usr/include/sys/_types/_intptr_t.h:
/usr/include/sys/_types/_uintptr_t.h:
/usr/include/_types/_intmax_t.h:
/usr/include/_types/_uintmax_t.h:
/usr/include/sys/_types/_timeval.h:
/usr/include/machine/endian.h:
/usr/include/i386/endian.h:
/usr/include/sys/_endian.h:
/usr/include/libkern/_OSByteOrder.h:
/usr/include/libkern/i386/_OSByteOrder.h:
/usr/include/alloca.h:
/usr/include/sys/_types/_ct_rune_t.h:
/usr/include/sys/_types/_rune_t.h:
/usr/include/sys/_types/_wchar_t.h:
/usr/include/machine/types.h:
/usr/include/i386/types.h:
/usr/include/sys/_types/___offsetof.h:
/usr/include/sys/_types/_dev_t.h:
/usr/include/sys/_types/_mode_t.h:
/usr/include/ctype.h:
/usr/include/runetype.h:
/usr/include/sys/_types/_wint_t.h:
/usr/include/assert.h:
/usr/include/string.h:
/usr/include/strings.h:
/usr/include/secure/_string.h:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/limits.h:
/usr/include/limits.h:
/usr/include/machine/limits.h:
/usr/include/i386/limits.h:
/usr/include/i386/_limits.h:
/usr/include/sys/syslimits.h:
/usr/include/time.h:
/usr/include/_structs.h:
/usr/include/sys/_structs.h:
/usr/include/sys/_types/_timespec.h:
/usr/include/sys/_types/_clock_t.h:
/usr/include/sys/_types/_time_t.h:
../../../CUnit/Headers/CUnit.h:
/usr/include/math.h:
../../../CUnit/Headers/CUError.h:
/usr/include/errno.h:
/usr/include/sys/errno.h:
../../../CUnit/Headers/TestDB.h:
/usr/include/setjmp.h:
../../../CUnit/Headers/TestRun.h:
../../../CUnit/Headers/MyMem.h:
../../../CUnit/Headers/Util.h:
../../../CUnit/Headers/Automated.h:
../../../CUnit/Headers/CUnit_intl.h:
cunit-2.1-3-dfsg/CUnit/Sources/Automated/Automated.c 0000664 0000000 0000000 00000067347 12607012350 0022253 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Implementation of the Automated Test Interface.
*
* Feb 2002 Initial implementation. (AK)
*
* 13/Feb/2002 Added initial automated interface functions to generate
* HTML based Run report. (AK)
*
* 23/Jul/2002 Changed HTML to XML Format file generation for Automated Tests. (AK)
*
* 27/Jul/2003 Fixed a bug which hinders the listing of all failures. (AK)
*
* 17-Jul-2004 New interface, doxygen comments, eliminate compiler warnings,
* automated_run_tests now assigns a generic file name if
* none has been supplied. (JDS)
*
* 30-Apr-2005 Added notification of failed suite cleanup function. (JDS)
*
* 02-May-2006 Added internationalization hooks. (JDS)
*
* 07-May-2011 Added patch to fix broken xml tags dur to spacial characters in the test name. (AK)
*/
/** @file
* Automated test interface with xml result output (implementation).
*/
/** @addtogroup Automated
@{
*/
#include
#include
#include
#include
#include
#include
#include
#include "CUnit.h"
#include "TestDB.h"
#include "MyMem.h"
#include "Util.h"
#include "TestRun.h"
#include "Automated.h"
#include "CUnit_intl.h"
#define MAX_FILENAME_LENGTH 1025
/*=================================================================
* Global / Static data definitions
*=================================================================*/
static CU_pSuite f_pRunningSuite = NULL; /**< The running test suite. */
static char f_szDefaultFileRoot[] = "CUnitAutomated"; /**< Default filename root for automated output files. */
static char f_szTestListFileName[MAX_FILENAME_LENGTH] = ""; /**< Current output file name for the test listing file. */
static char f_szTestResultFileName[MAX_FILENAME_LENGTH] = ""; /**< Current output file name for the test results file. */
static FILE* f_pTestResultFile = NULL; /**< FILE pointer the test results file. */
static CU_BOOL f_bWriting_CUNIT_RUN_SUITE = CU_FALSE; /**< Flag for keeping track of when a closing xml tag is required. */
static CU_BOOL bJUnitXmlOutput = CU_FALSE; /**< Flag for toggling the xml junit output or keeping the original. Off is the default */
static char _gPackageName[50] = "";
/*=================================================================
* Static function forward declarations
*=================================================================*/
static CU_ErrorCode automated_list_all_tests(CU_pTestRegistry pRegistry, const char* szFilename);
static CU_ErrorCode initialize_result_file(const char* szFilename);
static CU_ErrorCode uninitialize_result_file(void);
static void automated_run_all_tests(CU_pTestRegistry pRegistry);
static void automated_test_start_message_handler(const CU_pTest pTest, const CU_pSuite pSuite);
static void automated_test_complete_message_handler(const CU_pTest pTest, const CU_pSuite pSuite, const CU_pFailureRecord pFailure);
static void automated_all_tests_complete_message_handler(const CU_pFailureRecord pFailure);
static void automated_suite_init_failure_message_handler(const CU_pSuite pSuite);
static void automated_suite_cleanup_failure_message_handler(const CU_pSuite pSuite);
/*=================================================================
* Public Interface functions
*=================================================================*/
void CU_automated_run_tests(void)
{
assert(NULL != CU_get_registry());
/* Ensure output makes it to screen at the moment of a SIGSEGV. */
setvbuf(stdout, NULL, _IONBF, 0);
setvbuf(stderr, NULL, _IONBF, 0);
/* if a filename root hasn't been set, use the default one */
if (0 == strlen(f_szTestResultFileName)) {
CU_set_output_filename(f_szDefaultFileRoot);
}
if (CUE_SUCCESS != initialize_result_file(f_szTestResultFileName)) {
fprintf(stderr, "\n%s", _("ERROR - Failed to create/initialize the result file."));
}
else {
/* set up the message handlers for writing xml output */
CU_set_test_start_handler(automated_test_start_message_handler);
CU_set_test_complete_handler(automated_test_complete_message_handler);
CU_set_all_test_complete_handler(automated_all_tests_complete_message_handler);
CU_set_suite_init_failure_handler(automated_suite_init_failure_message_handler);
CU_set_suite_cleanup_failure_handler(automated_suite_cleanup_failure_message_handler);
f_bWriting_CUNIT_RUN_SUITE = CU_FALSE;
automated_run_all_tests(NULL);
if (CUE_SUCCESS != uninitialize_result_file()) {
fprintf(stderr, "\n%s", _("ERROR - Failed to close/uninitialize the result files."));
}
}
}
/*------------------------------------------------------------------------*/
void CU_set_output_filename(const char* szFilenameRoot)
{
const char* szListEnding = "-Listing.xml";
const char* szResultEnding = "-Results.xml";
/* Construct the name for the listing file */
if (NULL != szFilenameRoot) {
strncpy(f_szTestListFileName, szFilenameRoot, MAX_FILENAME_LENGTH - strlen(szListEnding) - 1);
}
else {
strncpy(f_szTestListFileName, f_szDefaultFileRoot, MAX_FILENAME_LENGTH - strlen(szListEnding) - 1);
}
f_szTestListFileName[MAX_FILENAME_LENGTH - strlen(szListEnding) - 1] = '\0';
strcat(f_szTestListFileName, szListEnding);
/* Construct the name for the result file */
if (NULL != szFilenameRoot) {
strncpy(f_szTestResultFileName, szFilenameRoot, MAX_FILENAME_LENGTH - strlen(szResultEnding) - 1);
}
else {
strncpy(f_szTestResultFileName, f_szDefaultFileRoot, MAX_FILENAME_LENGTH - strlen(szResultEnding) - 1);
}
f_szTestResultFileName[MAX_FILENAME_LENGTH - strlen(szResultEnding) - 1] = '\0';
strcat(f_szTestResultFileName, szResultEnding);
}
/*------------------------------------------------------------------------*/
CU_ErrorCode CU_list_tests_to_file()
{
/* if a filename root hasn't been set, use the default one */
if (0 == strlen(f_szTestListFileName)) {
CU_set_output_filename(f_szDefaultFileRoot);
}
return automated_list_all_tests(CU_get_registry(), f_szTestListFileName);
}
/*=================================================================
* Static function implementation
*=================================================================*/
/** Runs the registered tests using the automated interface.
* If non-NULL. the specified registry is set as the active
* registry for running the tests. If NULL, then the default
* CUnit test registry is used. The actual test running is
* performed by CU_run_all_tests().
* @param pRegistry The test registry to run.
*/
static void automated_run_all_tests(CU_pTestRegistry pRegistry)
{
CU_pTestRegistry pOldRegistry = NULL;
assert(NULL != f_pTestResultFile);
f_pRunningSuite = NULL;
if (NULL != pRegistry) {
pOldRegistry = CU_set_registry(pRegistry);
}
if (bJUnitXmlOutput == CU_FALSE) {
fprintf(f_pTestResultFile, " \n");
}
CU_run_all_tests();
if (NULL != pRegistry) {
CU_set_registry(pOldRegistry);
}
}
/*------------------------------------------------------------------------*/
/** Initializes the test results file generated by the automated interface.
* A file stream is opened and header information is written.
*/
static CU_ErrorCode initialize_result_file(const char* szFilename)
{
CU_pRunSummary pRunSummary = CU_get_run_summary();
CU_set_error(CUE_SUCCESS);
if ((NULL == szFilename) || (strlen(szFilename) == 0)) {
CU_set_error(CUE_BAD_FILENAME);
}
else if (NULL == (f_pTestResultFile = fopen(szFilename, "w"))) {
CU_set_error(CUE_FOPEN_FAILED);
}
else {
setvbuf(f_pTestResultFile, NULL, _IONBF, 0);
if (bJUnitXmlOutput == CU_TRUE) {
fprintf(f_pTestResultFile,
"\n"
" \n",
pRunSummary->nTestsFailed,
pRunSummary->nTestsRun);
} else {
fprintf(f_pTestResultFile,
" \n"
" \n"
" \n"
" \n"
" \n");
}
}
return CU_get_error();
}
/*------------------------------------------------------------------------*/
/** Handler function called at start of each test.
* The test result file must have been opened before this
* function is called (i.e. f_pTestResultFile non-NULL).
* @param pTest The test being run (non-NULL).
* @param pSuite The suite containing the test (non-NULL).
*/
static void automated_test_start_message_handler(const CU_pTest pTest, const CU_pSuite pSuite)
{
char *szTempName = NULL;
size_t szTempName_len = 0;
CU_UNREFERENCED_PARAMETER(pTest); /* not currently used */
assert(NULL != pTest);
assert(NULL != pSuite);
assert(NULL != pSuite->pName);
assert(NULL != f_pTestResultFile);
/* write suite close/open tags if this is the 1st test for this szSuite */
if ((NULL == f_pRunningSuite) || (f_pRunningSuite != pSuite)) {
if (CU_TRUE == f_bWriting_CUNIT_RUN_SUITE) {
if (bJUnitXmlOutput == CU_TRUE) {
fprintf(f_pTestResultFile,
" \n");
}
else {
fprintf(f_pTestResultFile,
" \n"
" \n");
}
}
/* translate suite name that may contain XML control characters */
szTempName = (char *)CU_MALLOC((szTempName_len = CU_translated_strlen(pSuite->pName) + 1));
CU_translate_special_characters(pSuite->pName, szTempName, szTempName_len);
if (bJUnitXmlOutput == CU_TRUE) {
fprintf(f_pTestResultFile,
" \n",
0 , /* Errors */
pSuite->uiNumberOfTestsFailed, /* Failures */
pSuite->uiNumberOfTests, /* Tests */
(NULL != szTempName) ? szTempName : ""); /* Name */
} else {
fprintf(f_pTestResultFile,
" \n"
" \n"
" %s \n",
(NULL != szTempName ? szTempName : ""));
}
f_bWriting_CUNIT_RUN_SUITE = CU_TRUE;
f_pRunningSuite = pSuite;
}
if (NULL != szTempName) {
CU_FREE(szTempName);
}
}
/*------------------------------------------------------------------------*/
/** Handler function called at completion of each test.
* @param pTest The test being run (non-NULL).
* @param pSuite The suite containing the test (non-NULL).
* @param pFailure Pointer to the 1st failure record for this test.
*/
static void automated_test_complete_message_handler(const CU_pTest pTest,
const CU_pSuite pSuite,
const CU_pFailureRecord pFailure)
{
char *szTemp = NULL;
size_t szTemp_len = 0;
size_t cur_len = 0;
CU_pFailureRecord pTempFailure = pFailure;
const char *pPackageName = CU_automated_package_name_get();
CU_UNREFERENCED_PARAMETER(pSuite); /* pSuite is not used except in assertion */
assert(NULL != pTest);
assert(NULL != pTest->pName);
assert(NULL != pSuite);
assert(NULL != pSuite->pName);
assert(NULL != f_pTestResultFile);
if (NULL != pTempFailure) {
if(NULL != pTempFailure) {
if (bJUnitXmlOutput == CU_TRUE) {
assert((NULL != pTempFailure->pSuite) && (pTempFailure->pSuite == pSuite));
assert((NULL != pTempFailure->pTest) && (pTempFailure->pTest == pTest));
if (NULL != pTempFailure->strCondition) {
CU_translate_special_characters(pTempFailure->strCondition, szTemp, sizeof(szTemp));
}
else {
szTemp[0] = '\0';
}
fprintf(f_pTestResultFile, " \n",
pPackageName,
pSuite->pName,
(NULL != pTest->pName) ? pTest->pName : "");
fprintf(f_pTestResultFile, " \n", szTemp);
} /* if */
}
while (NULL != pTempFailure) {
assert((NULL != pTempFailure->pSuite) && (pTempFailure->pSuite == pSuite));
assert((NULL != pTempFailure->pTest) && (pTempFailure->pTest == pTest));
/* expand temporary char buffer if need more room */
if (NULL != pTempFailure->strCondition) {
cur_len = CU_translated_strlen(pTempFailure->strCondition) + 1;
}
else {
cur_len = 1;
}
if (cur_len > szTemp_len) {
szTemp_len = cur_len;
if (NULL != szTemp) {
CU_FREE(szTemp);
}
szTemp = (char *)CU_MALLOC(szTemp_len);
}
/* convert xml entities in strCondition (if present) */
if (NULL != pTempFailure->strCondition) {
CU_translate_special_characters(pTempFailure->strCondition, szTemp, szTemp_len);
}
else {
szTemp[0] = '\0';
}
if (bJUnitXmlOutput == CU_TRUE) {
fprintf(f_pTestResultFile, " Condition: %s\n", szTemp);
fprintf(f_pTestResultFile, " File : %s\n", (NULL != pTempFailure->strFileName) ? pTempFailure->strFileName : "");
fprintf(f_pTestResultFile, " Line : %d\n", pTempFailure->uiLineNumber);
} else {
fprintf(f_pTestResultFile,
" \n"
" \n"
" %s \n"
" %s \n"
" %u \n"
" %s \n"
" \n"
" \n",
pTest->pName,
(NULL != pTempFailure->strFileName) ? pTempFailure->strFileName : "",
pTempFailure->uiLineNumber,
szTemp);
} /* if */
pTempFailure = pTempFailure->pNext;
} /* while */
if (bJUnitXmlOutput == CU_TRUE) {
fprintf(f_pTestResultFile, " \n");
fprintf(f_pTestResultFile, " \n");
} /* if */
}
else {
if (bJUnitXmlOutput == CU_TRUE) {
fprintf(f_pTestResultFile, " \n",
pPackageName,
pSuite->pName,
(NULL != pTest->pName) ? pTest->pName : "");
} else {
fprintf(f_pTestResultFile,
" \n"
" \n"
" %s \n"
" \n"
" \n",
pTest->pName);
}
}
if (NULL != szTemp) {
CU_FREE(szTemp);
}
}
/*------------------------------------------------------------------------*/
/** Handler function called at completion of all tests in a suite.
* @param pFailure Pointer to the test failure record list.
*/
static void automated_all_tests_complete_message_handler(const CU_pFailureRecord pFailure)
{
CU_pTestRegistry pRegistry = CU_get_registry();
CU_pRunSummary pRunSummary = CU_get_run_summary();
CU_UNREFERENCED_PARAMETER(pFailure); /* not used */
assert(NULL != pRegistry);
assert(NULL != pRunSummary);
assert(NULL != f_pTestResultFile);
if ((NULL != f_pRunningSuite) && (CU_TRUE == f_bWriting_CUNIT_RUN_SUITE)) {
if (bJUnitXmlOutput == CU_FALSE) {
fprintf(f_pTestResultFile,
" \n"
" \n");
}
}
if (bJUnitXmlOutput == CU_FALSE) {
fprintf(f_pTestResultFile,
" \n"
" \n");
fprintf(f_pTestResultFile,
" \n"
" %s \n"
" %u \n"
" %u \n"
" - NA - \n"
" %u \n"
" %u \n"
" \n",
_("Suites"),
pRegistry->uiNumberOfSuites,
pRunSummary->nSuitesRun,
pRunSummary->nSuitesFailed,
pRunSummary->nSuitesInactive);
fprintf(f_pTestResultFile,
" \n"
" %s \n"
" %u \n"
" %u \n"
" %u \n"
" %u \n"
" %u \n"
" \n",
_("Test Cases"),
pRegistry->uiNumberOfTests,
pRunSummary->nTestsRun,
pRunSummary->nTestsRun - pRunSummary->nTestsFailed,
pRunSummary->nTestsFailed,
pRunSummary->nTestsInactive);
fprintf(f_pTestResultFile,
" \n"
" %s \n"
" %u \n"
" %u \n"
" %u \n"
" %u \n"
" %s \n"
" \n"
" \n",
_("Assertions"),
pRunSummary->nAsserts,
pRunSummary->nAsserts,
pRunSummary->nAsserts - pRunSummary->nAssertsFailed,
pRunSummary->nAssertsFailed,
_("n/a"));
}
}
/*------------------------------------------------------------------------*/
/** Handler function called when suite initialization fails.
* @param pSuite The suite for which initialization failed.
*/
static void automated_suite_init_failure_message_handler(const CU_pSuite pSuite)
{
assert(NULL != pSuite);
assert(NULL != pSuite->pName);
assert(NULL != f_pTestResultFile);
if (CU_TRUE == f_bWriting_CUNIT_RUN_SUITE) {
if (bJUnitXmlOutput == CU_TRUE) {
f_bWriting_CUNIT_RUN_SUITE = CU_FALSE;
fprintf(f_pTestResultFile,
" \n");
} else {
fprintf(f_pTestResultFile,
" \n"
" \n");
f_bWriting_CUNIT_RUN_SUITE = CU_FALSE;
}
}
if (bJUnitXmlOutput == CU_FALSE) {
fprintf(f_pTestResultFile,
" \n"
" \n"
" %s \n"
" %s \n"
" \n"
" \n",
pSuite->pName,
_("Suite Initialization Failed"));
}
}
/*------------------------------------------------------------------------*/
/** Handler function called when suite cleanup fails.
* @param pSuite The suite for which cleanup failed.
*/
static void automated_suite_cleanup_failure_message_handler(const CU_pSuite pSuite)
{
assert(NULL != pSuite);
assert(NULL != pSuite->pName);
assert(NULL != f_pTestResultFile);
if (CU_TRUE == f_bWriting_CUNIT_RUN_SUITE) {
if (bJUnitXmlOutput == CU_TRUE) {
f_bWriting_CUNIT_RUN_SUITE = CU_FALSE;
fprintf(f_pTestResultFile,
" \n");
} else {
fprintf(f_pTestResultFile,
" \n"
" \n");
f_bWriting_CUNIT_RUN_SUITE = CU_FALSE;
}
}
if (bJUnitXmlOutput == CU_TRUE) {
fprintf(f_pTestResultFile,
" \n"
" \n"
" \"Cleanup of suite failed.\" \n"
" \n"
" fail \n"
" \"Cleanup of suite failed.\" \n"
" SuiteCleanup \n"
" \n"
" \n"
" \n",
(NULL != pSuite->pName) ? pSuite->pName : "");
} else {
fprintf(f_pTestResultFile,
" \n"
" \n"
" %s \n"
" %s \n"
" \n"
" \n",
pSuite->pName,
_("Suite Cleanup Failed"));
}
}
/*------------------------------------------------------------------------*/
/** Finalizes and closes the results output file generated
* by the automated interface.
*/
static CU_ErrorCode uninitialize_result_file(void)
{
char* szTime;
time_t tTime = 0;
assert(NULL != f_pTestResultFile);
CU_set_error(CUE_SUCCESS);
time(&tTime);
szTime = ctime(&tTime);
fprintf(f_pTestResultFile,
" %s" CU_VERSION " - %s \n"
"",
_("File Generated By CUnit v"),
(NULL != szTime) ? szTime : "");
if (0 != fclose(f_pTestResultFile)) {
CU_set_error(CUE_FCLOSE_FAILED);
}
return CU_get_error();
}
/*------------------------------------------------------------------------*/
/** Generates an xml listing of all tests in all suites for the
* specified test registry. The output is directed to a file
* having the specified name.
* @param pRegistry Test registry for which to generate list (non-NULL).
* @param szFilename Non-NULL, non-empty string containing name for
* listing file.
* @return A CU_ErrorCode indicating the error status.
*/
static CU_ErrorCode automated_list_all_tests(CU_pTestRegistry pRegistry, const char* szFilename)
{
CU_pSuite pSuite = NULL;
CU_pTest pTest = NULL;
FILE* pTestListFile = NULL;
char* szTime;
time_t tTime = 0;
CU_set_error(CUE_SUCCESS);
if (NULL == pRegistry) {
CU_set_error(CUE_NOREGISTRY);
}
else if ((NULL == szFilename) || (0 == strlen(szFilename))) {
CU_set_error(CUE_BAD_FILENAME);
}
else if (NULL == (pTestListFile = fopen(f_szTestListFileName, "w"))) {
CU_set_error(CUE_FOPEN_FAILED);
}
else {
setvbuf(pTestListFile, NULL, _IONBF, 0);
fprintf(pTestListFile,
" \n"
" \n"
" \n"
" \n"
" \n"
" \n");
fprintf(pTestListFile,
" \n"
" %s \n"
" %u \n"
" \n",
_("Total Number of Suites"),
pRegistry->uiNumberOfSuites);
fprintf(pTestListFile,
" \n"
" %s \n"
" %u \n"
" \n"
" \n",
_("Total Number of Test Cases"),
pRegistry->uiNumberOfTests);
fprintf(pTestListFile,
" \n");
pSuite = pRegistry->pSuite;
while (NULL != pSuite) {
assert(NULL != pSuite->pName);
pTest = pSuite->pTest;
fprintf(pTestListFile,
" \n"
" \n"
" %s \n"
" %s \n"
" %s \n"
" %s \n"
" %u \n"
" \n",
pSuite->pName,
(NULL != pSuite->pInitializeFunc) ? _("Yes") : _("No"),
(NULL != pSuite->pCleanupFunc) ? _("Yes") : _("No"),
(CU_FALSE != pSuite->fActive) ? _("Yes") : _("No"),
pSuite->uiNumberOfTests);
fprintf(pTestListFile,
" \n");
while (NULL != pTest) {
assert(NULL != pTest->pName);
fprintf(pTestListFile,
" \n"
" %s \n"
" %s \n"
" \n",
pTest->pName,
(CU_FALSE != pSuite->fActive) ? _("Yes") : _("No"));
pTest = pTest->pNext;
}
fprintf(pTestListFile,
" \n"
" \n");
pSuite = pSuite->pNext;
}
fprintf(pTestListFile, " \n");
time(&tTime);
szTime = ctime(&tTime);
fprintf(pTestListFile,
" %s" CU_VERSION " - %s \n"
"",
_("File Generated By CUnit v"),
(NULL != szTime) ? szTime : "");
if (0 != fclose(pTestListFile)) {
CU_set_error(CUE_FCLOSE_FAILED);
}
}
return CU_get_error();
}
/*------------------------------------------------------------------------*/
/** Enable or Disable the XML output format to JUnit-like. When enabled (CU_TRUE)
* then the Results xml that is produced can be read by cruisecontrol and displayed
* in the test results page.
*/
void CU_automated_enable_junit_xml(CU_BOOL bFlag)
{
bJUnitXmlOutput = bFlag;
}
/** @} */
/*------------------------------------------------------------------------*/
/** Set tests suites package name
*/
void CU_automated_package_name_set(const char *pName)
{
memset(_gPackageName, 0, sizeof(_gPackageName));
/* Is object valid? */
if (pName) {
strncpy(_gPackageName, pName, sizeof(_gPackageName) - 1);
_gPackageName[sizeof(_gPackageName) - 1] = '\0';
}
}
/*------------------------------------------------------------------------*/
/** Get tests suites package name
*/
const char *CU_automated_package_name_get()
{
return _gPackageName;
}
/** @} */
cunit-2.1-3-dfsg/CUnit/Sources/Automated/Makefile.am 0000664 0000000 0000000 00000000277 12607012350 0022205 0 ustar 00root root 0000000 0000000 ## Process this file with automake to produce Makefile.in
AM_CPPFLAGS = -I$(top_srcdir)/CUnit/Headers
noinst_LTLIBRARIES = libcunitautomated.la
libcunitautomated_la_SOURCES = \
Automated.c
cunit-2.1-3-dfsg/CUnit/Sources/Automated/Makefile.in 0000664 0000000 0000000 00000042642 12607012350 0022220 0 ustar 00root root 0000000 0000000 # Makefile.in generated by automake 1.14 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = CUnit/Sources/Automated
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LTLIBRARIES = $(noinst_LTLIBRARIES)
libcunitautomated_la_LIBADD =
am_libcunitautomated_la_OBJECTS = Automated.lo
libcunitautomated_la_OBJECTS = $(am_libcunitautomated_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_@AM_V@)
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
am__v_CC_0 = @echo " CC " $@;
am__v_CC_1 =
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(libcunitautomated_la_SOURCES)
DIST_SOURCES = $(libcunitautomated_la_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_AUTOMATED = @BUILD_AUTOMATED@
BUILD_BASIC = @BUILD_BASIC@
BUILD_CONSOLE = @BUILD_CONSOLE@
BUILD_CURSES = @BUILD_CURSES@
BUILD_EXAMPLES = @BUILD_EXAMPLES@
BUILD_TEST = @BUILD_TEST@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CURSES_LIB = @CURSES_LIB@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_DEBUG = @ENABLE_DEBUG@
ENABLE_DEPRECATED = @ENABLE_DEPRECATED@
ENABLE_MEMTRACE = @ENABLE_MEMTRACE@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBTOOL_AGE = @LIBTOOL_AGE@
LIBTOOL_CURRENT = @LIBTOOL_CURRENT@
LIBTOOL_REVISION = @LIBTOOL_REVISION@
LIBTOOL_SUFFIX = @LIBTOOL_SUFFIX@
LIBTOOL_SUFFIX1 = @LIBTOOL_SUFFIX1@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
RELEASE = @RELEASE@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
VERSION_MAJOR = @VERSION_MAJOR@
VERSION_MINOR = @VERSION_MINOR@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AM_CPPFLAGS = -I$(top_srcdir)/CUnit/Headers
noinst_LTLIBRARIES = libcunitautomated.la
libcunitautomated_la_SOURCES = \
Automated.c
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu CUnit/Sources/Automated/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu CUnit/Sources/Automated/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
clean-noinstLTLIBRARIES:
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@list='$(noinst_LTLIBRARIES)'; \
locs=`for p in $$list; do echo $$p; done | \
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
sort -u`; \
test -z "$$locs" || { \
echo rm -f $${locs}; \
rm -f $${locs}; \
}
libcunitautomated.la: $(libcunitautomated_la_OBJECTS) $(libcunitautomated_la_DEPENDENCIES) $(EXTRA_libcunitautomated_la_DEPENDENCIES)
$(AM_V_CCLD)$(LINK) $(libcunitautomated_la_OBJECTS) $(libcunitautomated_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Automated.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-am
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-am
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(LTLIBRARIES)
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am:
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
cunit-2.1-3-dfsg/CUnit/Sources/Basic/ 0000775 0000000 0000000 00000000000 12607012350 0017241 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/CUnit/Sources/Basic/.deps/ 0000775 0000000 0000000 00000000000 12607012350 0020252 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/CUnit/Sources/Basic/.deps/Basic.Plo 0000664 0000000 0000000 00000012600 12607012350 0021746 0 ustar 00root root 0000000 0000000 Basic.lo: Basic.c /usr/include/stdio.h /usr/include/sys/cdefs.h \
/usr/include/sys/_symbol_aliasing.h \
/usr/include/sys/_posix_availability.h /usr/include/Availability.h \
/usr/include/AvailabilityInternal.h /usr/include/_types.h \
/usr/include/sys/_types.h /usr/include/machine/_types.h \
/usr/include/i386/_types.h /usr/include/sys/_types/_va_list.h \
/usr/include/sys/_types/_size_t.h /usr/include/sys/_types/_null.h \
/usr/include/sys/_types/_off_t.h /usr/include/sys/_types/_ssize_t.h \
/usr/include/secure/_stdio.h /usr/include/secure/_common.h \
/usr/include/stdlib.h /usr/include/sys/wait.h \
/usr/include/sys/_types/_pid_t.h /usr/include/sys/_types/_id_t.h \
/usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \
/usr/include/machine/signal.h /usr/include/i386/signal.h \
/usr/include/machine/_mcontext.h /usr/include/i386/_mcontext.h \
/usr/include/mach/i386/_structs.h \
/usr/include/sys/_types/_sigaltstack.h \
/usr/include/sys/_types/_ucontext.h \
/usr/include/sys/_types/_pthread_attr_t.h \
/usr/include/sys/_types/_sigset_t.h /usr/include/sys/_types/_uid_t.h \
/usr/include/sys/resource.h \
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h \
/usr/include/stdint.h /usr/include/sys/_types/_int8_t.h \
/usr/include/sys/_types/_int16_t.h /usr/include/sys/_types/_int32_t.h \
/usr/include/sys/_types/_int64_t.h /usr/include/_types/_uint8_t.h \
/usr/include/_types/_uint16_t.h /usr/include/_types/_uint32_t.h \
/usr/include/_types/_uint64_t.h /usr/include/sys/_types/_intptr_t.h \
/usr/include/sys/_types/_uintptr_t.h /usr/include/_types/_intmax_t.h \
/usr/include/_types/_uintmax_t.h /usr/include/sys/_types/_timeval.h \
/usr/include/machine/endian.h /usr/include/i386/endian.h \
/usr/include/sys/_endian.h /usr/include/libkern/_OSByteOrder.h \
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
/usr/include/sys/_types/_ct_rune_t.h /usr/include/sys/_types/_rune_t.h \
/usr/include/sys/_types/_wchar_t.h /usr/include/machine/types.h \
/usr/include/i386/types.h /usr/include/sys/_types/___offsetof.h \
/usr/include/sys/_types/_dev_t.h /usr/include/sys/_types/_mode_t.h \
/usr/include/ctype.h /usr/include/runetype.h \
/usr/include/sys/_types/_wint_t.h /usr/include/assert.h \
/usr/include/string.h /usr/include/strings.h \
/usr/include/secure/_string.h ../../../CUnit/Headers/CUnit.h \
/usr/include/math.h ../../../CUnit/Headers/CUError.h \
/usr/include/errno.h /usr/include/sys/errno.h \
../../../CUnit/Headers/TestDB.h /usr/include/setjmp.h \
../../../CUnit/Headers/TestRun.h ../../../CUnit/Headers/Util.h \
../../../CUnit/Headers/Basic.h ../../../CUnit/Headers/CUnit_intl.h
/usr/include/stdio.h:
/usr/include/sys/cdefs.h:
/usr/include/sys/_symbol_aliasing.h:
/usr/include/sys/_posix_availability.h:
/usr/include/Availability.h:
/usr/include/AvailabilityInternal.h:
/usr/include/_types.h:
/usr/include/sys/_types.h:
/usr/include/machine/_types.h:
/usr/include/i386/_types.h:
/usr/include/sys/_types/_va_list.h:
/usr/include/sys/_types/_size_t.h:
/usr/include/sys/_types/_null.h:
/usr/include/sys/_types/_off_t.h:
/usr/include/sys/_types/_ssize_t.h:
/usr/include/secure/_stdio.h:
/usr/include/secure/_common.h:
/usr/include/stdlib.h:
/usr/include/sys/wait.h:
/usr/include/sys/_types/_pid_t.h:
/usr/include/sys/_types/_id_t.h:
/usr/include/sys/signal.h:
/usr/include/sys/appleapiopts.h:
/usr/include/machine/signal.h:
/usr/include/i386/signal.h:
/usr/include/machine/_mcontext.h:
/usr/include/i386/_mcontext.h:
/usr/include/mach/i386/_structs.h:
/usr/include/sys/_types/_sigaltstack.h:
/usr/include/sys/_types/_ucontext.h:
/usr/include/sys/_types/_pthread_attr_t.h:
/usr/include/sys/_types/_sigset_t.h:
/usr/include/sys/_types/_uid_t.h:
/usr/include/sys/resource.h:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h:
/usr/include/stdint.h:
/usr/include/sys/_types/_int8_t.h:
/usr/include/sys/_types/_int16_t.h:
/usr/include/sys/_types/_int32_t.h:
/usr/include/sys/_types/_int64_t.h:
/usr/include/_types/_uint8_t.h:
/usr/include/_types/_uint16_t.h:
/usr/include/_types/_uint32_t.h:
/usr/include/_types/_uint64_t.h:
/usr/include/sys/_types/_intptr_t.h:
/usr/include/sys/_types/_uintptr_t.h:
/usr/include/_types/_intmax_t.h:
/usr/include/_types/_uintmax_t.h:
/usr/include/sys/_types/_timeval.h:
/usr/include/machine/endian.h:
/usr/include/i386/endian.h:
/usr/include/sys/_endian.h:
/usr/include/libkern/_OSByteOrder.h:
/usr/include/libkern/i386/_OSByteOrder.h:
/usr/include/alloca.h:
/usr/include/sys/_types/_ct_rune_t.h:
/usr/include/sys/_types/_rune_t.h:
/usr/include/sys/_types/_wchar_t.h:
/usr/include/machine/types.h:
/usr/include/i386/types.h:
/usr/include/sys/_types/___offsetof.h:
/usr/include/sys/_types/_dev_t.h:
/usr/include/sys/_types/_mode_t.h:
/usr/include/ctype.h:
/usr/include/runetype.h:
/usr/include/sys/_types/_wint_t.h:
/usr/include/assert.h:
/usr/include/string.h:
/usr/include/strings.h:
/usr/include/secure/_string.h:
../../../CUnit/Headers/CUnit.h:
/usr/include/math.h:
../../../CUnit/Headers/CUError.h:
/usr/include/errno.h:
/usr/include/sys/errno.h:
../../../CUnit/Headers/TestDB.h:
/usr/include/setjmp.h:
../../../CUnit/Headers/TestRun.h:
../../../CUnit/Headers/Util.h:
../../../CUnit/Headers/Basic.h:
../../../CUnit/Headers/CUnit_intl.h:
cunit-2.1-3-dfsg/CUnit/Sources/Basic/Basic.c 0000664 0000000 0000000 00000026376 12607012350 0020444 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2004-2006 Jerry St.Clair, Anil Kumar
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Implementation for basic test runner interface.
*
* 11-Aug-2004 Initial implementation of basic test runner interface. (JDS)
*
* 8-Jan-2005 Fixed reporting bug (bug report cunit-Bugs-1093861). (JDS)
*
* 30-Apr-2005 Added notification of suite cleanup failure. (JDS)
*
* 02-May-2006 Added internationalization hooks. (JDS)
*/
/** @file
* Basic interface with output to stdout.
*/
/** @addtogroup Basic
* @{
*/
#include
#include
#include
#include
#include
#include "CUnit.h"
#include "TestDB.h"
#include "Util.h"
#include "TestRun.h"
#include "Basic.h"
#include "CUnit_intl.h"
/*=================================================================
* Global/Static Definitions
*=================================================================*/
/** Pointer to the currently running suite. */
static CU_pSuite f_pRunningSuite = NULL;
/** Current run mode. */
static CU_BasicRunMode f_run_mode = CU_BRM_NORMAL;
/*=================================================================
* Forward declaration of module functions *
*=================================================================*/
static CU_ErrorCode basic_initialize(void);
static CU_ErrorCode basic_run_all_tests(CU_pTestRegistry pRegistry);
static CU_ErrorCode basic_run_suite(CU_pSuite pSuite);
static CU_ErrorCode basic_run_single_test(CU_pSuite pSuite, CU_pTest pTest);
static void basic_test_start_message_handler(const CU_pTest pTest, const CU_pSuite pSuite);
static void basic_test_complete_message_handler(const CU_pTest pTest, const CU_pSuite pSuite, const CU_pFailureRecord pFailureList);
static void basic_all_tests_complete_message_handler(const CU_pFailureRecord pFailure);
static void basic_suite_init_failure_message_handler(const CU_pSuite pSuite);
static void basic_suite_cleanup_failure_message_handler(const CU_pSuite pSuite);
/*=================================================================
* Public Interface functions
*=================================================================*/
CU_ErrorCode CU_basic_run_tests(void)
{
CU_ErrorCode error;
if (NULL == CU_get_registry()) {
if (CU_BRM_SILENT != f_run_mode)
fprintf(stderr, "\n\n%s\n", _("FATAL ERROR - Test registry is not initialized."));
error = CUE_NOREGISTRY;
}
else if (CUE_SUCCESS == (error = basic_initialize()))
error = basic_run_all_tests(NULL);
return error;
}
/*------------------------------------------------------------------------*/
CU_ErrorCode CU_basic_run_suite(CU_pSuite pSuite)
{
CU_ErrorCode error;
if (NULL == pSuite)
error = CUE_NOSUITE;
else if (CUE_SUCCESS == (error = basic_initialize()))
error = basic_run_suite(pSuite);
return error;
}
/*------------------------------------------------------------------------*/
CU_ErrorCode CU_basic_run_test(CU_pSuite pSuite, CU_pTest pTest)
{
CU_ErrorCode error;
if (NULL == pSuite)
error = CUE_NOSUITE;
else if (NULL == pTest)
error = CUE_NOTEST;
else if (CUE_SUCCESS == (error = basic_initialize()))
error = basic_run_single_test(pSuite, pTest);
return error;
}
/*------------------------------------------------------------------------*/
void CU_basic_set_mode(CU_BasicRunMode mode)
{
f_run_mode = mode;
}
/*------------------------------------------------------------------------*/
CU_BasicRunMode CU_basic_get_mode(void)
{
return f_run_mode;
}
/*------------------------------------------------------------------------*/
void CU_basic_show_failures(CU_pFailureRecord pFailure)
{
int i;
for (i = 1 ; (NULL != pFailure) ; pFailure = pFailure->pNext, i++) {
fprintf(stdout, "\n %d. %s:%u - %s", i,
(NULL != pFailure->strFileName) ? pFailure->strFileName : "",
pFailure->uiLineNumber,
(NULL != pFailure->strCondition) ? pFailure->strCondition : "");
}
}
/*=================================================================
* Static module functions
*=================================================================*/
/** Performs inialization actions for the basic interface.
* This includes setting output to unbuffered, printing a
* welcome message, and setting the test run handlers.
* @return An error code indicating the framework error condition.
*/
static CU_ErrorCode basic_initialize(void)
{
/* Unbuffered output so everything reaches the screen */
setvbuf(stdout, NULL, _IONBF, 0);
setvbuf(stderr, NULL, _IONBF, 0);
CU_set_error(CUE_SUCCESS);
if (CU_BRM_SILENT != f_run_mode)
fprintf(stdout, "\n\n %s" CU_VERSION
"\n %s\n\n",
_("CUnit - A unit testing framework for C - Version "),
_("http://cunit.sourceforge.net/"));
CU_set_test_start_handler(basic_test_start_message_handler);
CU_set_test_complete_handler(basic_test_complete_message_handler);
CU_set_all_test_complete_handler(basic_all_tests_complete_message_handler);
CU_set_suite_init_failure_handler(basic_suite_init_failure_message_handler);
CU_set_suite_cleanup_failure_handler(basic_suite_cleanup_failure_message_handler);
return CU_get_error();
}
/*------------------------------------------------------------------------*/
/** Runs all tests within the basic interface.
* If non-NULL, the test registry is changed to the specified registry
* before running the tests, and reset to the original registry when
* done. If NULL, the default CUnit test registry will be used.
* @param pRegistry The CU_pTestRegistry containing the tests
* to be run. If NULL, use the default registry.
* @return An error code indicating the error status
* during the test run.
*/
static CU_ErrorCode basic_run_all_tests(CU_pTestRegistry pRegistry)
{
CU_pTestRegistry pOldRegistry = NULL;
CU_ErrorCode result;
f_pRunningSuite = NULL;
if (NULL != pRegistry)
pOldRegistry = CU_set_registry(pRegistry);
result = CU_run_all_tests();
if (NULL != pRegistry)
CU_set_registry(pOldRegistry);
return result;
}
/*------------------------------------------------------------------------*/
/** Runs a specified suite within the basic interface.
* @param pSuite The suite to be run (non-NULL).
* @return An error code indicating the error status
* during the test run.
*/
static CU_ErrorCode basic_run_suite(CU_pSuite pSuite)
{
f_pRunningSuite = NULL;
return CU_run_suite(pSuite);
}
/*------------------------------------------------------------------------*/
/** Runs a single test for the specified suite within
* the console interface.
* @param pSuite The suite containing the test to be run (non-NULL).
* @param pTest The test to be run (non-NULL).
* @return An error code indicating the error status
* during the test run.
*/
static CU_ErrorCode basic_run_single_test(CU_pSuite pSuite, CU_pTest pTest)
{
f_pRunningSuite = NULL;
return CU_run_test(pSuite, pTest);
}
/*------------------------------------------------------------------------*/
/** Handler function called at start of each test.
* @param pTest The test being run.
* @param pSuite The suite containing the test.
*/
static void basic_test_start_message_handler(const CU_pTest pTest, const CU_pSuite pSuite)
{
assert(NULL != pSuite);
assert(NULL != pTest);
if (CU_BRM_VERBOSE == f_run_mode) {
assert(NULL != pTest->pName);
if ((NULL == f_pRunningSuite) || (f_pRunningSuite != pSuite)) {
assert(NULL != pSuite->pName);
fprintf(stdout, "\n%s: %s", _("Suite"), pSuite->pName);
fprintf(stdout, "\n %s: %s ...", _("Test"), pTest->pName);
f_pRunningSuite = pSuite;
}
else {
fprintf(stdout, "\n %s: %s ...", _("Test"), pTest->pName);
}
}
}
/*------------------------------------------------------------------------*/
/** Handler function called at completion of each test.
* @param pTest The test being run.
* @param pSuite The suite containing the test.
* @param pFailure Pointer to the 1st failure record for this test.
*/
static void basic_test_complete_message_handler(const CU_pTest pTest,
const CU_pSuite pSuite,
const CU_pFailureRecord pFailureList)
{
CU_pFailureRecord pFailure = pFailureList;
int i;
assert(NULL != pSuite);
assert(NULL != pTest);
if (NULL == pFailure) {
if (CU_BRM_VERBOSE == f_run_mode) {
fprintf(stdout, _("passed"));
}
}
else {
switch (f_run_mode) {
case CU_BRM_VERBOSE:
fprintf(stdout, _("FAILED"));
break;
case CU_BRM_NORMAL:
assert(NULL != pSuite->pName);
assert(NULL != pTest->pName);
fprintf(stdout, _("\nSuite %s, Test %s had failures:"), pSuite->pName, pTest->pName);
break;
default: /* gcc wants all enums covered. ok. */
break;
}
if (CU_BRM_SILENT != f_run_mode) {
for (i = 1 ; (NULL != pFailure) ; pFailure = pFailure->pNext, i++) {
fprintf(stdout, "\n %d. %s:%u - %s", i,
(NULL != pFailure->strFileName) ? pFailure->strFileName : "",
pFailure->uiLineNumber,
(NULL != pFailure->strCondition) ? pFailure->strCondition : "");
}
}
}
}
/*------------------------------------------------------------------------*/
/** Handler function called at completion of all tests in a suite.
* @param pFailure Pointer to the test failure record list.
*/
static void basic_all_tests_complete_message_handler(const CU_pFailureRecord pFailure)
{
CU_UNREFERENCED_PARAMETER(pFailure); /* not used in basic interface */
printf("\n\n");
CU_print_run_results(stdout);
printf("\n");
}
/*------------------------------------------------------------------------*/
/** Handler function called when suite initialization fails.
* @param pSuite The suite for which initialization failed.
*/
static void basic_suite_init_failure_message_handler(const CU_pSuite pSuite)
{
assert(NULL != pSuite);
assert(NULL != pSuite->pName);
if (CU_BRM_SILENT != f_run_mode)
fprintf(stdout, _("\nWARNING - Suite initialization failed for '%s'."), pSuite->pName);
}
/*------------------------------------------------------------------------*/
/** Handler function called when suite cleanup fails.
* @param pSuite The suite for which cleanup failed.
*/
static void basic_suite_cleanup_failure_message_handler(const CU_pSuite pSuite)
{
assert(NULL != pSuite);
assert(NULL != pSuite->pName);
if (CU_BRM_SILENT != f_run_mode)
fprintf(stdout, _("\nWARNING - Suite cleanup failed for '%s'."), pSuite->pName);
}
/** @} */
cunit-2.1-3-dfsg/CUnit/Sources/Basic/Makefile.am 0000664 0000000 0000000 00000000263 12607012350 0021276 0 ustar 00root root 0000000 0000000 ## Process this file with automake to produce Makefile.in
AM_CPPFLAGS = -I$(top_srcdir)/CUnit/Headers
noinst_LTLIBRARIES = libcunitbasic.la
libcunitbasic_la_SOURCES = \
Basic.c
cunit-2.1-3-dfsg/CUnit/Sources/Basic/Makefile.in 0000664 0000000 0000000 00000042522 12607012350 0021313 0 ustar 00root root 0000000 0000000 # Makefile.in generated by automake 1.14 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = CUnit/Sources/Basic
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LTLIBRARIES = $(noinst_LTLIBRARIES)
libcunitbasic_la_LIBADD =
am_libcunitbasic_la_OBJECTS = Basic.lo
libcunitbasic_la_OBJECTS = $(am_libcunitbasic_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_@AM_V@)
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
am__v_CC_0 = @echo " CC " $@;
am__v_CC_1 =
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(libcunitbasic_la_SOURCES)
DIST_SOURCES = $(libcunitbasic_la_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_AUTOMATED = @BUILD_AUTOMATED@
BUILD_BASIC = @BUILD_BASIC@
BUILD_CONSOLE = @BUILD_CONSOLE@
BUILD_CURSES = @BUILD_CURSES@
BUILD_EXAMPLES = @BUILD_EXAMPLES@
BUILD_TEST = @BUILD_TEST@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CURSES_LIB = @CURSES_LIB@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_DEBUG = @ENABLE_DEBUG@
ENABLE_DEPRECATED = @ENABLE_DEPRECATED@
ENABLE_MEMTRACE = @ENABLE_MEMTRACE@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBTOOL_AGE = @LIBTOOL_AGE@
LIBTOOL_CURRENT = @LIBTOOL_CURRENT@
LIBTOOL_REVISION = @LIBTOOL_REVISION@
LIBTOOL_SUFFIX = @LIBTOOL_SUFFIX@
LIBTOOL_SUFFIX1 = @LIBTOOL_SUFFIX1@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
RELEASE = @RELEASE@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
VERSION_MAJOR = @VERSION_MAJOR@
VERSION_MINOR = @VERSION_MINOR@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AM_CPPFLAGS = -I$(top_srcdir)/CUnit/Headers
noinst_LTLIBRARIES = libcunitbasic.la
libcunitbasic_la_SOURCES = \
Basic.c
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu CUnit/Sources/Basic/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu CUnit/Sources/Basic/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
clean-noinstLTLIBRARIES:
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@list='$(noinst_LTLIBRARIES)'; \
locs=`for p in $$list; do echo $$p; done | \
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
sort -u`; \
test -z "$$locs" || { \
echo rm -f $${locs}; \
rm -f $${locs}; \
}
libcunitbasic.la: $(libcunitbasic_la_OBJECTS) $(libcunitbasic_la_DEPENDENCIES) $(EXTRA_libcunitbasic_la_DEPENDENCIES)
$(AM_V_CCLD)$(LINK) $(libcunitbasic_la_OBJECTS) $(libcunitbasic_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Basic.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-am
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-am
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(LTLIBRARIES)
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am:
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
cunit-2.1-3-dfsg/CUnit/Sources/Console/ 0000775 0000000 0000000 00000000000 12607012350 0017622 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/CUnit/Sources/Console/.deps/ 0000775 0000000 0000000 00000000000 12607012350 0020633 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/CUnit/Sources/Console/.deps/Console.Plo 0000664 0000000 0000000 00000012610 12607012350 0022711 0 ustar 00root root 0000000 0000000 Console.lo: Console.c /usr/include/stdio.h /usr/include/sys/cdefs.h \
/usr/include/sys/_symbol_aliasing.h \
/usr/include/sys/_posix_availability.h /usr/include/Availability.h \
/usr/include/AvailabilityInternal.h /usr/include/_types.h \
/usr/include/sys/_types.h /usr/include/machine/_types.h \
/usr/include/i386/_types.h /usr/include/sys/_types/_va_list.h \
/usr/include/sys/_types/_size_t.h /usr/include/sys/_types/_null.h \
/usr/include/sys/_types/_off_t.h /usr/include/sys/_types/_ssize_t.h \
/usr/include/secure/_stdio.h /usr/include/secure/_common.h \
/usr/include/stdlib.h /usr/include/sys/wait.h \
/usr/include/sys/_types/_pid_t.h /usr/include/sys/_types/_id_t.h \
/usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \
/usr/include/machine/signal.h /usr/include/i386/signal.h \
/usr/include/machine/_mcontext.h /usr/include/i386/_mcontext.h \
/usr/include/mach/i386/_structs.h \
/usr/include/sys/_types/_sigaltstack.h \
/usr/include/sys/_types/_ucontext.h \
/usr/include/sys/_types/_pthread_attr_t.h \
/usr/include/sys/_types/_sigset_t.h /usr/include/sys/_types/_uid_t.h \
/usr/include/sys/resource.h \
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h \
/usr/include/stdint.h /usr/include/sys/_types/_int8_t.h \
/usr/include/sys/_types/_int16_t.h /usr/include/sys/_types/_int32_t.h \
/usr/include/sys/_types/_int64_t.h /usr/include/_types/_uint8_t.h \
/usr/include/_types/_uint16_t.h /usr/include/_types/_uint32_t.h \
/usr/include/_types/_uint64_t.h /usr/include/sys/_types/_intptr_t.h \
/usr/include/sys/_types/_uintptr_t.h /usr/include/_types/_intmax_t.h \
/usr/include/_types/_uintmax_t.h /usr/include/sys/_types/_timeval.h \
/usr/include/machine/endian.h /usr/include/i386/endian.h \
/usr/include/sys/_endian.h /usr/include/libkern/_OSByteOrder.h \
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
/usr/include/sys/_types/_ct_rune_t.h /usr/include/sys/_types/_rune_t.h \
/usr/include/sys/_types/_wchar_t.h /usr/include/machine/types.h \
/usr/include/i386/types.h /usr/include/sys/_types/___offsetof.h \
/usr/include/sys/_types/_dev_t.h /usr/include/sys/_types/_mode_t.h \
/usr/include/ctype.h /usr/include/runetype.h \
/usr/include/sys/_types/_wint_t.h /usr/include/assert.h \
/usr/include/string.h /usr/include/strings.h \
/usr/include/secure/_string.h ../../../CUnit/Headers/CUnit.h \
/usr/include/math.h ../../../CUnit/Headers/CUError.h \
/usr/include/errno.h /usr/include/sys/errno.h \
../../../CUnit/Headers/TestDB.h /usr/include/setjmp.h \
../../../CUnit/Headers/TestRun.h ../../../CUnit/Headers/Util.h \
../../../CUnit/Headers/Console.h ../../../CUnit/Headers/CUnit_intl.h
/usr/include/stdio.h:
/usr/include/sys/cdefs.h:
/usr/include/sys/_symbol_aliasing.h:
/usr/include/sys/_posix_availability.h:
/usr/include/Availability.h:
/usr/include/AvailabilityInternal.h:
/usr/include/_types.h:
/usr/include/sys/_types.h:
/usr/include/machine/_types.h:
/usr/include/i386/_types.h:
/usr/include/sys/_types/_va_list.h:
/usr/include/sys/_types/_size_t.h:
/usr/include/sys/_types/_null.h:
/usr/include/sys/_types/_off_t.h:
/usr/include/sys/_types/_ssize_t.h:
/usr/include/secure/_stdio.h:
/usr/include/secure/_common.h:
/usr/include/stdlib.h:
/usr/include/sys/wait.h:
/usr/include/sys/_types/_pid_t.h:
/usr/include/sys/_types/_id_t.h:
/usr/include/sys/signal.h:
/usr/include/sys/appleapiopts.h:
/usr/include/machine/signal.h:
/usr/include/i386/signal.h:
/usr/include/machine/_mcontext.h:
/usr/include/i386/_mcontext.h:
/usr/include/mach/i386/_structs.h:
/usr/include/sys/_types/_sigaltstack.h:
/usr/include/sys/_types/_ucontext.h:
/usr/include/sys/_types/_pthread_attr_t.h:
/usr/include/sys/_types/_sigset_t.h:
/usr/include/sys/_types/_uid_t.h:
/usr/include/sys/resource.h:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h:
/usr/include/stdint.h:
/usr/include/sys/_types/_int8_t.h:
/usr/include/sys/_types/_int16_t.h:
/usr/include/sys/_types/_int32_t.h:
/usr/include/sys/_types/_int64_t.h:
/usr/include/_types/_uint8_t.h:
/usr/include/_types/_uint16_t.h:
/usr/include/_types/_uint32_t.h:
/usr/include/_types/_uint64_t.h:
/usr/include/sys/_types/_intptr_t.h:
/usr/include/sys/_types/_uintptr_t.h:
/usr/include/_types/_intmax_t.h:
/usr/include/_types/_uintmax_t.h:
/usr/include/sys/_types/_timeval.h:
/usr/include/machine/endian.h:
/usr/include/i386/endian.h:
/usr/include/sys/_endian.h:
/usr/include/libkern/_OSByteOrder.h:
/usr/include/libkern/i386/_OSByteOrder.h:
/usr/include/alloca.h:
/usr/include/sys/_types/_ct_rune_t.h:
/usr/include/sys/_types/_rune_t.h:
/usr/include/sys/_types/_wchar_t.h:
/usr/include/machine/types.h:
/usr/include/i386/types.h:
/usr/include/sys/_types/___offsetof.h:
/usr/include/sys/_types/_dev_t.h:
/usr/include/sys/_types/_mode_t.h:
/usr/include/ctype.h:
/usr/include/runetype.h:
/usr/include/sys/_types/_wint_t.h:
/usr/include/assert.h:
/usr/include/string.h:
/usr/include/strings.h:
/usr/include/secure/_string.h:
../../../CUnit/Headers/CUnit.h:
/usr/include/math.h:
../../../CUnit/Headers/CUError.h:
/usr/include/errno.h:
/usr/include/sys/errno.h:
../../../CUnit/Headers/TestDB.h:
/usr/include/setjmp.h:
../../../CUnit/Headers/TestRun.h:
../../../CUnit/Headers/Util.h:
../../../CUnit/Headers/Console.h:
../../../CUnit/Headers/CUnit_intl.h:
cunit-2.1-3-dfsg/CUnit/Sources/Console/Console.c 0000664 0000000 0000000 00000060537 12607012350 0021403 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Implementation of the Console Test Interface.
*
* Aug 2001 Initial implementation (AK)
*
* 19/Aug/2001 Added initial console interface functions without
* any run functionality. (AK)
*
* 24/Aug/2001 Added compare_strings, show_errors, list_suites,
* list_tests function declarations. (AK)
*
* 17-Jul-2004 New interface, doxygen comments, reformat console output. (JDS)
*
* 30-Apr-2005 Added notification of suite cleanup failure. (JDS)
*
* 24-Apr-2006 Suite/test selection is now by number rather than name.
* Inactive suites/tests now reported.
* Interface supports (de)activation of tests/suites.
* Help function added for both menu levels.
* Option menu added. Immediate action on hotkeys
* without needing to , like curses. (JDS)
*
* 02-May-2006 Added internationalization hooks. (JDS)
*/
/** @file
* Console test interface with interactive output (implementation).
*/
/** @addtogroup Console
@{
*/
#include
#include
#include
#include
#include
#include "CUnit.h"
#include "TestDB.h"
#include "Util.h"
#include "TestRun.h"
#include "Console.h"
#include "CUnit_intl.h"
/** Console interface status flag. */
typedef enum
{
CU_STATUS_CONTINUE = 1, /**< Continue processing commands in current menu. */
CU_STATUS_MOVE_UP, /**< Move up to the previous menu. */
CU_STATUS_STOP /**< Stop processing (user selected 'Quit'). */
} CU_STATUS;
/*=================================================================
* Global / Static data definitions
*=================================================================*/
/** Pointer to the currently running suite. */
static CU_pSuite f_pRunningSuite = NULL;
/** Common width measurements for output formatting. */
static size_t f_yes_width = 0;
static size_t f_no_width = 0;
/*=================================================================
* Static function forward declarations
*=================================================================*/
static void console_registry_level_run(CU_pTestRegistry pRegistry);
static CU_STATUS console_suite_level_run(CU_pSuite pSuite);
static CU_STATUS console_set_options_run(void);
static CU_ErrorCode console_run_all_tests(CU_pTestRegistry pRegistry);
static CU_ErrorCode console_run_suite(CU_pSuite pSuite);
static CU_ErrorCode console_run_single_test(CU_pSuite pSuite, CU_pTest pTest);
static void console_test_start_message_handler(const CU_pTest pTest, const CU_pSuite pSuite);
static void console_test_complete_message_handler(const CU_pTest pTest, const CU_pSuite pSuite, const CU_pFailureRecord pFailure);
static void console_all_tests_complete_message_handler(const CU_pFailureRecord pFailure);
static void console_suite_init_failure_message_handler(const CU_pSuite pSuite);
static void console_suite_cleanup_failure_message_handler(const CU_pSuite pSuite);
static CU_ErrorCode select_test(CU_pSuite pSuite, CU_pTest* ppTest);
static CU_ErrorCode select_suite(CU_pTestRegistry pRegistry, CU_pSuite* ppSuite);
static void list_suites(CU_pTestRegistry pRegistry);
static void list_tests(CU_pSuite pSuite);
static void show_failures(void);
/*=================================================================
* Public Interface functions
*=================================================================*/
void CU_console_run_tests(void)
{
/*
* To avoid user from cribbing about the output not coming onto
* screen at the moment of SIGSEGV.
*/
setvbuf(stdout, NULL, _IONBF, 0);
setvbuf(stderr, NULL, _IONBF, 0);
fprintf(stdout, "\n\n %s" CU_VERSION
"\n %s\n",
_("CUnit - A Unit testing framework for C - Version "),
_("http://cunit.sourceforge.net/"));
if (NULL == CU_get_registry()) {
fprintf(stderr, "\n\n%s\n", _("FATAL ERROR - Test registry is not initialized."));
CU_set_error(CUE_NOREGISTRY);
}
else {
f_yes_width = strlen(_("Yes"));
f_no_width = strlen(_("No"));
CU_set_test_start_handler(console_test_start_message_handler);
CU_set_test_complete_handler(console_test_complete_message_handler);
CU_set_all_test_complete_handler(console_all_tests_complete_message_handler);
CU_set_suite_init_failure_handler(console_suite_init_failure_message_handler);
CU_set_suite_cleanup_failure_handler(console_suite_cleanup_failure_message_handler);
console_registry_level_run(NULL);
}
}
/*=================================================================
* Static function implementation
*=================================================================*/
/**
* Main loop for console interface.
* Displays actions and responds based on user imput. If pRegistry
* is NULL, will use the default internal CUnit test registry.
*
* @param pRegistry The CU_pTestRegistry to use for testing.
*/
static void console_registry_level_run(CU_pTestRegistry pRegistry)
{
int chChoice;
CU_pSuite pSuite = NULL;
CU_STATUS eStatus = CU_STATUS_CONTINUE;
char szTemp[256];
while (CU_STATUS_CONTINUE == eStatus)
{
fprintf(stdout, "\n\n%s\n%s\n%s",
_("***************** CUNIT CONSOLE - MAIN MENU ******************************"),
_("(R)un (S)elect (L)ist (A)ctivate (F)ailures (O)ptions (H)elp (Q)uit"),
_("Enter command: "));
chChoice = toupper(getchar());
fgets(szTemp, 256, stdin); /* flush any chars out of the read buffer */
if (chChoice == _("R")[0]) {
console_run_all_tests(pRegistry);
}
else if (chChoice == _("S")[0]) {
if (CUE_SUCCESS == select_suite(pRegistry, &pSuite)) {
assert(NULL != pSuite->pName);
fprintf(stdout, _("Suite '%s' selected."), pSuite->pName);
fprintf(stdout, "\n");
if (CU_STATUS_STOP == console_suite_level_run(pSuite)) {
eStatus = CU_STATUS_STOP;
}
}
else {
fprintf(stdout, "\n%s\n", _("Suite not found."));
}
}
else if (chChoice == _("L")[0]) {
list_suites(pRegistry);
}
else if (chChoice == _("A")[0]) {
while (CUE_SUCCESS == select_suite(pRegistry, &pSuite)) {
CU_set_suite_active(pSuite, (CU_FALSE == pSuite->fActive) ? CU_TRUE : CU_FALSE);
}
}
else if (chChoice == _("F")[0]) {
show_failures();
}
else if (chChoice == _("O")[0]) {
console_set_options_run();
}
else if (chChoice == _("Q")[0]) {
eStatus = CU_STATUS_STOP;
}
else if ((chChoice == _("H")[0]) || (chChoice == _("?")[0])) {
fprintf(stdout, "\n%s\n", _("Commands: R - run all tests in all suites"));
fprintf(stdout, "%s\n", _(" S - Select a suite to run or modify"));
fprintf(stdout, "%s\n", _(" L - List all registered suites"));
fprintf(stdout, "%s\n", _(" A - Activate or deactivate a suite (toggle)"));
fprintf(stdout, "%s\n", _(" F - Show failures from last test run"));
fprintf(stdout, "%s\n", _(" O - Set CUnit options"));
fprintf(stdout, "%s\n", _(" H - Show this help message"));
fprintf(stdout, "%s\n", _(" Q - Quit the application"));
}
}
}
/*------------------------------------------------------------------------*/
/**
* Runs a selected suite within the console interface.
* Displays actions and responds based on user imput.
*
* @param pSuite The suite to use for testing (non-NULL).
*/
static CU_STATUS console_suite_level_run(CU_pSuite pSuite)
{
int chChoice;
CU_pTest pTest = NULL;
CU_STATUS eStatus = CU_STATUS_CONTINUE;
char szTemp[256];
assert(NULL != pSuite);
assert(NULL != pSuite->pName);
while (CU_STATUS_CONTINUE == eStatus) {
fprintf(stdout, "\n%s\n%s\n%s",
_("***************** CUNIT CONSOLE - SUITE MENU ***************************"),
_("(R)un (S)elect (L)ist (A)ctivate (F)ailures (U)p (O)ptions (H)elp (Q)uit"),
_("Enter command: "));
chChoice = toupper(getchar());
fgets(szTemp, 256, stdin); /* flush any chars out of the read buffer */
if (chChoice == _("R")[0]) {
console_run_suite(pSuite);
}
else if (chChoice == _("S")[0]) {
if (CUE_SUCCESS == select_test(pSuite, &pTest)) {
console_run_single_test(pSuite, pTest);
}
else {
fprintf(stdout, "\n%s\n", _("Test not found."));
}
}
else if (chChoice == _("L")[0]) {
list_tests(pSuite);
}
else if (chChoice == _("A")[0]) {
while (CUE_SUCCESS == select_test(pSuite, &pTest)) {
CU_set_test_active(pTest, (CU_FALSE == pTest->fActive) ? CU_TRUE : CU_FALSE);
}
}
else if (chChoice == _("F")[0]) {
show_failures();
}
else if ((chChoice == _("M")[0]) || (chChoice == _("U")[0])) {
eStatus = CU_STATUS_MOVE_UP;
}
else if (chChoice == _("O")[0]) {
console_set_options_run();
}
else if (chChoice == _("Q")[0]) {
eStatus = CU_STATUS_STOP;
}
else if ((chChoice == _("H")[0]) || (chChoice == _("?")[0])) {
fprintf(stdout, "\n");
fprintf(stdout, _("Commands: R - run all tests in suite %s"), pSuite->pName);
fprintf(stdout, "\n");
fprintf(stdout, "%s\n", _(" S - Select and run a test"));
fprintf(stdout, _(" L - List all tests registered in suite %s"), pSuite->pName);
fprintf(stdout, "\n");
fprintf(stdout, "%s\n", _(" A - Activate or deactivate a test (toggle)"));
fprintf(stdout, "%s\n", _(" F - Show failures from last test run"));
fprintf(stdout, "%s\n", _(" M - Move up to main menu"));
fprintf(stdout, "%s\n", _(" O - Set CUnit options"));
fprintf(stdout, "%s\n", _(" H - Show this help message"));
fprintf(stdout, "%s\n", _(" Q - Quit the application"));
}
}
return eStatus;
}
/*------------------------------------------------------------------------*/
/**
* Sets CUnit options interactively using console interface.
* Displays actions and responds based on user imput.
*/
static CU_STATUS console_set_options_run(void)
{
int chChoice;
CU_STATUS eStatus = CU_STATUS_CONTINUE;
char szTemp[256];
while (CU_STATUS_CONTINUE == eStatus) {
fprintf(stdout, "\n%s\n",
_("***************** CUNIT CONSOLE - OPTIONS **************************"));
fprintf(stdout, _(" 1 - Inactive suites/tests treated as runtime failures %s"),
(CU_FALSE != CU_get_fail_on_inactive()) ? _("Yes") : _("No"));
fprintf(stdout, "\n********************************************************************\n");
fprintf(stdout, "%s",
_("Enter number of option to change : "));
chChoice = getchar();
fgets(szTemp, 256, stdin); /* flush any chars out of the read buffer */
switch (tolower(chChoice)) {
case '1':
CU_set_fail_on_inactive((CU_FALSE == CU_get_fail_on_inactive()) ? CU_TRUE : CU_FALSE);
break;
default:
eStatus = CU_STATUS_MOVE_UP;
break;
}
}
return eStatus;
}
/*------------------------------------------------------------------------*/
/**
* Runs all tests within the console interface.
* The test registry is changed to the specified registry before running
* the tests, and reset to the original registry when done. If pRegistry
* is NULL, the default internal CUnit test registry is used.
*
* @param pRegistry The CU_pTestRegistry containing the tests to be run.
* @return An error code indicating the error status during the test run.
*/
static CU_ErrorCode console_run_all_tests(CU_pTestRegistry pRegistry)
{
CU_pTestRegistry pOldRegistry = NULL;
CU_ErrorCode result;
f_pRunningSuite = NULL;
if (NULL != pRegistry) {
pOldRegistry = CU_set_registry(pRegistry);
}
result = CU_run_all_tests();
if (NULL != pRegistry) {
CU_set_registry(pOldRegistry);
}
return result;
}
/*------------------------------------------------------------------------*/
/**
* Runs a specified suite within the console interface.
*
* @param pSuite The suite to be run (non-NULL).
* @return An error code indicating the error status during the test run.
*/
static CU_ErrorCode console_run_suite(CU_pSuite pSuite)
{
f_pRunningSuite = NULL;
return CU_run_suite(pSuite);
}
/*------------------------------------------------------------------------*/
/**
( Runs a specific test for the specified suite within the console interface.
*
* @param pSuite The suite containing the test to be run (non-NULL).
* @param pTest The test to be run (non-NULL).
* @return An error code indicating the error status during the test run.
*/
static CU_ErrorCode console_run_single_test(CU_pSuite pSuite, CU_pTest pTest)
{
f_pRunningSuite = NULL;
return CU_run_test(pSuite, pTest);
}
/*------------------------------------------------------------------------*/
/**
* Reads the number of a test from standard input and locates the test
* at that position. A pointer to the located test is stored
* in ppTest upon return.
*
* @param pSuite The suite to be queried.
* @param ppTest Pointer to location to store the selected test.
* @return CUE_SUCCESS if a test was successfully selected, CUE_NOTEST
* otherwise. On return, ppTest points to the test selected,
* or NULL if none.
*/
static CU_ErrorCode select_test(CU_pSuite pSuite, CU_pTest* ppTest)
{
char buffer[100];
assert(NULL != pSuite);
assert(NULL != pSuite->pName);
*ppTest = NULL;
if (0 == pSuite->uiNumberOfTests) {
fprintf(stdout, "\n");
fprintf(stdout, _("Suite %s contains no tests."), pSuite->pName);
}
else {
list_tests(pSuite);
fprintf(stdout, "\n");
fprintf(stdout, _("Enter number of test to select (1-%u) : "),
pSuite->uiNumberOfTests);
fgets(buffer, 100, stdin);
*ppTest = CU_get_test_by_index(atol(buffer), pSuite);
}
return (NULL != *ppTest) ? CUE_SUCCESS : CUE_NOTEST;
}
/*------------------------------------------------------------------------*/
/**
* Reads the number of a suite from standard input and locates the suite
* at that position. If pRegistry is NULL, the default CUnit registry
* will be used. The located pSuite is returned in ppSuite. ppSuite
* will be NULL if there is no suite in the registry having the input name.
* Returns NULL if the suite is successfully located, non-NULL otherwise.
*
* @param pRegistry The CU_pTestRegistry to query. If NULL, use the
* default internal CUnit test registry.
* @param ppSuite Pointer to location to store the selected suite.
* @return CUE_SUCCESS if a suite was successfully selected, CUE_NOSUITE
* otherwise. On return, ppSuite points to the suite selected.
*/
static CU_ErrorCode select_suite(CU_pTestRegistry pRegistry, CU_pSuite* ppSuite)
{
char buffer[100];
if (NULL == pRegistry) {
pRegistry = CU_get_registry();
}
if (0 == pRegistry->uiNumberOfSuites) {
fprintf(stdout, "\n%s", _("No suites are registered."));
*ppSuite = NULL;
}
else {
list_suites(pRegistry);
fprintf(stdout, "\n");
fprintf(stdout, _("Enter number of suite to select (1-%u) : "),
pRegistry->uiNumberOfSuites);
fgets(buffer, 100, stdin);
*ppSuite = CU_get_suite_by_index(atol(buffer), pRegistry);
}
return (NULL != *ppSuite) ? CUE_SUCCESS : CUE_NOSUITE;
}
/*------------------------------------------------------------------------*/
/**
* Lists the suites in a registry to standard output.
* @param pRegistry The CU_pTestRegistry to query (non-NULL).
*/
static void list_suites(CU_pTestRegistry pRegistry)
{
CU_pSuite pCurSuite = NULL;
int i;
static size_t width[6];
if (NULL == pRegistry) {
pRegistry = CU_get_registry();
}
assert(NULL != pRegistry);
if (0 == pRegistry->uiNumberOfSuites) {
fprintf(stdout, "\n%s\n", _("No suites are registered."));
return;
}
assert(NULL != pRegistry->pSuite);
/* only need to calculate formatting widths once */
if (0 == width[0]) {
width[0] = CU_number_width(pRegistry->uiNumberOfSuites) + 1;
width[1] = 34;
width[2] = CU_MAX(strlen(_("Init?")), CU_MAX(f_yes_width, f_no_width)) + 1;
width[3] = CU_MAX(strlen(_("Cleanup?")), CU_MAX(f_yes_width, f_no_width)) + 1;
width[4] = CU_MAX(strlen(_("#Tests")), CU_number_width(pRegistry->uiNumberOfTests) + 1) + 1;
width[5] = CU_MAX(strlen(_("Active?")), CU_MAX(f_yes_width, f_no_width)) + 1;
}
fprintf(stdout, "\n%s", _("--------------------- Registered Suites -----------------------------"));
fprintf(stdout, "\n%*s %-*s%*s%*s%*s%*s\n",
width[0], _("#"),
width[1], _("Suite Name"),
width[2], _("Init?"),
width[3], _("Cleanup?"),
width[4], _("#Tests"),
width[5], _("Active?"));
for (i = 1, pCurSuite = pRegistry->pSuite; (NULL != pCurSuite); pCurSuite = pCurSuite->pNext, ++i) {
assert(NULL != pCurSuite->pName);
fprintf(stdout, "\n%*d. %-*.*s%*s%*s%*u%*s",
width[0], i,
width[1], width[1] - 1, pCurSuite->pName,
width[2]-1, (NULL != pCurSuite->pInitializeFunc) ? _("Yes") : _("No"),
width[3], (NULL != pCurSuite->pCleanupFunc) ? _("Yes") : _("No"),
width[4], pCurSuite->uiNumberOfTests,
width[5], (CU_FALSE != pCurSuite->fActive) ? _("Yes") : _("No"));
}
fprintf(stdout, "\n---------------------------------------------------------------------\n");
fprintf(stdout, _("Total Number of Suites : %-u"), pRegistry->uiNumberOfSuites);
fprintf(stdout, "\n");
}
/*------------------------------------------------------------------------*/
/**
* Lists the tests in a suite to standard output.
* @param pSuite The suite to query (non-NULL).
*/
static void list_tests(CU_pSuite pSuite)
{
CU_pTest pCurTest = NULL;
unsigned int uiCount;
static size_t width[3];
assert(NULL != pSuite);
assert(NULL != pSuite->pName);
if (0 == pSuite->uiNumberOfTests) {
fprintf(stdout, "\n");
fprintf(stdout, _("Suite %s contains no tests."), pSuite->pName);
fprintf(stdout, "\n");
return;
}
assert(NULL != pSuite->pTest);
/* only number of tests can change between calls */
width[0] = CU_number_width(pSuite->uiNumberOfTests) + 1;
if (0 == width[1]) {
width[1] = 34;
width[2] = CU_MAX(strlen(_("Active?")), CU_MAX(f_yes_width, f_no_width)) + 1;
}
fprintf(stdout, "\n%s",
_("----------------- Test List ------------------------------"));
fprintf(stdout, "\n%s%s\n", _("Suite: "), pSuite->pName);
fprintf(stdout, "\n%*s %-*s%*s\n",
width[0], _("#"),
width[1], _("Test Name"),
width[2], _("Active?"));
for (uiCount = 1, pCurTest = pSuite->pTest ;
NULL != pCurTest ;
uiCount++, pCurTest = pCurTest->pNext) {
assert(NULL != pCurTest->pName);
fprintf(stdout, "\n%*u. %-*.*s%*s",
width[0], uiCount,
width[1], width[1]-1, pCurTest->pName,
width[2]-1, (CU_FALSE != pCurTest->fActive) ? _("Yes") : _("No"));
}
fprintf(stdout, "\n----------------------------------------------------------\n");
fprintf(stdout, _("Total Number of Tests : %-u"), pSuite->uiNumberOfTests);
fprintf(stdout, "\n");
}
/*------------------------------------------------------------------------*/
/** Displays the record of test failures on standard output. */
static void show_failures(void)
{
unsigned int i;
CU_pFailureRecord pFailure = CU_get_failure_list();
if (NULL == pFailure) {
fprintf(stdout, "\n%s\n", _("No failures."));
}
else {
fprintf(stdout, "\n%s",
_("--------------- Test Run Failures -------------------------"));
fprintf(stdout, "\n%s\n",
_(" src_file:line# : (suite:test) : failure_condition"));
for (i = 1 ; (NULL != pFailure) ; pFailure = pFailure->pNext, i++) {
fprintf(stdout, "\n%d. %s:%u : (%s : %s) : %s", i,
(NULL != pFailure->strFileName)
? pFailure->strFileName : "",
pFailure->uiLineNumber,
((NULL != pFailure->pSuite) && (NULL != pFailure->pSuite->pName))
? pFailure->pSuite->pName : "",
((NULL != pFailure->pTest) && (NULL != pFailure->pTest->pName))
? pFailure->pTest->pName : "",
(NULL != pFailure->strCondition)
? pFailure->strCondition : "");
}
fprintf(stdout, "\n-----------------------------------------------------------");
fprintf(stdout, "\n");
fprintf(stdout, _("Total Number of Failures : %-u"), i - 1);
fprintf(stdout, "\n");
}
}
/*------------------------------------------------------------------------*/
/** Handler function called at start of each test.
* @param pTest The test being run.
* @param pSuite The suite containing the test.
*/
static void console_test_start_message_handler(const CU_pTest pTest, const CU_pSuite pSuite)
{
assert(NULL != pTest);
assert(NULL != pTest->pName);
assert(NULL != pSuite);
assert(NULL != pSuite->pName);
/* Comparing the Addresses rather than the Group Names. */
if ((NULL == f_pRunningSuite) || (f_pRunningSuite != pSuite)) {
fprintf(stdout, _("\nRunning Suite : %s"), pSuite->pName);
fprintf(stdout, _("\n Running Test : %s"), pTest->pName);
f_pRunningSuite = pSuite;
}
else {
fprintf(stdout, _("\n Running Test : %s"), pTest->pName);
}
}
/*------------------------------------------------------------------------*/
/** Handler function called at completion of each test.
* @param pTest The test being run.
* @param pSuite The suite containing the test.
* @param pFailure Pointer to the 1st failure record for this test.
*/
static void console_test_complete_message_handler(const CU_pTest pTest,
const CU_pSuite pSuite,
const CU_pFailureRecord pFailure)
{
/*
* For console interface do nothing. This is useful only for the test
* interface where UI is involved. Just silence compiler warnings.
*/
CU_UNREFERENCED_PARAMETER(pTest);
CU_UNREFERENCED_PARAMETER(pSuite);
CU_UNREFERENCED_PARAMETER(pFailure);
}
/*------------------------------------------------------------------------*/
/** Handler function called at completion of all tests in a suite.
* @param pFailure Pointer to the test failure record list.
*/
static void console_all_tests_complete_message_handler(const CU_pFailureRecord pFailure)
{
CU_UNREFERENCED_PARAMETER(pFailure); /* not used in console interface */
printf("\n\n");
CU_print_run_results(stdout);
printf("\n");
}
/*------------------------------------------------------------------------*/
/** Handler function called when suite initialization fails.
* @param pSuite The suite for which initialization failed.
*/
static void console_suite_init_failure_message_handler(const CU_pSuite pSuite)
{
assert(NULL != pSuite);
assert(NULL != pSuite->pName);
fprintf(stdout,
_("\nWARNING - Suite initialization failed for '%s'."), pSuite->pName);
}
/*------------------------------------------------------------------------*/
/** Handler function called when suite cleanup fails.
* @param pSuite The suite for which cleanup failed.
*/
static void console_suite_cleanup_failure_message_handler(const CU_pSuite pSuite)
{
assert(NULL != pSuite);
assert(NULL != pSuite->pName);
fprintf(stdout, _("\nWARNING - Suite cleanup failed for '%s'."), pSuite->pName);
}
/** @} */
cunit-2.1-3-dfsg/CUnit/Sources/Console/Makefile.am 0000664 0000000 0000000 00000000271 12607012350 0021656 0 ustar 00root root 0000000 0000000 ## Process this file with automake to produce Makefile.in
AM_CPPFLAGS = -I$(top_srcdir)/CUnit/Headers
noinst_LTLIBRARIES = libcunitconsole.la
libcunitconsole_la_SOURCES = \
Console.c
cunit-2.1-3-dfsg/CUnit/Sources/Console/Makefile.in 0000664 0000000 0000000 00000042572 12607012350 0021701 0 ustar 00root root 0000000 0000000 # Makefile.in generated by automake 1.14 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = CUnit/Sources/Console
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LTLIBRARIES = $(noinst_LTLIBRARIES)
libcunitconsole_la_LIBADD =
am_libcunitconsole_la_OBJECTS = Console.lo
libcunitconsole_la_OBJECTS = $(am_libcunitconsole_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_@AM_V@)
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
am__v_CC_0 = @echo " CC " $@;
am__v_CC_1 =
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(libcunitconsole_la_SOURCES)
DIST_SOURCES = $(libcunitconsole_la_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_AUTOMATED = @BUILD_AUTOMATED@
BUILD_BASIC = @BUILD_BASIC@
BUILD_CONSOLE = @BUILD_CONSOLE@
BUILD_CURSES = @BUILD_CURSES@
BUILD_EXAMPLES = @BUILD_EXAMPLES@
BUILD_TEST = @BUILD_TEST@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CURSES_LIB = @CURSES_LIB@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_DEBUG = @ENABLE_DEBUG@
ENABLE_DEPRECATED = @ENABLE_DEPRECATED@
ENABLE_MEMTRACE = @ENABLE_MEMTRACE@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBTOOL_AGE = @LIBTOOL_AGE@
LIBTOOL_CURRENT = @LIBTOOL_CURRENT@
LIBTOOL_REVISION = @LIBTOOL_REVISION@
LIBTOOL_SUFFIX = @LIBTOOL_SUFFIX@
LIBTOOL_SUFFIX1 = @LIBTOOL_SUFFIX1@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
RELEASE = @RELEASE@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
VERSION_MAJOR = @VERSION_MAJOR@
VERSION_MINOR = @VERSION_MINOR@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AM_CPPFLAGS = -I$(top_srcdir)/CUnit/Headers
noinst_LTLIBRARIES = libcunitconsole.la
libcunitconsole_la_SOURCES = \
Console.c
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu CUnit/Sources/Console/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu CUnit/Sources/Console/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
clean-noinstLTLIBRARIES:
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@list='$(noinst_LTLIBRARIES)'; \
locs=`for p in $$list; do echo $$p; done | \
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
sort -u`; \
test -z "$$locs" || { \
echo rm -f $${locs}; \
rm -f $${locs}; \
}
libcunitconsole.la: $(libcunitconsole_la_OBJECTS) $(libcunitconsole_la_DEPENDENCIES) $(EXTRA_libcunitconsole_la_DEPENDENCIES)
$(AM_V_CCLD)$(LINK) $(libcunitconsole_la_OBJECTS) $(libcunitconsole_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Console.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-am
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-am
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(LTLIBRARIES)
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am:
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
cunit-2.1-3-dfsg/CUnit/Sources/Curses/ 0000775 0000000 0000000 00000000000 12607012350 0017464 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/CUnit/Sources/Curses/.deps/ 0000775 0000000 0000000 00000000000 12607012350 0020475 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/CUnit/Sources/Curses/.deps/Curses.Plo 0000664 0000000 0000000 00000000010 12607012350 0022404 0 ustar 00root root 0000000 0000000 # dummy
cunit-2.1-3-dfsg/CUnit/Sources/Curses/Curses.c 0000664 0000000 0000000 00000130720 12607012350 0021077 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Implementation of the Curses based Test Interface.
*
* 01/Nov/2001 Started Curses based interface for CUnit. (AK)
*
* 04/Nov/2001 Added Scrolling Capability to the Details Window. (AK)
*
* 24/Nov/2001 Added List and Show Failure Capability to the Details Window.
* Also added group initialization failure message handler. (AK)
*
* 09-Aug-2004 New interface, made all curses local functions static. (JDS)
*
* 30-Apr-2006 Suite/test selection is now by number rather than name.
* Inactive suites/tests now reported.
* Interface supports (de)activation of tests/suites.
* Help function added for both menu levels.
* Option menu added. (JDS)
*
* 02-May-2006 Added internationalization hooks. (JDS)
*/
/** @file
* Curses test interface with interactive output (implementation).
*/
/** @addtogroup Curses
@{
*/
#include
#include
#include
#include
#include
#include
#include "CUnit.h"
#include "TestDB.h"
#include "Util.h"
#include "TestRun.h"
#include "CUCurses.h"
#include "CUnit_intl.h"
/*=================================================================
* Global / Static data definitions
*=================================================================*/
/* Type Definitions */
#ifndef false
#define false (0) /**< Local boolean definition for false. */
#endif
#ifndef true
#define true (~false) /**< Local boolean definition for true. */
#endif
/** Curses interface status flag. */
typedef enum
{
CONTINUE = 1, /**< Continue processing commands in current menu. */
MOVE_UP, /**< Move up to the previous menu. */
STOP /**< Stop processing (user selected 'Quit'). */
} STATUS;
/** Menu type. */
typedef enum
{
MAIN_MENU = 1,
GROUP_MENU
} MENU_TYPE;
/** Pointers to curses interface windows. */
typedef struct
{
WINDOW* pMainWin; /**< Main window. */
WINDOW* pTitleWin; /**< Title window. */
WINDOW* pProgressWin; /**< Progress bar window. */
WINDOW* pSummaryWin; /**< Summary window. */
WINDOW* pRunSummaryWin; /**< Run Summary window. */
WINDOW* pDetailsWin; /**< Details window. */
WINDOW* pOptionsWin; /**< Options window. */
} APPWINDOWS;
/** Window elements. */
typedef struct
{
WINDOW* pPad; /**< Pointer to the pad. */
unsigned int uiRows; /**< Number of rows in pad. */
unsigned int uiColumns; /**< Number of columns in pad. */
unsigned int uiPadRow; /**< Current pad row. */
unsigned int uiPadCol; /**< Current pad column. */
unsigned int uiWinLeft; /**< Left position of containing window. */
unsigned int uiWinTop; /**< Top position of containing window. */
unsigned int uiWinRows; /**< Number of rows in containing window. */
unsigned int uiWinColumns; /**< Number of columns in containing window. */
} APPPAD;
/*
* Constants definitions
*/
/** Standard string length. */
#define STRING_LENGTH 128
/** String holding main menu run options. */
static const char* MAIN_OPTIONS =
N_("(R)un (S)elect (L)ist (A)ctivate (F)ailures (O)ptions (H)elp (Q)uit");
/** String holding suite menu run options. */
static const char* SUITE_OPTIONS =
N_("(R)un (S)elect (L)ist (A)ctivate (F)ailures (O)ptions (H)elp (U)p (Q)uit");
/*
* Color Pairs Initialized for the Various Parameter Display
*/
static const int CLEAR_COLOR = 1; /**< Clear color.*/
static const int TITLE_COLOR = 2; /**< Title color.*/
static const int PROGRESS_BACKGROUND_COLOR = 3; /**< progress bar background color.*/
static const int PROGRESS_SUCCESS_COLOR = 4; /**< Progress bar success color.*/
static const int PROGRESS_FAILURE_COLOR = 5; /**< Progress bar failure color.*/
static const int MENU_COLOR = 6; /**< Menu color.*/
static const char* const f_szProgress = N_("Progress "); /**< Text for progress bar. */
static const char* f_szOptions = NULL; /**< String containing options. */
static CU_pTest f_pCurrentTest = NULL; /**< Pointer to the test currently being run. */
static CU_pSuite f_pCurrentSuite = NULL; /**< Pointer to the suite currently being run. */
static unsigned int f_uiTotalTests = 0; /**< Number of tests in registered suites. */
static unsigned int f_uiTestsRun = 0; /**< Number of tests actually run. */
static unsigned int f_uiTestsSkipped = 0; /**< Number of tests skipped during run. */
static unsigned int f_uiTestsFailed = 0; /**< Number of tests having failed assertions. */
static unsigned int f_uiTestsRunSuccessful = 0; /**< Number of tests run with no failed assertions. */
static unsigned int f_uiTotalSuites = 0; /**< Number of registered suites. */
static unsigned int f_uiSuitesSkipped = 0; /**< Number of suites skipped during run. */
static short f_nLeft; /**< Left window position. */
static short f_nTop; /**< Top window position. */
static short f_nWidth; /**< Width of window. */
static short f_nHeight; /**< Height of window. */
/** Common width measurements for output formatting. */
static size_t f_yes_width = 0;
static size_t f_no_width = 0;
/** Pointers to curses interface windows. */
static APPWINDOWS application_windows = {NULL, NULL, NULL, NULL, NULL, NULL, NULL};
/** Details window definition. */
static APPPAD details_pad = {NULL, 0, 0, 0, 0, 0, 0, 0, 0};
/*=================================================================
* Static function forward declarations
*=================================================================*/
static bool initialize_windows(void);
static void uninitialize_windows(void);
static void refresh_windows(void);
static void refresh_title_window(void);
static void refresh_progress_window(void);
static void refresh_summary_window(void);
static void refresh_run_summary_window(void);
static void refresh_details_window(void);
static void refresh_options_window(void);
static void show_detail_window_message(const char* msg);
static bool create_pad(APPPAD* pPad, WINDOW* pParent, unsigned int uiRows, unsigned int uiCols);
static void scroll_window(int nCommand, APPPAD* pPad, void (*parent_refresh)(void));
static bool test_initialize(void);
static void show_progress_bar(void);
static const char* get_hotkey(const char* szStr, int* pPos);
static void read_input_string(const char szPropmt[], char szValue[], int nBytes);
static STATUS curses_registry_level_run(CU_pTestRegistry pRegistry);
static STATUS curses_suite_level_run(CU_pSuite pSuite);
static STATUS curses_set_options_run(void);
static CU_ErrorCode curses_run_all_tests(CU_pTestRegistry pRegistry);
static CU_ErrorCode curses_run_suite_tests(CU_pSuite pSuite);
static CU_ErrorCode curses_run_single_test(CU_pSuite pSuite, CU_pTest pTest);
static void curses_test_start_message_handler(const CU_pTest pTest, const CU_pSuite pSuite);
static void curses_test_complete_message_handler(const CU_pTest pTest, const CU_pSuite pSuite,
const CU_pFailureRecord pFailure);
static void curses_all_tests_complete_message_handler(const CU_pFailureRecord pFailure);
static void curses_suite_init_failure_message_handler(const CU_pSuite pSuite);
static void list_suites(CU_pTestRegistry pRegistry);
static void list_tests(CU_pSuite pSuite);
static void show_failures(void);
static void show_registry_level_help(void);
static void show_suite_level_help(CU_pSuite pSuite);
static void reset_run_parameters(void);
/*=================================================================
* Public Interface functions
*=================================================================*/
void CU_curses_run_tests(void)
{
setvbuf(stdout, NULL, _IONBF, 0);
setvbuf(stderr, NULL, _IONBF, 0);
f_szOptions = _(MAIN_OPTIONS);
if (!initialize_windows()) {
return;
}
if (!test_initialize()) {
goto test_initialize_fail;
}
f_yes_width = strlen(_("Yes"));
f_no_width = strlen(_("No"));
show_detail_window_message(_("Welcome to CUnit. Press the indicated key to run the command."));
curses_registry_level_run(CU_get_registry());
/* fall thru */
test_initialize_fail:
uninitialize_windows();
}
/*=================================================================
* Static function implementation
*=================================================================*/
/** Initialize the curses interface windows. */
static bool initialize_windows(void)
{
bool bStatus = false;
if (NULL == (application_windows.pMainWin = initscr())) {
goto main_fail;
}
start_color();
f_nLeft = application_windows.pMainWin->_begx;
f_nTop = application_windows.pMainWin->_begy;
f_nWidth = application_windows.pMainWin->_maxx;
f_nHeight = application_windows.pMainWin->_maxy;
if (NULL == (application_windows.pTitleWin = newwin(3, f_nWidth, 0, 0))) {
goto title_fail;
}
if (NULL == (application_windows.pProgressWin = newwin(2, f_nWidth, 3, 0))) {
goto progress_fail;
}
if (NULL == (application_windows.pSummaryWin = newwin(1, f_nWidth, 5, 0))) {
goto summary_fail;
}
if (NULL == (application_windows.pRunSummaryWin = newwin(1, f_nWidth, 6, 0))) {
goto run_summary_fail;
}
if (NULL == (application_windows.pDetailsWin = newwin(f_nHeight - f_nTop - 7 , f_nWidth, 7, 0))) {
goto details_fail;
}
if (NULL == (application_windows.pOptionsWin = newwin(1, f_nWidth, f_nHeight - f_nTop, 0))) {
goto option_fail;
}
curs_set(0);
noecho();
cbreak();
keypad(application_windows.pMainWin, CU_TRUE);
init_pair(CLEAR_COLOR, COLOR_WHITE, COLOR_BLACK);
init_pair(TITLE_COLOR, COLOR_WHITE, COLOR_BLACK);
init_pair(PROGRESS_BACKGROUND_COLOR, COLOR_BLACK, COLOR_WHITE);
init_pair(PROGRESS_SUCCESS_COLOR, COLOR_WHITE, COLOR_GREEN);
init_pair(PROGRESS_FAILURE_COLOR, COLOR_WHITE, COLOR_RED);
init_pair(MENU_COLOR, COLOR_GREEN, COLOR_BLACK);
refresh_windows();
bStatus = true;
goto main_fail;
/*
* Error Handlers for all the stages.
*/
option_fail:
delwin(application_windows.pDetailsWin);
details_fail:
delwin(application_windows.pRunSummaryWin);
run_summary_fail:
delwin(application_windows.pSummaryWin);
summary_fail:
delwin(application_windows.pProgressWin);
progress_fail:
delwin(application_windows.pTitleWin);
title_fail:
endwin();
main_fail:
return bStatus;
}
/*------------------------------------------------------------------------*/
/** Clean up and delete curses interface windows. */
static void uninitialize_windows(void)
{
curs_set(1);
echo();
nocbreak();
keypad(application_windows.pMainWin, CU_FALSE);
if (details_pad.pPad) {
delwin(details_pad.pPad);
}
delwin(application_windows.pOptionsWin);
delwin(application_windows.pDetailsWin);
delwin(application_windows.pRunSummaryWin);
delwin(application_windows.pSummaryWin);
delwin(application_windows.pProgressWin);
delwin(application_windows.pTitleWin);
clear();
refresh();
endwin();
}
/*------------------------------------------------------------------------*/
/** Refresh curses interface windows. */
static void refresh_windows(void)
{
refresh();
f_nLeft = application_windows.pMainWin->_begx;
f_nTop = application_windows.pMainWin->_begy;
f_nWidth = application_windows.pMainWin->_maxx;
f_nHeight = application_windows.pMainWin->_maxy;
refresh_title_window();
refresh_progress_window();
refresh_run_summary_window();
refresh_summary_window();
refresh_details_window();
refresh_options_window();
}
/*------------------------------------------------------------------------*/
/** Refresh the title window. */
static void refresh_title_window(void)
{
char szPackageTitle[STRING_LENGTH];
char* szSite = N_("http://cunit.sourceforge.net/");
static bool bFirstTime = true;
if (!bFirstTime) {
bFirstTime = false;
return;
}
snprintf(szPackageTitle, STRING_LENGTH,
"%s%s", _("CUnit - A Unit testing framework for C - Version "), CU_VERSION);
wattrset(application_windows.pTitleWin, A_BOLD | COLOR_PAIR(TITLE_COLOR));
mvwprintw(application_windows.pTitleWin,
0, f_nLeft + (f_nWidth - strlen(szPackageTitle))/2,
"%s", szPackageTitle);
wattrset(application_windows.pTitleWin, A_BOLD | A_UNDERLINE | COLOR_PAIR(TITLE_COLOR));
mvwprintw(application_windows.pTitleWin, 1, f_nLeft + (f_nWidth - strlen(_(szSite)))/2,
"%s", _(szSite));
wattrset(application_windows.pTitleWin, A_NORMAL);
wrefresh(application_windows.pTitleWin);
}
/*------------------------------------------------------------------------*/
/** Refresh the progress bar window. */
static void refresh_progress_window(void)
{
wattrset(application_windows.pProgressWin, A_BOLD);
mvwprintw(application_windows.pProgressWin, 0, 1, (char *)_(f_szProgress));
show_progress_bar();
wrefresh(application_windows.pProgressWin);
}
/*------------------------------------------------------------------------*/
/** Refresh the summary window. */
static void refresh_summary_window(void)
{
char szTemp[STRING_LENGTH];
memset(szTemp, 0, sizeof(szTemp));
snprintf(szTemp, STRING_LENGTH, _("Tests Run : %6u Success : %6u Failed : %6u"),
f_uiTestsRun, f_uiTestsRunSuccessful,
f_uiTestsRun - f_uiTestsRunSuccessful);
werase(application_windows.pSummaryWin);
mvwprintw(application_windows.pSummaryWin, 0, 1, "%s", szTemp);
wrefresh(application_windows.pSummaryWin);
}
/*------------------------------------------------------------------------*/
/** Prints a custom message in the detail window. */
static void show_detail_window_message(const char *msg)
{
if (NULL != msg) {
if (!create_pad(&details_pad, application_windows.pDetailsWin, 1, 256)) {
return;
}
assert(256 >= strlen(msg));
mvwprintw(details_pad.pPad, 0, 0, "%s", msg);
refresh_details_window();
}
}
/*------------------------------------------------------------------------*/
/** Refresh the run summary window. */
static void refresh_run_summary_window(void)
{
const char* szRunSummary = N_("Running test \'%s\' of Suite \'%s\'");
char szTemp[STRING_LENGTH];
if (f_pCurrentTest && f_pCurrentSuite) {
assert(NULL != f_pCurrentTest->pName);
assert(NULL != f_pCurrentSuite->pName);
snprintf(szTemp, STRING_LENGTH, _(szRunSummary),
f_pCurrentTest->pName, f_pCurrentSuite->pName);
}
else {
snprintf(szTemp, STRING_LENGTH, "%s", "");
}
werase(application_windows.pRunSummaryWin);
mvwprintw(application_windows.pRunSummaryWin, 0, 1, "%s", szTemp);
wrefresh(application_windows.pRunSummaryWin);
}
/*------------------------------------------------------------------------*/
/** Refresh the details window. */
static void refresh_details_window(void)
{
const char* szDetailsTitle = N_(" Details Window ");
box(application_windows.pDetailsWin, ACS_VLINE, ACS_HLINE);
mvwprintw(application_windows.pDetailsWin, 0,
f_nLeft + (f_nWidth - strlen(_(szDetailsTitle)))/2, "%s", _(szDetailsTitle));
scrollok(application_windows.pDetailsWin, CU_TRUE);
wrefresh(application_windows.pDetailsWin);
if (details_pad.pPad) {
prefresh(details_pad.pPad, details_pad.uiPadRow, details_pad.uiPadCol,
details_pad.uiWinTop, details_pad.uiWinLeft,
details_pad.uiWinTop + details_pad.uiWinRows,
details_pad.uiWinLeft + details_pad.uiWinColumns);
}
}
/*------------------------------------------------------------------------*/
/** Refresh the options window. */
static void refresh_options_window(void)
{
int nPos = 0;
const char* szHotKey = NULL;
wclear(application_windows.pOptionsWin);
mvwprintw(application_windows.pOptionsWin, 0, 1, "%s", f_szOptions);
get_hotkey(f_szOptions, NULL);
wattron(application_windows.pOptionsWin, A_BOLD);
while (NULL != (szHotKey = get_hotkey((const char*)NULL, &nPos))) {
mvwaddstr(application_windows.pOptionsWin, 0, nPos + 1, szHotKey);
}
wattroff(application_windows.pOptionsWin, A_BOLD);
wrefresh(application_windows.pOptionsWin);
}
/*------------------------------------------------------------------------*/
/** Show the progress bar window. */
static void show_progress_bar(void)
{
int nLength = 0;
int nIndex = 0;
int nStart = strlen(_(f_szProgress));
int nColorID = 0;
if (0 == (f_uiTestsRun + f_uiTestsSkipped)) {
nLength = f_nWidth - f_nLeft - nStart - 6;
nColorID = PROGRESS_BACKGROUND_COLOR;
}
else {
nLength = (f_nWidth - f_nLeft - nStart - 6) * ((double)(f_uiTestsRun + f_uiTestsSkipped) / f_uiTotalTests);
nColorID = (!f_uiTestsSkipped && f_uiTestsRun == f_uiTestsRunSuccessful)
? PROGRESS_SUCCESS_COLOR
: PROGRESS_FAILURE_COLOR;
}
wattron(application_windows.pProgressWin, A_BOLD | COLOR_PAIR(nColorID));
for (nIndex = 0; nIndex < nLength; nIndex++) {
mvwprintw(application_windows.pProgressWin, 0, nStart + nIndex, " ");
}
wattroff(application_windows.pProgressWin, COLOR_PAIR(nColorID));
}
/*------------------------------------------------------------------------*/
/** Initialize the message handlers in preparation for running tests. */
static bool test_initialize(void)
{
if (NULL == CU_get_registry()) {
return false;
}
CU_set_test_start_handler(curses_test_start_message_handler);
CU_set_test_complete_handler(curses_test_complete_message_handler);
CU_set_all_test_complete_handler(curses_all_tests_complete_message_handler);
CU_set_suite_init_failure_handler(curses_suite_init_failure_message_handler);
return true;
}
/*------------------------------------------------------------------------*/
/** Parse a string and return the coded hotkeys.
* If called with szStr non-NULL, the string is simply stored.
* Subsequent calls with szStr NULL will cause the
* hotkeys in the string (chars between parentheses) to
* be returned sequentially in the order in which they
* appear in the original string.
* @param szStr String to parse (non-NULL to set, NULL to parse).
* @param pPos Used to store position of the next '('.
* @return If szStr is non-NULL, it is returned. If szStr is NULL,
* the next hotkey character is returned, or NULL if there
* are no more hotkey characters in the original string.
*/
static const char* get_hotkey(const char* szStr, int* pPos)
{
static char szTemp[128] = "";
static char szString[128] = "";
static int nPos = 0;
int nTempIndex;
char* pS = NULL;
if (szStr) {
nPos = 0;
strcpy(szString, szStr);
return szString;
}
memset(szTemp, 0, sizeof(szTemp));
for (nTempIndex = 0, pS = szString + nPos; *pS; nPos++, pS++) {
if (!nTempIndex && '(' == *pS) {
szTemp[nTempIndex++] = *pS;
*pPos = nPos;
}
else if (nTempIndex && ')' == *pS) {
szTemp[nTempIndex++] = *pS;
szTemp[nTempIndex++] = '\0';
return szTemp;
}
else if (nTempIndex) {
szTemp[nTempIndex++] = *pS;
}
}
return NULL;
}
/*------------------------------------------------------------------------*/
/**
* Main loop for curses interface.
* Displays actions and responds based on user imput.
* @param pRegistry The CU_pTestRegistry to use for testing.
* If NULL, uses the default registry.
*/
static STATUS curses_registry_level_run(CU_pTestRegistry pRegistry)
{
char szSuiteNumber[STRING_LENGTH];
CU_pSuite pSuite = NULL;
bool bContinue = true;
char szTemp[STRING_LENGTH];
long suite_num;
if (NULL == pRegistry) {
pRegistry = CU_get_registry();
}
assert(NULL != pRegistry);
while (bContinue) {
int option = toupper(getch());
if (option == _("R")[0]) {
curses_run_all_tests(pRegistry);
}
else if (option == _("S")[0]) {
if (0 == pRegistry->uiNumberOfSuites) {
fprintf(stdout, "\n%s", _("No suites are registered."));
}
else {
list_suites(pRegistry);
snprintf(szTemp, STRING_LENGTH, _("Enter number of suite to select (1-%u) : "),
pRegistry->uiNumberOfSuites);
read_input_string(szTemp, szSuiteNumber, STRING_LENGTH);
refresh_details_window();
suite_num = atol(szSuiteNumber);
pSuite = CU_get_suite_by_index(suite_num, pRegistry);
if (NULL != pSuite) {
assert(NULL != pSuite->pName);
snprintf(szTemp, STRING_LENGTH, _("Suite '%s' selected."), pSuite->pName);
show_detail_window_message(szTemp);
if (STOP == curses_suite_level_run(pSuite)) {
bContinue = false;
}
f_szOptions = _(MAIN_OPTIONS);
refresh_options_window();
}
else {
show_detail_window_message(_("Suite not found."));
}
}
}
else if (option == _("L")[0]) {
list_suites(pRegistry);
}
else if (option == _("A")[0]) {
if (0 == pRegistry->uiNumberOfSuites) {
fprintf(stdout, "\n%s", _("No suites are registered."));
}
else {
while (1) {
list_suites(pRegistry);
snprintf(szTemp, STRING_LENGTH, _("Enter number of suite to select (1-%u) : "),
pRegistry->uiNumberOfSuites);
read_input_string(szTemp, szSuiteNumber, STRING_LENGTH);
refresh_details_window();
suite_num = atol(szSuiteNumber);
pSuite = CU_get_suite_by_index(suite_num, pRegistry);
if (NULL != pSuite) {
CU_set_suite_active(pSuite, (CU_FALSE == pSuite->fActive) ? CU_TRUE : CU_FALSE);
}
else {
break;
}
}
f_szOptions = _(MAIN_OPTIONS);
refresh_options_window();
}
}
else if (option == _("F")[0]) {
show_failures();
}
else if (option == _("O")[0]) {
curses_set_options_run();
}
else if (option == _("Q")[0]) {
return bContinue = false;
}
else if ((option == KEY_UP) ||
(option == KEY_DOWN) ||
(option == KEY_RIGHT) ||
(option == KEY_LEFT)) {
scroll_window(option, &details_pad, refresh_details_window);
}
else if ((option == _("H")[0]) || (option == _("?")[0])) {
show_registry_level_help();
}
}
return STOP;
}
/*------------------------------------------------------------------------*/
/** Run a selected suite within the curses interface.
* Displays actions and responds based on user imput.
* @param pSuite The suite to use for testing (non-NULL).
*/
static STATUS curses_suite_level_run(CU_pSuite pSuite)
{
char szTestNumber[STRING_LENGTH];
char szTemp[STRING_LENGTH];
CU_pTestRegistry pRegistry = CU_get_registry();
CU_pTest pTest = NULL;
long test_num;
assert(NULL != pRegistry);
assert(NULL != pSuite);
assert(NULL != pSuite->pName);
f_szOptions = _(SUITE_OPTIONS);
refresh_options_window();
while (true) {
int option = toupper(getch());
if (option == _("R")[0]) {
curses_run_suite_tests(pSuite);
}
else if (option == _("S")[0]) {
if (0 == pSuite->uiNumberOfTests) {
snprintf(szTemp, STRING_LENGTH,
_("Suite %s contains no tests."), pSuite->pName);
show_detail_window_message(szTemp);
}
else {
list_tests(pSuite);
snprintf(szTemp, STRING_LENGTH, "%s",
_("Enter number of test to select (1-%u) : "),
pRegistry->uiNumberOfSuites);
read_input_string(szTemp, szTestNumber, STRING_LENGTH);
test_num = atol(szTestNumber);
pTest = CU_get_test_by_index(test_num, pSuite);
if (NULL != pTest) {
curses_run_single_test(pSuite, pTest);
}
else {
show_detail_window_message(_("Test not found."));
}
refresh_details_window();
}
}
else if (option == _("L")[0]) {
list_tests(pSuite);
}
else if (option == _("F")[0]) {
show_failures();
}
else if (option == _("A")[0]) {
if (0 == pSuite->uiNumberOfTests) {
snprintf(szTemp, STRING_LENGTH,
_("Suite %s contains no tests."), pSuite->pName);
show_detail_window_message(szTemp);
}
else {
while (1) {
list_tests(pSuite);
snprintf(szTemp, STRING_LENGTH, "%s",
_("Enter number of test to select (1-%u) : "),
pRegistry->uiNumberOfSuites);
read_input_string(szTemp, szTestNumber, STRING_LENGTH);
test_num = atol(szTestNumber);
pTest = CU_get_test_by_index(test_num, pSuite);
if (NULL != pTest) {
CU_set_test_active(pTest, (CU_FALSE == pTest->fActive) ? CU_TRUE : CU_FALSE);
}
else {
break;
}
}
f_szOptions = _(SUITE_OPTIONS);
refresh_options_window();
}
}
else if (option == _("O")[0]) {
curses_set_options_run();
}
else if (option == _("U")[0]) {
return CONTINUE;
}
else if (option == _("Q")[0]) {
return STOP;
}
else if ((option == KEY_UP) ||
(option == KEY_DOWN) ||
(option == KEY_RIGHT) ||
(option == KEY_LEFT)) {
scroll_window(option, &details_pad, refresh_details_window);
}
else if ((option == _("H")[0]) || (option == _("?")[0])) {
show_suite_level_help(pSuite);
}
}
return CONTINUE;
}
/*------------------------------------------------------------------------*/
/** Display a prompt, then read a string from the keyboard.
* @param szPrompt The prompt to display.
* @param szValue The string in which to store the response.
* @param nBytes The length of the szValue buffer.
*/
static void read_input_string(const char szPrompt[], char szValue[], int nBytes)
{
echo();
curs_set(1);
nocbreak();
wclear(application_windows.pOptionsWin);
mvwprintw(application_windows.pOptionsWin, 0, 1, "%s", szPrompt);
wgetnstr(application_windows.pOptionsWin, szValue, nBytes - 1);
refresh_options_window();
cbreak();
curs_set(0);
noecho();
}
/*------------------------------------------------------------------------*/
/** Scroll a window.
* @param nCommand Code for the direction to scroll.
* @param pPad The window to scroll.
* @param parent_refresh Function to call to refresh the parent window.
*/
static void scroll_window(int nCommand, APPPAD* pPad, void (*parent_refresh)(void))
{
if (NULL == pPad->pPad) {
return;
}
switch (nCommand) {
case KEY_UP:
if (pPad->uiPadRow) {
--pPad->uiPadRow;
(*parent_refresh)();
}
break;
case KEY_DOWN:
if (pPad->uiRows - 1 > pPad->uiPadRow + pPad->uiWinRows) {
++pPad->uiPadRow;
(*parent_refresh)();
}
break;
case KEY_LEFT:
if (pPad->uiPadCol) {
--pPad->uiPadCol;
(*parent_refresh)();
}
break;
case KEY_RIGHT:
if (details_pad.uiColumns - 1 > details_pad.uiPadCol + details_pad.uiWinColumns) {
++pPad->uiPadCol;
(*parent_refresh)();
}
break;
default:
break;
}
}
/*------------------------------------------------------------------------*/
/** Create a window having specified parent and dimensions.
* @param pPad Pointer to the new window.
* @param pParent Parent window.
* @param uiRows Number of rows for new window.
* @param uiCols Number of columnss for new window.
*/
static bool create_pad(APPPAD* pPad, WINDOW* pParent, unsigned int uiRows,
unsigned int uiCols)
{
bool bStatus = false;
assert(pParent);
if (pPad->pPad) {
delwin(pPad->pPad);
}
if (NULL != pPad && NULL == (pPad->pPad = newpad(uiRows, uiCols))) {
goto newpad_fail;
}
pPad->uiRows = uiRows;
pPad->uiColumns = uiCols;
pPad->uiPadRow = 0;
pPad->uiPadCol = 0;
pPad->uiWinLeft = application_windows.pDetailsWin->_begx + 1;
pPad->uiWinTop = application_windows.pDetailsWin->_begy + 1;
pPad->uiWinColumns = application_windows.pDetailsWin->_maxx - 2;
pPad->uiWinRows = application_windows.pDetailsWin->_maxy - 2;
bStatus = true;
newpad_fail:
return bStatus;
}
/*------------------------------------------------------------------------*/
/** Prints help text for registry level to detail window. */
static void show_registry_level_help(void)
{
if (!create_pad(&details_pad, application_windows.pDetailsWin, 8, 256)) {
return;
}
mvwprintw(details_pad.pPad, 0, 0, _("Commands: R - run all tests in all suites"));
mvwprintw(details_pad.pPad, 1, 0, _(" S - Select a suite to run or modify"));
mvwprintw(details_pad.pPad, 2, 0, _(" L - List all registered suites"));
mvwprintw(details_pad.pPad, 3, 0, _(" A - Activate or deactivate a suite (toggle)"));
mvwprintw(details_pad.pPad, 4, 0, _(" F - Show failures from last test run"));
mvwprintw(details_pad.pPad, 5, 0, _(" O - Set CUnit options"));
mvwprintw(details_pad.pPad, 6, 0, _(" H - Show this help message"));
mvwprintw(details_pad.pPad, 7, 0, _(" Q - Quit the application"));
refresh_details_window();
}
/*------------------------------------------------------------------------*/
/** Prints help text for suite level to detail window. */
static void show_suite_level_help(CU_pSuite pSuite)
{
char szTemp[STRING_LENGTH];
assert(NULL != pSuite);
assert(NULL != pSuite->pName);
if (!create_pad(&details_pad, application_windows.pDetailsWin, 9, 256)) {
return;
}
snprintf(szTemp, STRING_LENGTH, _("Commands: R - run all tests in suite %s"),
pSuite->pName);
mvwprintw(details_pad.pPad, 0, 0, szTemp);
mvwprintw(details_pad.pPad, 1, 0, _(" S - Select and run a test"));
snprintf(szTemp, STRING_LENGTH, _(" L - List all tests registered in suite %s"),
pSuite->pName);
mvwprintw(details_pad.pPad, 2, 0, szTemp);
mvwprintw(details_pad.pPad, 3, 0, _(" A - Activate or deactivate a test (toggle)"));
mvwprintw(details_pad.pPad, 4, 0, _(" F - Show failures from last test run"));
mvwprintw(details_pad.pPad, 5, 0, _(" M - Move up to main menu"));
mvwprintw(details_pad.pPad, 6, 0, _(" O - Set CUnit options"));
mvwprintw(details_pad.pPad, 7, 0, _(" H - Show this help message"));
mvwprintw(details_pad.pPad, 8, 0, _(" Q - Quit the application"));
refresh_details_window();
}
/*------------------------------------------------------------------------*/
/** Print a list of registered suites to the detail window.
* @param pRegistry The CU_pTestRegistry to query (non-NULL).
*/
static void list_suites(CU_pTestRegistry pRegistry)
{
CU_pSuite pCurSuite = NULL;
int i;
char szTemp[STRING_LENGTH];
static size_t width[6];
if (NULL == pRegistry) {
pRegistry = CU_get_registry();
}
assert(pRegistry);
if (0 == pRegistry->uiNumberOfSuites) {
show_detail_window_message(_("No suites are registered."));
return;
}
assert(pRegistry->pSuite);
if (!create_pad(&details_pad, application_windows.pDetailsWin, pRegistry->uiNumberOfSuites + 4, 256)) {
return;
}
/* only need to calculate formatting widths once */
if (0 == width[0]) {
width[0] = CU_number_width(pRegistry->uiNumberOfSuites) + 1;
width[1] = 34;
width[2] = CU_MAX(strlen(_("Init?")), CU_MAX(f_yes_width, f_no_width)) + 1;
width[3] = CU_MAX(strlen(_("Cleanup?")), CU_MAX(f_yes_width, f_no_width)) + 1;
width[4] = CU_MAX(strlen(_("#Tests")), CU_number_width(pRegistry->uiNumberOfTests) + 1) + 1;
width[5] = CU_MAX(strlen(_("Active?")), CU_MAX(f_yes_width, f_no_width)) + 1;
}
snprintf(szTemp, STRING_LENGTH, "%*s %-*s%*s%*s%*s%*s",
width[0], _("#"),
width[1], _("Suite Name"),
width[2], _("Init?"),
width[3], _("Cleanup?"),
width[4], _("#Tests"),
width[5], _("Active?"));
mvwprintw(details_pad.pPad, 0, 0, "%s", szTemp);
for (i = 0, pCurSuite = pRegistry->pSuite; pCurSuite; pCurSuite = pCurSuite->pNext, i++) {
assert(NULL != pCurSuite->pName);
snprintf(szTemp, STRING_LENGTH, "%*d. %-*.*s%*s%*s%*u%*s",
width[0], i+1,
width[1], width[1] - 1, pCurSuite->pName,
width[2]-1, (NULL != pCurSuite->pInitializeFunc) ? _("Yes") : _("No"),
width[3], (NULL != pCurSuite->pCleanupFunc) ? _("Yes") : _("No"),
width[4], pCurSuite->uiNumberOfTests,
width[5], (CU_FALSE != pCurSuite->fActive) ? _("Yes") : _("No"));
mvwprintw(details_pad.pPad, i + 2, 0, "%s", szTemp);
}
mvwprintw(details_pad.pPad, i + 2, 0, "%s",
"---------------------------------------------------------------------------");
mvwprintw(details_pad.pPad, i + 3, 0,
_("Total Number of Suites : %-u"), pRegistry->uiNumberOfSuites);
refresh_details_window();
}
/*------------------------------------------------------------------------*/
/** Print a list of tests contained in a specified suite to the detail window.
* @param pSuite The suite to query (non-NULL).
*/
static void list_tests(CU_pSuite pSuite)
{
CU_pTest pCurTest = NULL;
unsigned int i;
char szTemp[STRING_LENGTH];
static size_t width[3];
assert(NULL != pSuite);
assert(NULL != pSuite->pName);
if (!create_pad(&details_pad, application_windows.pDetailsWin, pSuite->uiNumberOfTests + 5, 256)) {
return;
}
if (0 == pSuite->uiNumberOfTests) {
snprintf(szTemp, STRING_LENGTH,
_("Suite %s contains no tests."), pSuite->pName);
show_detail_window_message(szTemp);
return;
}
assert(pSuite->pTest);
/* only number of tests can change between calls */
width[0] = CU_number_width(pSuite->uiNumberOfTests) + 1;
if (0 == width[1]) {
width[1] = 34;
width[2] = CU_MAX(strlen(_("Active?")), CU_MAX(f_yes_width, f_no_width)) + 1;
}
snprintf(szTemp, STRING_LENGTH, "%s: %s", _("Suite"), pSuite->pName);
mvwprintw(details_pad.pPad, 0, 0, szTemp);
snprintf(szTemp, STRING_LENGTH,
"%*s %-*s%*s",
width[0], _("#"),
width[1], _("Test Name"),
width[2], _("Active?"));
mvwprintw(details_pad.pPad, 1, 0, szTemp);
for (i = 0, pCurTest = pSuite->pTest ;
NULL != pCurTest ;
pCurTest = pCurTest->pNext, i++) {
assert(NULL != pCurTest->pName);
snprintf(szTemp, STRING_LENGTH,
"%*u. %-*.*s%*s",
width[0], i + 1,
width[1], width[1]-1, pCurTest->pName,
width[2]-1, (CU_FALSE != pCurTest->fActive) ? _("Yes") : _("No"));
mvwprintw(details_pad.pPad, i + 3, 0, "%s", szTemp);
}
mvwprintw(details_pad.pPad, i + 3, 0, "%s",
"---------------------------------------------");
mvwprintw(details_pad.pPad, i + 4, 0,
_("Total Number of Tests : %-u"), pSuite->uiNumberOfTests);
refresh_details_window();
}
/*------------------------------------------------------------------------*/
/** Display the record of test failures in the detail window. */
static void show_failures(void)
{
int i;
CU_pFailureRecord pFailure = CU_get_failure_list();
unsigned int nFailures = CU_get_number_of_failure_records();
if (0 == nFailures) {
show_detail_window_message(_("No failures."));
return;
}
assert(pFailure);
if (!create_pad(&details_pad, application_windows.pDetailsWin, nFailures + 5, 256)) {
return;
}
mvwprintw(details_pad.pPad, 1, 0, "%s", _(" src_file:line# : (suite:test) : failure_condition"));
for (i = 0 ; pFailure ; pFailure = pFailure->pNext, i++) {
char szTemp[STRING_LENGTH];
snprintf(szTemp, STRING_LENGTH, "%d. %s:%d : (%s : %s) : %s", i + 1,
((NULL != pFailure->strFileName) ? pFailure->strFileName : ""),
pFailure->uiLineNumber,
(((NULL != pFailure->pSuite) && (NULL != pFailure->pSuite->pName))
? pFailure->pSuite->pName : ""),
(((NULL != pFailure->pTest) && (NULL != pFailure->pTest->pName))
? pFailure->pTest->pName : ""),
((NULL != pFailure->strCondition) ? pFailure->strCondition : ""));
mvwprintw(details_pad.pPad, i + 3, 0, "%s", szTemp);
}
mvwprintw(details_pad.pPad, i + 3, 0, "%s", "=============================================");
mvwprintw(details_pad.pPad, i + 4, 0, _("Total Number of Failures : %-u"), nFailures);
refresh_details_window();
}
/*------------------------------------------------------------------------*/
/**
* Sets CUnit options interactively using curses interface.
* Displays actions and responds based on user imput.
*/
static STATUS curses_set_options_run(void)
{
char szTemp[STRING_LENGTH];
STATUS eStatus = CONTINUE;
long option_num;
if (!create_pad(&details_pad, application_windows.pDetailsWin, 3, 256)) {
return eStatus;
}
mvwprintw(details_pad.pPad, 0, 0, _("CUnit Options:"));
while (CONTINUE == eStatus) {
snprintf(szTemp, STRING_LENGTH, _(" 1 - Inactive suites/tests treated as runtime failures %s"),
(CU_FALSE != CU_get_fail_on_inactive()) ? _("Yes") : _("No "));
mvwprintw(details_pad.pPad, 2, 0, szTemp);
refresh_details_window();
read_input_string(_("Enter number of option to change : "), szTemp, STRING_LENGTH);
option_num = atol(szTemp);
switch (option_num) {
case 1:
CU_set_fail_on_inactive((CU_FALSE == CU_get_fail_on_inactive()) ? CU_TRUE : CU_FALSE);
break;
default:
eStatus = MOVE_UP;
break;
}
}
return eStatus;
}
/*------------------------------------------------------------------------*/
/** Run all tests within the curses interface.
* The test registry is changed to the specified registry
* before running the tests, and reset to the original
* registry when done.
* @param pRegistry The CU_pTestRegistry containing the tests
* to be run (non-NULL).
* @return An error code indicating the error status
* during the test run.
*/
static CU_ErrorCode curses_run_all_tests(CU_pTestRegistry pRegistry)
{
CU_pTestRegistry pOldRegistry = NULL;
CU_ErrorCode result;
assert(pRegistry);
reset_run_parameters();
f_uiTotalTests = pRegistry->uiNumberOfTests;
f_uiTotalSuites = pRegistry->uiNumberOfSuites;
if (NULL != pRegistry) {
pOldRegistry = CU_set_registry(pRegistry);
}
result = CU_run_all_tests();
if (NULL != pOldRegistry) {
CU_set_registry(pOldRegistry);
}
return result;
}
/*------------------------------------------------------------------------*/
/** Run a specified suite within the curses interface.
* @param pSuite The suite to be run (non-NULL).
* @return An error code indicating the error status
* during the test run.
*/
static CU_ErrorCode curses_run_suite_tests(CU_pSuite pSuite)
{
reset_run_parameters();
f_uiTotalTests = pSuite->uiNumberOfTests;
f_uiTotalSuites = 1;
return CU_run_suite(pSuite);
}
/*------------------------------------------------------------------------*/
/** Run a specific test for the specified suite within
* the curses interface.
* @param pSuite The suite containing the test to be run (non-NULL).
* @param pTest The test to be run (non-NULL).
* @return An error code indicating the error status
* during the test run.
*/
static CU_ErrorCode curses_run_single_test(CU_pSuite pSuite, CU_pTest pTest)
{
reset_run_parameters();
f_uiTotalTests = 1;
f_uiTotalSuites = 1;
return CU_run_test(pSuite, pTest);
}
/*------------------------------------------------------------------------*/
/** Reset the local run counters and prepare for a test run. */
static void reset_run_parameters(void)
{
f_pCurrentTest = NULL;
f_pCurrentSuite = NULL;
f_uiTestsRunSuccessful = f_uiTestsRun = f_uiTotalTests = f_uiTestsFailed = f_uiTestsSkipped = 0;
f_uiTotalSuites = f_uiSuitesSkipped = 0;
refresh_progress_window();
refresh_summary_window();
refresh_run_summary_window();
}
/*------------------------------------------------------------------------*/
/** Handler function called at start of each test.
* @param pTest The test being run.
* @param pSuite The suite containing the test.
*/
static void curses_test_start_message_handler(const CU_pTest pTest, const CU_pSuite pSuite)
{
f_pCurrentTest = (CU_pTest)pTest;
f_pCurrentSuite = (CU_pSuite)pSuite;
refresh_run_summary_window();
}
/*------------------------------------------------------------------------*/
/** Handler function called at completion of each test.
* @param pTest The test being run.
* @param pSuite The suite containing the test.
* @param pFailure Pointer to the 1st failure record for this test.
*/
static void curses_test_complete_message_handler(const CU_pTest pTest,
const CU_pSuite pSuite,
const CU_pFailureRecord pFailure)
{
/* Not used in curses implementation - quiet compiler warning */
CU_UNREFERENCED_PARAMETER(pTest);
CU_UNREFERENCED_PARAMETER(pSuite);
CU_UNREFERENCED_PARAMETER(pFailure);
f_uiTestsRun++;
if (CU_get_number_of_tests_failed() != f_uiTestsFailed) {
f_uiTestsFailed++;
}
else {
f_uiTestsRunSuccessful++;
}
refresh_summary_window();
refresh_progress_window();
}
/*------------------------------------------------------------------------*/
/** Handler function called at completion of all tests in a suite.
* @param pFailure Pointer to the test failure record list.
*/
static void curses_all_tests_complete_message_handler(const CU_pFailureRecord pFailure)
{
/* Not used in curses implementation - quiet compiler warning */
CU_UNREFERENCED_PARAMETER(pFailure);
f_pCurrentTest = NULL;
f_pCurrentSuite = NULL;
if (!create_pad(&details_pad, application_windows.pDetailsWin, 21, 256)) {
return;
}
mvwprintw(details_pad.pPad, 0, 0, "%s", _("====== Suite Run Summary ======"));
mvwprintw(details_pad.pPad, 1, 0, _(" TOTAL SUITES: %4u"), f_uiTotalSuites);
mvwprintw(details_pad.pPad, 2, 0, _(" Run: %4u"), f_uiTotalSuites - f_uiSuitesSkipped);
mvwprintw(details_pad.pPad, 3, 0, _(" Skipped: %4u"), f_uiSuitesSkipped);
mvwprintw(details_pad.pPad, 4, 0, _(" Inactive: %4u"), CU_get_number_of_suites_inactive());
mvwprintw(details_pad.pPad, 6, 0, "%s", _("====== Test Run Summary ======="));
mvwprintw(details_pad.pPad, 7, 0, _(" TOTAL TESTS: %4u"), f_uiTotalTests);
mvwprintw(details_pad.pPad, 8, 0, _(" Run: %4u"), f_uiTestsRun);
mvwprintw(details_pad.pPad, 9, 0, _(" Skipped: %4u"), f_uiTestsSkipped);
mvwprintw(details_pad.pPad, 10, 0, _(" Successful: %4u"), f_uiTestsRunSuccessful);
mvwprintw(details_pad.pPad, 11, 0, _(" Failed: %4u"), f_uiTestsFailed);
mvwprintw(details_pad.pPad, 12, 0, _(" Inactive: %4u"), CU_get_number_of_tests_inactive());
mvwprintw(details_pad.pPad, 14, 0, "%s", _("====== Assertion Summary ======"));
mvwprintw(details_pad.pPad, 15, 0, _(" TOTAL ASSERTS: %4u"), CU_get_number_of_asserts());
mvwprintw(details_pad.pPad, 16, 0, _(" Passed: %4u"), CU_get_number_of_successes());
mvwprintw(details_pad.pPad, 17, 0, _(" Failed: %4u"), CU_get_number_of_failures());
mvwprintw(details_pad.pPad, 19, 0, "%s", _("====== Failure Summary ======"));
mvwprintw(details_pad.pPad, 20, 0, _(" TOTAL FAILURES: %4u"), CU_get_number_of_failure_records());
refresh_details_window();
refresh_run_summary_window();
}
/*------------------------------------------------------------------------*/
/** Handler function called when suite initialization fails.
* @param pSuite The suite for which initialization failed.
*/
static void curses_suite_init_failure_message_handler(const CU_pSuite pSuite)
{
assert(pSuite);
f_uiTestsSkipped += pSuite->uiNumberOfTests;
f_uiSuitesSkipped++;
refresh_summary_window();
refresh_progress_window();
}
/** @} */
cunit-2.1-3-dfsg/CUnit/Sources/Curses/Makefile.am 0000664 0000000 0000000 00000000266 12607012350 0021524 0 ustar 00root root 0000000 0000000 ## Process this file with automake to produce Makefile.in
AM_CPPFLAGS = -I$(top_srcdir)/CUnit/Headers
noinst_LTLIBRARIES = libcunitcurses.la
libcunitcurses_la_SOURCES = \
Curses.c
cunit-2.1-3-dfsg/CUnit/Sources/Curses/Makefile.in 0000664 0000000 0000000 00000042546 12607012350 0021544 0 ustar 00root root 0000000 0000000 # Makefile.in generated by automake 1.14 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = CUnit/Sources/Curses
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LTLIBRARIES = $(noinst_LTLIBRARIES)
libcunitcurses_la_LIBADD =
am_libcunitcurses_la_OBJECTS = Curses.lo
libcunitcurses_la_OBJECTS = $(am_libcunitcurses_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_@AM_V@)
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
am__v_CC_0 = @echo " CC " $@;
am__v_CC_1 =
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(libcunitcurses_la_SOURCES)
DIST_SOURCES = $(libcunitcurses_la_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_AUTOMATED = @BUILD_AUTOMATED@
BUILD_BASIC = @BUILD_BASIC@
BUILD_CONSOLE = @BUILD_CONSOLE@
BUILD_CURSES = @BUILD_CURSES@
BUILD_EXAMPLES = @BUILD_EXAMPLES@
BUILD_TEST = @BUILD_TEST@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CURSES_LIB = @CURSES_LIB@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_DEBUG = @ENABLE_DEBUG@
ENABLE_DEPRECATED = @ENABLE_DEPRECATED@
ENABLE_MEMTRACE = @ENABLE_MEMTRACE@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBTOOL_AGE = @LIBTOOL_AGE@
LIBTOOL_CURRENT = @LIBTOOL_CURRENT@
LIBTOOL_REVISION = @LIBTOOL_REVISION@
LIBTOOL_SUFFIX = @LIBTOOL_SUFFIX@
LIBTOOL_SUFFIX1 = @LIBTOOL_SUFFIX1@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
RELEASE = @RELEASE@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
VERSION_MAJOR = @VERSION_MAJOR@
VERSION_MINOR = @VERSION_MINOR@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AM_CPPFLAGS = -I$(top_srcdir)/CUnit/Headers
noinst_LTLIBRARIES = libcunitcurses.la
libcunitcurses_la_SOURCES = \
Curses.c
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu CUnit/Sources/Curses/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu CUnit/Sources/Curses/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
clean-noinstLTLIBRARIES:
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@list='$(noinst_LTLIBRARIES)'; \
locs=`for p in $$list; do echo $$p; done | \
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
sort -u`; \
test -z "$$locs" || { \
echo rm -f $${locs}; \
rm -f $${locs}; \
}
libcunitcurses.la: $(libcunitcurses_la_OBJECTS) $(libcunitcurses_la_DEPENDENCIES) $(EXTRA_libcunitcurses_la_DEPENDENCIES)
$(AM_V_CCLD)$(LINK) $(libcunitcurses_la_OBJECTS) $(libcunitcurses_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Curses.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-am
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-am
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(LTLIBRARIES)
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am:
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
cunit-2.1-3-dfsg/CUnit/Sources/Framework/ 0000775 0000000 0000000 00000000000 12607012350 0020155 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/CUnit/Sources/Framework/.deps/ 0000775 0000000 0000000 00000000000 12607012350 0021166 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/CUnit/Sources/Framework/.deps/CUError.Plo 0000664 0000000 0000000 00000012050 12607012350 0023161 0 ustar 00root root 0000000 0000000 CUError.lo: CUError.c /usr/include/stdio.h /usr/include/sys/cdefs.h \
/usr/include/sys/_symbol_aliasing.h \
/usr/include/sys/_posix_availability.h /usr/include/Availability.h \
/usr/include/AvailabilityInternal.h /usr/include/_types.h \
/usr/include/sys/_types.h /usr/include/machine/_types.h \
/usr/include/i386/_types.h /usr/include/sys/_types/_va_list.h \
/usr/include/sys/_types/_size_t.h /usr/include/sys/_types/_null.h \
/usr/include/sys/_types/_off_t.h /usr/include/sys/_types/_ssize_t.h \
/usr/include/secure/_stdio.h /usr/include/secure/_common.h \
/usr/include/stdlib.h /usr/include/sys/wait.h \
/usr/include/sys/_types/_pid_t.h /usr/include/sys/_types/_id_t.h \
/usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \
/usr/include/machine/signal.h /usr/include/i386/signal.h \
/usr/include/machine/_mcontext.h /usr/include/i386/_mcontext.h \
/usr/include/mach/i386/_structs.h \
/usr/include/sys/_types/_sigaltstack.h \
/usr/include/sys/_types/_ucontext.h \
/usr/include/sys/_types/_pthread_attr_t.h \
/usr/include/sys/_types/_sigset_t.h /usr/include/sys/_types/_uid_t.h \
/usr/include/sys/resource.h \
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h \
/usr/include/stdint.h /usr/include/sys/_types/_int8_t.h \
/usr/include/sys/_types/_int16_t.h /usr/include/sys/_types/_int32_t.h \
/usr/include/sys/_types/_int64_t.h /usr/include/_types/_uint8_t.h \
/usr/include/_types/_uint16_t.h /usr/include/_types/_uint32_t.h \
/usr/include/_types/_uint64_t.h /usr/include/sys/_types/_intptr_t.h \
/usr/include/sys/_types/_uintptr_t.h /usr/include/_types/_intmax_t.h \
/usr/include/_types/_uintmax_t.h /usr/include/sys/_types/_timeval.h \
/usr/include/machine/endian.h /usr/include/i386/endian.h \
/usr/include/sys/_endian.h /usr/include/libkern/_OSByteOrder.h \
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
/usr/include/sys/_types/_ct_rune_t.h /usr/include/sys/_types/_rune_t.h \
/usr/include/sys/_types/_wchar_t.h /usr/include/machine/types.h \
/usr/include/i386/types.h /usr/include/sys/_types/___offsetof.h \
/usr/include/sys/_types/_dev_t.h /usr/include/sys/_types/_mode_t.h \
../../../CUnit/Headers/CUnit_intl.h ../../../CUnit/Headers/CUError.h \
/usr/include/errno.h /usr/include/sys/errno.h \
../../../CUnit/Headers/CUnit.h /usr/include/string.h \
/usr/include/strings.h /usr/include/secure/_string.h \
/usr/include/math.h ../../../CUnit/Headers/TestDB.h \
/usr/include/setjmp.h ../../../CUnit/Headers/TestRun.h
/usr/include/stdio.h:
/usr/include/sys/cdefs.h:
/usr/include/sys/_symbol_aliasing.h:
/usr/include/sys/_posix_availability.h:
/usr/include/Availability.h:
/usr/include/AvailabilityInternal.h:
/usr/include/_types.h:
/usr/include/sys/_types.h:
/usr/include/machine/_types.h:
/usr/include/i386/_types.h:
/usr/include/sys/_types/_va_list.h:
/usr/include/sys/_types/_size_t.h:
/usr/include/sys/_types/_null.h:
/usr/include/sys/_types/_off_t.h:
/usr/include/sys/_types/_ssize_t.h:
/usr/include/secure/_stdio.h:
/usr/include/secure/_common.h:
/usr/include/stdlib.h:
/usr/include/sys/wait.h:
/usr/include/sys/_types/_pid_t.h:
/usr/include/sys/_types/_id_t.h:
/usr/include/sys/signal.h:
/usr/include/sys/appleapiopts.h:
/usr/include/machine/signal.h:
/usr/include/i386/signal.h:
/usr/include/machine/_mcontext.h:
/usr/include/i386/_mcontext.h:
/usr/include/mach/i386/_structs.h:
/usr/include/sys/_types/_sigaltstack.h:
/usr/include/sys/_types/_ucontext.h:
/usr/include/sys/_types/_pthread_attr_t.h:
/usr/include/sys/_types/_sigset_t.h:
/usr/include/sys/_types/_uid_t.h:
/usr/include/sys/resource.h:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h:
/usr/include/stdint.h:
/usr/include/sys/_types/_int8_t.h:
/usr/include/sys/_types/_int16_t.h:
/usr/include/sys/_types/_int32_t.h:
/usr/include/sys/_types/_int64_t.h:
/usr/include/_types/_uint8_t.h:
/usr/include/_types/_uint16_t.h:
/usr/include/_types/_uint32_t.h:
/usr/include/_types/_uint64_t.h:
/usr/include/sys/_types/_intptr_t.h:
/usr/include/sys/_types/_uintptr_t.h:
/usr/include/_types/_intmax_t.h:
/usr/include/_types/_uintmax_t.h:
/usr/include/sys/_types/_timeval.h:
/usr/include/machine/endian.h:
/usr/include/i386/endian.h:
/usr/include/sys/_endian.h:
/usr/include/libkern/_OSByteOrder.h:
/usr/include/libkern/i386/_OSByteOrder.h:
/usr/include/alloca.h:
/usr/include/sys/_types/_ct_rune_t.h:
/usr/include/sys/_types/_rune_t.h:
/usr/include/sys/_types/_wchar_t.h:
/usr/include/machine/types.h:
/usr/include/i386/types.h:
/usr/include/sys/_types/___offsetof.h:
/usr/include/sys/_types/_dev_t.h:
/usr/include/sys/_types/_mode_t.h:
../../../CUnit/Headers/CUnit_intl.h:
../../../CUnit/Headers/CUError.h:
/usr/include/errno.h:
/usr/include/sys/errno.h:
../../../CUnit/Headers/CUnit.h:
/usr/include/string.h:
/usr/include/strings.h:
/usr/include/secure/_string.h:
/usr/include/math.h:
../../../CUnit/Headers/TestDB.h:
/usr/include/setjmp.h:
../../../CUnit/Headers/TestRun.h:
cunit-2.1-3-dfsg/CUnit/Sources/Framework/.deps/MyMem.Plo 0000664 0000000 0000000 00000013270 12607012350 0022671 0 ustar 00root root 0000000 0000000 MyMem.lo: MyMem.c /usr/include/stdio.h /usr/include/sys/cdefs.h \
/usr/include/sys/_symbol_aliasing.h \
/usr/include/sys/_posix_availability.h /usr/include/Availability.h \
/usr/include/AvailabilityInternal.h /usr/include/_types.h \
/usr/include/sys/_types.h /usr/include/machine/_types.h \
/usr/include/i386/_types.h /usr/include/sys/_types/_va_list.h \
/usr/include/sys/_types/_size_t.h /usr/include/sys/_types/_null.h \
/usr/include/sys/_types/_off_t.h /usr/include/sys/_types/_ssize_t.h \
/usr/include/secure/_stdio.h /usr/include/secure/_common.h \
/usr/include/stdlib.h /usr/include/sys/wait.h \
/usr/include/sys/_types/_pid_t.h /usr/include/sys/_types/_id_t.h \
/usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \
/usr/include/machine/signal.h /usr/include/i386/signal.h \
/usr/include/machine/_mcontext.h /usr/include/i386/_mcontext.h \
/usr/include/mach/i386/_structs.h \
/usr/include/sys/_types/_sigaltstack.h \
/usr/include/sys/_types/_ucontext.h \
/usr/include/sys/_types/_pthread_attr_t.h \
/usr/include/sys/_types/_sigset_t.h /usr/include/sys/_types/_uid_t.h \
/usr/include/sys/resource.h \
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h \
/usr/include/stdint.h /usr/include/sys/_types/_int8_t.h \
/usr/include/sys/_types/_int16_t.h /usr/include/sys/_types/_int32_t.h \
/usr/include/sys/_types/_int64_t.h /usr/include/_types/_uint8_t.h \
/usr/include/_types/_uint16_t.h /usr/include/_types/_uint32_t.h \
/usr/include/_types/_uint64_t.h /usr/include/sys/_types/_intptr_t.h \
/usr/include/sys/_types/_uintptr_t.h /usr/include/_types/_intmax_t.h \
/usr/include/_types/_uintmax_t.h /usr/include/sys/_types/_timeval.h \
/usr/include/machine/endian.h /usr/include/i386/endian.h \
/usr/include/sys/_endian.h /usr/include/libkern/_OSByteOrder.h \
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
/usr/include/sys/_types/_ct_rune_t.h /usr/include/sys/_types/_rune_t.h \
/usr/include/sys/_types/_wchar_t.h /usr/include/machine/types.h \
/usr/include/i386/types.h /usr/include/sys/_types/___offsetof.h \
/usr/include/sys/_types/_dev_t.h /usr/include/sys/_types/_mode_t.h \
/usr/include/ctype.h /usr/include/runetype.h \
/usr/include/sys/_types/_wint_t.h /usr/include/errno.h \
/usr/include/sys/errno.h /usr/include/assert.h /usr/include/string.h \
/usr/include/strings.h /usr/include/secure/_string.h \
/usr/include/time.h /usr/include/_structs.h \
/usr/include/sys/_structs.h /usr/include/sys/_types/_timespec.h \
/usr/include/sys/_types/_clock_t.h /usr/include/sys/_types/_time_t.h \
../../../CUnit/Headers/CUnit.h /usr/include/math.h \
../../../CUnit/Headers/CUError.h ../../../CUnit/Headers/TestDB.h \
/usr/include/setjmp.h ../../../CUnit/Headers/TestRun.h \
../../../CUnit/Headers/MyMem.h ../../../CUnit/Headers/CUnit_intl.h
/usr/include/stdio.h:
/usr/include/sys/cdefs.h:
/usr/include/sys/_symbol_aliasing.h:
/usr/include/sys/_posix_availability.h:
/usr/include/Availability.h:
/usr/include/AvailabilityInternal.h:
/usr/include/_types.h:
/usr/include/sys/_types.h:
/usr/include/machine/_types.h:
/usr/include/i386/_types.h:
/usr/include/sys/_types/_va_list.h:
/usr/include/sys/_types/_size_t.h:
/usr/include/sys/_types/_null.h:
/usr/include/sys/_types/_off_t.h:
/usr/include/sys/_types/_ssize_t.h:
/usr/include/secure/_stdio.h:
/usr/include/secure/_common.h:
/usr/include/stdlib.h:
/usr/include/sys/wait.h:
/usr/include/sys/_types/_pid_t.h:
/usr/include/sys/_types/_id_t.h:
/usr/include/sys/signal.h:
/usr/include/sys/appleapiopts.h:
/usr/include/machine/signal.h:
/usr/include/i386/signal.h:
/usr/include/machine/_mcontext.h:
/usr/include/i386/_mcontext.h:
/usr/include/mach/i386/_structs.h:
/usr/include/sys/_types/_sigaltstack.h:
/usr/include/sys/_types/_ucontext.h:
/usr/include/sys/_types/_pthread_attr_t.h:
/usr/include/sys/_types/_sigset_t.h:
/usr/include/sys/_types/_uid_t.h:
/usr/include/sys/resource.h:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h:
/usr/include/stdint.h:
/usr/include/sys/_types/_int8_t.h:
/usr/include/sys/_types/_int16_t.h:
/usr/include/sys/_types/_int32_t.h:
/usr/include/sys/_types/_int64_t.h:
/usr/include/_types/_uint8_t.h:
/usr/include/_types/_uint16_t.h:
/usr/include/_types/_uint32_t.h:
/usr/include/_types/_uint64_t.h:
/usr/include/sys/_types/_intptr_t.h:
/usr/include/sys/_types/_uintptr_t.h:
/usr/include/_types/_intmax_t.h:
/usr/include/_types/_uintmax_t.h:
/usr/include/sys/_types/_timeval.h:
/usr/include/machine/endian.h:
/usr/include/i386/endian.h:
/usr/include/sys/_endian.h:
/usr/include/libkern/_OSByteOrder.h:
/usr/include/libkern/i386/_OSByteOrder.h:
/usr/include/alloca.h:
/usr/include/sys/_types/_ct_rune_t.h:
/usr/include/sys/_types/_rune_t.h:
/usr/include/sys/_types/_wchar_t.h:
/usr/include/machine/types.h:
/usr/include/i386/types.h:
/usr/include/sys/_types/___offsetof.h:
/usr/include/sys/_types/_dev_t.h:
/usr/include/sys/_types/_mode_t.h:
/usr/include/ctype.h:
/usr/include/runetype.h:
/usr/include/sys/_types/_wint_t.h:
/usr/include/errno.h:
/usr/include/sys/errno.h:
/usr/include/assert.h:
/usr/include/string.h:
/usr/include/strings.h:
/usr/include/secure/_string.h:
/usr/include/time.h:
/usr/include/_structs.h:
/usr/include/sys/_structs.h:
/usr/include/sys/_types/_timespec.h:
/usr/include/sys/_types/_clock_t.h:
/usr/include/sys/_types/_time_t.h:
../../../CUnit/Headers/CUnit.h:
/usr/include/math.h:
../../../CUnit/Headers/CUError.h:
../../../CUnit/Headers/TestDB.h:
/usr/include/setjmp.h:
../../../CUnit/Headers/TestRun.h:
../../../CUnit/Headers/MyMem.h:
../../../CUnit/Headers/CUnit_intl.h:
cunit-2.1-3-dfsg/CUnit/Sources/Framework/.deps/TestDB.Plo 0000664 0000000 0000000 00000012722 12607012350 0022773 0 ustar 00root root 0000000 0000000 TestDB.lo: TestDB.c /usr/include/stdio.h /usr/include/sys/cdefs.h \
/usr/include/sys/_symbol_aliasing.h \
/usr/include/sys/_posix_availability.h /usr/include/Availability.h \
/usr/include/AvailabilityInternal.h /usr/include/_types.h \
/usr/include/sys/_types.h /usr/include/machine/_types.h \
/usr/include/i386/_types.h /usr/include/sys/_types/_va_list.h \
/usr/include/sys/_types/_size_t.h /usr/include/sys/_types/_null.h \
/usr/include/sys/_types/_off_t.h /usr/include/sys/_types/_ssize_t.h \
/usr/include/secure/_stdio.h /usr/include/secure/_common.h \
/usr/include/stdlib.h /usr/include/sys/wait.h \
/usr/include/sys/_types/_pid_t.h /usr/include/sys/_types/_id_t.h \
/usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \
/usr/include/machine/signal.h /usr/include/i386/signal.h \
/usr/include/machine/_mcontext.h /usr/include/i386/_mcontext.h \
/usr/include/mach/i386/_structs.h \
/usr/include/sys/_types/_sigaltstack.h \
/usr/include/sys/_types/_ucontext.h \
/usr/include/sys/_types/_pthread_attr_t.h \
/usr/include/sys/_types/_sigset_t.h /usr/include/sys/_types/_uid_t.h \
/usr/include/sys/resource.h \
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h \
/usr/include/stdint.h /usr/include/sys/_types/_int8_t.h \
/usr/include/sys/_types/_int16_t.h /usr/include/sys/_types/_int32_t.h \
/usr/include/sys/_types/_int64_t.h /usr/include/_types/_uint8_t.h \
/usr/include/_types/_uint16_t.h /usr/include/_types/_uint32_t.h \
/usr/include/_types/_uint64_t.h /usr/include/sys/_types/_intptr_t.h \
/usr/include/sys/_types/_uintptr_t.h /usr/include/_types/_intmax_t.h \
/usr/include/_types/_uintmax_t.h /usr/include/sys/_types/_timeval.h \
/usr/include/machine/endian.h /usr/include/i386/endian.h \
/usr/include/sys/_endian.h /usr/include/libkern/_OSByteOrder.h \
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
/usr/include/sys/_types/_ct_rune_t.h /usr/include/sys/_types/_rune_t.h \
/usr/include/sys/_types/_wchar_t.h /usr/include/machine/types.h \
/usr/include/i386/types.h /usr/include/sys/_types/___offsetof.h \
/usr/include/sys/_types/_dev_t.h /usr/include/sys/_types/_mode_t.h \
/usr/include/assert.h /usr/include/string.h /usr/include/strings.h \
/usr/include/secure/_string.h \
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdarg.h \
../../../CUnit/Headers/CUnit.h /usr/include/math.h \
../../../CUnit/Headers/CUError.h /usr/include/errno.h \
/usr/include/sys/errno.h ../../../CUnit/Headers/TestDB.h \
/usr/include/setjmp.h ../../../CUnit/Headers/TestRun.h \
../../../CUnit/Headers/MyMem.h ../../../CUnit/Headers/Util.h \
../../../CUnit/Headers/CUnit_intl.h
/usr/include/stdio.h:
/usr/include/sys/cdefs.h:
/usr/include/sys/_symbol_aliasing.h:
/usr/include/sys/_posix_availability.h:
/usr/include/Availability.h:
/usr/include/AvailabilityInternal.h:
/usr/include/_types.h:
/usr/include/sys/_types.h:
/usr/include/machine/_types.h:
/usr/include/i386/_types.h:
/usr/include/sys/_types/_va_list.h:
/usr/include/sys/_types/_size_t.h:
/usr/include/sys/_types/_null.h:
/usr/include/sys/_types/_off_t.h:
/usr/include/sys/_types/_ssize_t.h:
/usr/include/secure/_stdio.h:
/usr/include/secure/_common.h:
/usr/include/stdlib.h:
/usr/include/sys/wait.h:
/usr/include/sys/_types/_pid_t.h:
/usr/include/sys/_types/_id_t.h:
/usr/include/sys/signal.h:
/usr/include/sys/appleapiopts.h:
/usr/include/machine/signal.h:
/usr/include/i386/signal.h:
/usr/include/machine/_mcontext.h:
/usr/include/i386/_mcontext.h:
/usr/include/mach/i386/_structs.h:
/usr/include/sys/_types/_sigaltstack.h:
/usr/include/sys/_types/_ucontext.h:
/usr/include/sys/_types/_pthread_attr_t.h:
/usr/include/sys/_types/_sigset_t.h:
/usr/include/sys/_types/_uid_t.h:
/usr/include/sys/resource.h:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h:
/usr/include/stdint.h:
/usr/include/sys/_types/_int8_t.h:
/usr/include/sys/_types/_int16_t.h:
/usr/include/sys/_types/_int32_t.h:
/usr/include/sys/_types/_int64_t.h:
/usr/include/_types/_uint8_t.h:
/usr/include/_types/_uint16_t.h:
/usr/include/_types/_uint32_t.h:
/usr/include/_types/_uint64_t.h:
/usr/include/sys/_types/_intptr_t.h:
/usr/include/sys/_types/_uintptr_t.h:
/usr/include/_types/_intmax_t.h:
/usr/include/_types/_uintmax_t.h:
/usr/include/sys/_types/_timeval.h:
/usr/include/machine/endian.h:
/usr/include/i386/endian.h:
/usr/include/sys/_endian.h:
/usr/include/libkern/_OSByteOrder.h:
/usr/include/libkern/i386/_OSByteOrder.h:
/usr/include/alloca.h:
/usr/include/sys/_types/_ct_rune_t.h:
/usr/include/sys/_types/_rune_t.h:
/usr/include/sys/_types/_wchar_t.h:
/usr/include/machine/types.h:
/usr/include/i386/types.h:
/usr/include/sys/_types/___offsetof.h:
/usr/include/sys/_types/_dev_t.h:
/usr/include/sys/_types/_mode_t.h:
/usr/include/assert.h:
/usr/include/string.h:
/usr/include/strings.h:
/usr/include/secure/_string.h:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdarg.h:
../../../CUnit/Headers/CUnit.h:
/usr/include/math.h:
../../../CUnit/Headers/CUError.h:
/usr/include/errno.h:
/usr/include/sys/errno.h:
../../../CUnit/Headers/TestDB.h:
/usr/include/setjmp.h:
../../../CUnit/Headers/TestRun.h:
../../../CUnit/Headers/MyMem.h:
../../../CUnit/Headers/Util.h:
../../../CUnit/Headers/CUnit_intl.h:
cunit-2.1-3-dfsg/CUnit/Sources/Framework/.deps/TestRun.Plo 0000664 0000000 0000000 00000013122 12607012350 0023245 0 ustar 00root root 0000000 0000000 TestRun.lo: TestRun.c /usr/include/stdlib.h /usr/include/Availability.h \
/usr/include/AvailabilityInternal.h /usr/include/_types.h \
/usr/include/sys/_types.h /usr/include/sys/cdefs.h \
/usr/include/sys/_symbol_aliasing.h \
/usr/include/sys/_posix_availability.h /usr/include/machine/_types.h \
/usr/include/i386/_types.h /usr/include/sys/wait.h \
/usr/include/sys/_types/_pid_t.h /usr/include/sys/_types/_id_t.h \
/usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \
/usr/include/machine/signal.h /usr/include/i386/signal.h \
/usr/include/machine/_mcontext.h /usr/include/i386/_mcontext.h \
/usr/include/mach/i386/_structs.h \
/usr/include/sys/_types/_sigaltstack.h \
/usr/include/sys/_types/_ucontext.h \
/usr/include/sys/_types/_pthread_attr_t.h \
/usr/include/sys/_types/_sigset_t.h /usr/include/sys/_types/_size_t.h \
/usr/include/sys/_types/_uid_t.h /usr/include/sys/resource.h \
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h \
/usr/include/stdint.h /usr/include/sys/_types/_int8_t.h \
/usr/include/sys/_types/_int16_t.h /usr/include/sys/_types/_int32_t.h \
/usr/include/sys/_types/_int64_t.h /usr/include/_types/_uint8_t.h \
/usr/include/_types/_uint16_t.h /usr/include/_types/_uint32_t.h \
/usr/include/_types/_uint64_t.h /usr/include/sys/_types/_intptr_t.h \
/usr/include/sys/_types/_uintptr_t.h /usr/include/_types/_intmax_t.h \
/usr/include/_types/_uintmax_t.h /usr/include/sys/_types/_timeval.h \
/usr/include/machine/endian.h /usr/include/i386/endian.h \
/usr/include/sys/_endian.h /usr/include/libkern/_OSByteOrder.h \
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
/usr/include/sys/_types/_ct_rune_t.h /usr/include/sys/_types/_rune_t.h \
/usr/include/sys/_types/_wchar_t.h /usr/include/sys/_types/_null.h \
/usr/include/machine/types.h /usr/include/i386/types.h \
/usr/include/sys/_types/___offsetof.h /usr/include/sys/_types/_dev_t.h \
/usr/include/sys/_types/_mode_t.h /usr/include/string.h \
/usr/include/sys/_types/_ssize_t.h /usr/include/strings.h \
/usr/include/secure/_string.h /usr/include/secure/_common.h \
/usr/include/assert.h /usr/include/stdio.h \
/usr/include/sys/_types/_va_list.h /usr/include/sys/_types/_off_t.h \
/usr/include/secure/_stdio.h /usr/include/setjmp.h /usr/include/time.h \
/usr/include/_structs.h /usr/include/sys/_structs.h \
/usr/include/sys/_types/_timespec.h /usr/include/sys/_types/_clock_t.h \
/usr/include/sys/_types/_time_t.h ../../../CUnit/Headers/CUnit.h \
/usr/include/math.h ../../../CUnit/Headers/CUError.h \
/usr/include/errno.h /usr/include/sys/errno.h \
../../../CUnit/Headers/TestDB.h ../../../CUnit/Headers/TestRun.h \
../../../CUnit/Headers/MyMem.h ../../../CUnit/Headers/Util.h \
../../../CUnit/Headers/CUnit_intl.h
/usr/include/stdlib.h:
/usr/include/Availability.h:
/usr/include/AvailabilityInternal.h:
/usr/include/_types.h:
/usr/include/sys/_types.h:
/usr/include/sys/cdefs.h:
/usr/include/sys/_symbol_aliasing.h:
/usr/include/sys/_posix_availability.h:
/usr/include/machine/_types.h:
/usr/include/i386/_types.h:
/usr/include/sys/wait.h:
/usr/include/sys/_types/_pid_t.h:
/usr/include/sys/_types/_id_t.h:
/usr/include/sys/signal.h:
/usr/include/sys/appleapiopts.h:
/usr/include/machine/signal.h:
/usr/include/i386/signal.h:
/usr/include/machine/_mcontext.h:
/usr/include/i386/_mcontext.h:
/usr/include/mach/i386/_structs.h:
/usr/include/sys/_types/_sigaltstack.h:
/usr/include/sys/_types/_ucontext.h:
/usr/include/sys/_types/_pthread_attr_t.h:
/usr/include/sys/_types/_sigset_t.h:
/usr/include/sys/_types/_size_t.h:
/usr/include/sys/_types/_uid_t.h:
/usr/include/sys/resource.h:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h:
/usr/include/stdint.h:
/usr/include/sys/_types/_int8_t.h:
/usr/include/sys/_types/_int16_t.h:
/usr/include/sys/_types/_int32_t.h:
/usr/include/sys/_types/_int64_t.h:
/usr/include/_types/_uint8_t.h:
/usr/include/_types/_uint16_t.h:
/usr/include/_types/_uint32_t.h:
/usr/include/_types/_uint64_t.h:
/usr/include/sys/_types/_intptr_t.h:
/usr/include/sys/_types/_uintptr_t.h:
/usr/include/_types/_intmax_t.h:
/usr/include/_types/_uintmax_t.h:
/usr/include/sys/_types/_timeval.h:
/usr/include/machine/endian.h:
/usr/include/i386/endian.h:
/usr/include/sys/_endian.h:
/usr/include/libkern/_OSByteOrder.h:
/usr/include/libkern/i386/_OSByteOrder.h:
/usr/include/alloca.h:
/usr/include/sys/_types/_ct_rune_t.h:
/usr/include/sys/_types/_rune_t.h:
/usr/include/sys/_types/_wchar_t.h:
/usr/include/sys/_types/_null.h:
/usr/include/machine/types.h:
/usr/include/i386/types.h:
/usr/include/sys/_types/___offsetof.h:
/usr/include/sys/_types/_dev_t.h:
/usr/include/sys/_types/_mode_t.h:
/usr/include/string.h:
/usr/include/sys/_types/_ssize_t.h:
/usr/include/strings.h:
/usr/include/secure/_string.h:
/usr/include/secure/_common.h:
/usr/include/assert.h:
/usr/include/stdio.h:
/usr/include/sys/_types/_va_list.h:
/usr/include/sys/_types/_off_t.h:
/usr/include/secure/_stdio.h:
/usr/include/setjmp.h:
/usr/include/time.h:
/usr/include/_structs.h:
/usr/include/sys/_structs.h:
/usr/include/sys/_types/_timespec.h:
/usr/include/sys/_types/_clock_t.h:
/usr/include/sys/_types/_time_t.h:
../../../CUnit/Headers/CUnit.h:
/usr/include/math.h:
../../../CUnit/Headers/CUError.h:
/usr/include/errno.h:
/usr/include/sys/errno.h:
../../../CUnit/Headers/TestDB.h:
../../../CUnit/Headers/TestRun.h:
../../../CUnit/Headers/MyMem.h:
../../../CUnit/Headers/Util.h:
../../../CUnit/Headers/CUnit_intl.h:
cunit-2.1-3-dfsg/CUnit/Sources/Framework/.deps/Util.Plo 0000664 0000000 0000000 00000012360 12607012350 0022561 0 ustar 00root root 0000000 0000000 Util.lo: Util.c /usr/include/stdio.h /usr/include/sys/cdefs.h \
/usr/include/sys/_symbol_aliasing.h \
/usr/include/sys/_posix_availability.h /usr/include/Availability.h \
/usr/include/AvailabilityInternal.h /usr/include/_types.h \
/usr/include/sys/_types.h /usr/include/machine/_types.h \
/usr/include/i386/_types.h /usr/include/sys/_types/_va_list.h \
/usr/include/sys/_types/_size_t.h /usr/include/sys/_types/_null.h \
/usr/include/sys/_types/_off_t.h /usr/include/sys/_types/_ssize_t.h \
/usr/include/secure/_stdio.h /usr/include/secure/_common.h \
/usr/include/stdlib.h /usr/include/sys/wait.h \
/usr/include/sys/_types/_pid_t.h /usr/include/sys/_types/_id_t.h \
/usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \
/usr/include/machine/signal.h /usr/include/i386/signal.h \
/usr/include/machine/_mcontext.h /usr/include/i386/_mcontext.h \
/usr/include/mach/i386/_structs.h \
/usr/include/sys/_types/_sigaltstack.h \
/usr/include/sys/_types/_ucontext.h \
/usr/include/sys/_types/_pthread_attr_t.h \
/usr/include/sys/_types/_sigset_t.h /usr/include/sys/_types/_uid_t.h \
/usr/include/sys/resource.h \
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h \
/usr/include/stdint.h /usr/include/sys/_types/_int8_t.h \
/usr/include/sys/_types/_int16_t.h /usr/include/sys/_types/_int32_t.h \
/usr/include/sys/_types/_int64_t.h /usr/include/_types/_uint8_t.h \
/usr/include/_types/_uint16_t.h /usr/include/_types/_uint32_t.h \
/usr/include/_types/_uint64_t.h /usr/include/sys/_types/_intptr_t.h \
/usr/include/sys/_types/_uintptr_t.h /usr/include/_types/_intmax_t.h \
/usr/include/_types/_uintmax_t.h /usr/include/sys/_types/_timeval.h \
/usr/include/machine/endian.h /usr/include/i386/endian.h \
/usr/include/sys/_endian.h /usr/include/libkern/_OSByteOrder.h \
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
/usr/include/sys/_types/_ct_rune_t.h /usr/include/sys/_types/_rune_t.h \
/usr/include/sys/_types/_wchar_t.h /usr/include/machine/types.h \
/usr/include/i386/types.h /usr/include/sys/_types/___offsetof.h \
/usr/include/sys/_types/_dev_t.h /usr/include/sys/_types/_mode_t.h \
/usr/include/ctype.h /usr/include/runetype.h \
/usr/include/sys/_types/_wint_t.h /usr/include/assert.h \
/usr/include/string.h /usr/include/strings.h \
/usr/include/secure/_string.h ../../../CUnit/Headers/CUnit.h \
/usr/include/math.h ../../../CUnit/Headers/CUError.h \
/usr/include/errno.h /usr/include/sys/errno.h \
../../../CUnit/Headers/TestDB.h /usr/include/setjmp.h \
../../../CUnit/Headers/TestRun.h ../../../CUnit/Headers/Util.h
/usr/include/stdio.h:
/usr/include/sys/cdefs.h:
/usr/include/sys/_symbol_aliasing.h:
/usr/include/sys/_posix_availability.h:
/usr/include/Availability.h:
/usr/include/AvailabilityInternal.h:
/usr/include/_types.h:
/usr/include/sys/_types.h:
/usr/include/machine/_types.h:
/usr/include/i386/_types.h:
/usr/include/sys/_types/_va_list.h:
/usr/include/sys/_types/_size_t.h:
/usr/include/sys/_types/_null.h:
/usr/include/sys/_types/_off_t.h:
/usr/include/sys/_types/_ssize_t.h:
/usr/include/secure/_stdio.h:
/usr/include/secure/_common.h:
/usr/include/stdlib.h:
/usr/include/sys/wait.h:
/usr/include/sys/_types/_pid_t.h:
/usr/include/sys/_types/_id_t.h:
/usr/include/sys/signal.h:
/usr/include/sys/appleapiopts.h:
/usr/include/machine/signal.h:
/usr/include/i386/signal.h:
/usr/include/machine/_mcontext.h:
/usr/include/i386/_mcontext.h:
/usr/include/mach/i386/_structs.h:
/usr/include/sys/_types/_sigaltstack.h:
/usr/include/sys/_types/_ucontext.h:
/usr/include/sys/_types/_pthread_attr_t.h:
/usr/include/sys/_types/_sigset_t.h:
/usr/include/sys/_types/_uid_t.h:
/usr/include/sys/resource.h:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h:
/usr/include/stdint.h:
/usr/include/sys/_types/_int8_t.h:
/usr/include/sys/_types/_int16_t.h:
/usr/include/sys/_types/_int32_t.h:
/usr/include/sys/_types/_int64_t.h:
/usr/include/_types/_uint8_t.h:
/usr/include/_types/_uint16_t.h:
/usr/include/_types/_uint32_t.h:
/usr/include/_types/_uint64_t.h:
/usr/include/sys/_types/_intptr_t.h:
/usr/include/sys/_types/_uintptr_t.h:
/usr/include/_types/_intmax_t.h:
/usr/include/_types/_uintmax_t.h:
/usr/include/sys/_types/_timeval.h:
/usr/include/machine/endian.h:
/usr/include/i386/endian.h:
/usr/include/sys/_endian.h:
/usr/include/libkern/_OSByteOrder.h:
/usr/include/libkern/i386/_OSByteOrder.h:
/usr/include/alloca.h:
/usr/include/sys/_types/_ct_rune_t.h:
/usr/include/sys/_types/_rune_t.h:
/usr/include/sys/_types/_wchar_t.h:
/usr/include/machine/types.h:
/usr/include/i386/types.h:
/usr/include/sys/_types/___offsetof.h:
/usr/include/sys/_types/_dev_t.h:
/usr/include/sys/_types/_mode_t.h:
/usr/include/ctype.h:
/usr/include/runetype.h:
/usr/include/sys/_types/_wint_t.h:
/usr/include/assert.h:
/usr/include/string.h:
/usr/include/strings.h:
/usr/include/secure/_string.h:
../../../CUnit/Headers/CUnit.h:
/usr/include/math.h:
../../../CUnit/Headers/CUError.h:
/usr/include/errno.h:
/usr/include/sys/errno.h:
../../../CUnit/Headers/TestDB.h:
/usr/include/setjmp.h:
../../../CUnit/Headers/TestRun.h:
../../../CUnit/Headers/Util.h:
cunit-2.1-3-dfsg/CUnit/Sources/Framework/CUError.c 0000664 0000000 0000000 00000016224 12607012350 0021647 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Error handling code used by CUnit
*
* 16-Jul-2004 Created access functions for error code, error action
* functions, messages for new error codes. (JDS)
*
* 02-May-2006 Added internationalization hooks. (JDS)
*/
/** @file
* Error handling functions (implementation).
*/
/** @addtogroup Framework
@{
*/
#include
#include
#include "CUnit_intl.h"
#include "CUError.h"
/*=================================================================
* Global/Static Definitions
*=================================================================*/
/** Local variable holding the current error code. */
static CU_ErrorCode g_error_number = CUE_SUCCESS;
/** Local variable holding the current error action code. */
static CU_ErrorAction g_error_action = CUEA_IGNORE;
/*=================================================================
* Private function forward declarations
*=================================================================*/
static const char* get_error_desc(CU_ErrorCode error);
#ifdef CUNIT_DO_NOT_DEFINE_UNLESS_BUILDING_TESTS
void test_exit(int status);
#endif
/*=================================================================
* Public API functions
*=================================================================*/
void CU_set_error(CU_ErrorCode error)
{
if ((error != CUE_SUCCESS) && (g_error_action == CUEA_ABORT)) {
#ifndef CUNIT_DO_NOT_DEFINE_UNLESS_BUILDING_TESTS
fprintf(stderr, _("\nAborting due to error #%d: %s\n"),
(int)error,
get_error_desc(error));
exit((int)error);
#else
test_exit(error);
#endif
}
g_error_number = error;
}
/*------------------------------------------------------------------------*/
CU_ErrorCode CU_get_error(void)
{
return g_error_number;
}
/*------------------------------------------------------------------------*/
const char* CU_get_error_msg(void)
{
return get_error_desc(g_error_number);
}
/*------------------------------------------------------------------------*/
void CU_set_error_action(CU_ErrorAction action)
{
g_error_action = action;
}
/*------------------------------------------------------------------------*/
CU_ErrorAction CU_get_error_action(void)
{
return g_error_action;
}
/*=================================================================
* Private static function definitions
*=================================================================*/
/** Internal function to look up the error message for a specified
* error code. An empty string is returned if iError is not a member
* of CU_ErrorCode. If you add an error code to enum CU_ErrorCode,
* be sure to add a corresponding error message here.
*
* @param iError CU_ErrorCode to look up.
* @return Pointer to a string containing the error message.
* @see CU_get_error_msg()
*/
static const char* get_error_desc(CU_ErrorCode iError)
{
int iMaxIndex;
static const char* ErrorDescription[] = {
N_("No Error."), /* CUE_SUCCESS - 0 */
N_("Memory allocation failed."), /* CUE_NOMEMORY - 1 */
"",
"",
"",
"",
"",
"",
"",
"",
N_("Test registry does not exist."), /* CUE_NOREGISTRY - 10 */
N_("Registry already exists."), /* CUE_REGISTRY_EXISTS - 11 */
"",
"",
"",
"",
"",
"",
"",
"",
N_("NULL suite not allowed."), /* CUE_NOSUITE - 20 */
N_("Suite name cannot be NULL."), /* CUE_NO_SUITENAME - 21 */
N_("Suite initialization function failed."), /* CUE_SINIT_FAILED - 22 */
N_("Suite cleanup function failed."), /* CUE_SCLEAN_FAILED - 23 */
N_("Suite having name already registered."), /* CUE_DUP_SUITE - 24 */
N_("Requested suite is not active."), /* CUE_SUITE_INACTIVE - 25 */
"",
"",
"",
"",
N_("NULL test or test function not allowed."),/* CUE_NOTEST - 30 */
N_("Test name cannot be NULL."), /* CUE_NO_TESTNAME - 31 */
N_("Test having this name already in suite."),/* CUE_DUP_TEST - 32 */
N_("Test not registered in specified suite."),/* CUE_TEST_NOT_IN_SUITE - 33 */
N_("Requested test is not active"), /* CUE_TEST_INACTIVE - 34 */
"",
"",
"",
"",
"",
N_("Error opening file."), /* CUE_FOPEN_FAILED - 40 */
N_("Error closing file."), /* CUE_FCLOSE_FAILED - 41 */
N_("Bad file name."), /* CUE_BAD_FILENAME - 42 */
N_("Error during write to file."), /* CUE_WRITE_ERROR - 43 */
N_("Undefined Error")
};
iMaxIndex = (int)(sizeof(ErrorDescription)/sizeof(char *) - 1);
if ((int)iError < 0) {
return _(ErrorDescription[0]);
}
else if ((int)iError > iMaxIndex) {
return _(ErrorDescription[iMaxIndex]);
}
else {
return _(ErrorDescription[(int)iError]);
}
}
/** @} */
#ifdef CUNIT_BUILD_TESTS
#include "test_cunit.h"
void test_cunit_CUError(void)
{
CU_ErrorCode old_err = CU_get_error();
CU_ErrorAction old_action = CU_get_error_action();
test_cunit_start_tests("CUError.c");
/* CU_set_error() & CU_get_error() */
CU_set_error(CUE_NOMEMORY);
TEST(CU_get_error() != CUE_SUCCESS);
TEST(CU_get_error() == CUE_NOMEMORY);
CU_set_error(CUE_NOREGISTRY);
TEST(CU_get_error() != CUE_SUCCESS);
TEST(CU_get_error() == CUE_NOREGISTRY);
/* CU_get_error_msg() */
CU_set_error(CUE_SUCCESS);
TEST(!strcmp(CU_get_error_msg(), get_error_desc(CUE_SUCCESS)));
CU_set_error(CUE_NOTEST);
TEST(!strcmp(CU_get_error_msg(), get_error_desc(CUE_NOTEST)));
CU_set_error(CUE_NOMEMORY);
TEST(!strcmp(CU_get_error_msg(), get_error_desc(CUE_NOMEMORY)));
TEST(strcmp(CU_get_error_msg(), get_error_desc(CUE_SCLEAN_FAILED)));
TEST(!strcmp(get_error_desc(100), "Undefined Error"));
/* CU_set_error_action() & CU_get_error_action() */
CU_set_error_action(CUEA_FAIL);
TEST(CU_get_error_action() != CUEA_IGNORE);
TEST(CU_get_error_action() == CUEA_FAIL);
TEST(CU_get_error_action() != CUEA_ABORT);
CU_set_error_action(CUEA_ABORT);
TEST(CU_get_error_action() != CUEA_IGNORE);
TEST(CU_get_error_action() != CUEA_FAIL);
TEST(CU_get_error_action() == CUEA_ABORT);
/* reset values */
CU_set_error(old_err);
CU_set_error_action(old_action);
test_cunit_end_tests();
}
#endif /* CUNIT_BUILD_TESTS */
cunit-2.1-3-dfsg/CUnit/Sources/Framework/Makefile.am 0000664 0000000 0000000 00000001250 12607012350 0022207 0 ustar 00root root 0000000 0000000 ## Process this file with automake to produce Makefile.in
AM_CPPFLAGS = -I$(top_srcdir)/CUnit/Headers
SHARED_SOURCES = \
CUError.c \
MyMem.c \
TestDB.c \
TestRun.c \
Util.c
noinst_LTLIBRARIES = libcunitfmk.la
libcunitfmk_la_SOURCES = $(SHARED_SOURCES)
if ENABLE_TEST
TEST_DEFINES = -DCUNIT_BUILD_TESTS -DCUNIT_DO_NOT_DEFINE_UNLESS_BUILDING_TESTS -DMEMTRACE
TEST_INCLUDES = -I../Test
%_test.o: %.c
$(COMPILE) $(TEST_INCLUDES) $(TEST_DEFINES) -o $@ -c $<
TEST_OBJECTS = \
CUError_test.o \
MyMem_test.o \
TestDB_test.o \
TestRun_test.o \
Util_test.o
noinst_LIBRARIES = libcunittestfmk.a
libcunittestfmk_a_SOURCES =
libcunittestfmk_a_LIBADD = $(TEST_OBJECTS)
endif
cunit-2.1-3-dfsg/CUnit/Sources/Framework/Makefile.in 0000664 0000000 0000000 00000046331 12607012350 0022231 0 ustar 00root root 0000000 0000000 # Makefile.in generated by automake 1.14 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = CUnit/Sources/Framework
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LIBRARIES = $(noinst_LIBRARIES)
ARFLAGS = cru
AM_V_AR = $(am__v_AR_@AM_V@)
am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
am__v_AR_0 = @echo " AR " $@;
am__v_AR_1 =
libcunittestfmk_a_AR = $(AR) $(ARFLAGS)
@ENABLE_TEST_TRUE@libcunittestfmk_a_DEPENDENCIES = $(TEST_OBJECTS)
am_libcunittestfmk_a_OBJECTS =
libcunittestfmk_a_OBJECTS = $(am_libcunittestfmk_a_OBJECTS)
LTLIBRARIES = $(noinst_LTLIBRARIES)
libcunitfmk_la_LIBADD =
am__objects_1 = CUError.lo MyMem.lo TestDB.lo TestRun.lo Util.lo
am_libcunitfmk_la_OBJECTS = $(am__objects_1)
libcunitfmk_la_OBJECTS = $(am_libcunitfmk_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_@AM_V@)
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
am__v_CC_0 = @echo " CC " $@;
am__v_CC_1 =
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(libcunittestfmk_a_SOURCES) $(libcunitfmk_la_SOURCES)
DIST_SOURCES = $(libcunittestfmk_a_SOURCES) $(libcunitfmk_la_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_AUTOMATED = @BUILD_AUTOMATED@
BUILD_BASIC = @BUILD_BASIC@
BUILD_CONSOLE = @BUILD_CONSOLE@
BUILD_CURSES = @BUILD_CURSES@
BUILD_EXAMPLES = @BUILD_EXAMPLES@
BUILD_TEST = @BUILD_TEST@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CURSES_LIB = @CURSES_LIB@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_DEBUG = @ENABLE_DEBUG@
ENABLE_DEPRECATED = @ENABLE_DEPRECATED@
ENABLE_MEMTRACE = @ENABLE_MEMTRACE@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBTOOL_AGE = @LIBTOOL_AGE@
LIBTOOL_CURRENT = @LIBTOOL_CURRENT@
LIBTOOL_REVISION = @LIBTOOL_REVISION@
LIBTOOL_SUFFIX = @LIBTOOL_SUFFIX@
LIBTOOL_SUFFIX1 = @LIBTOOL_SUFFIX1@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
RELEASE = @RELEASE@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
VERSION_MAJOR = @VERSION_MAJOR@
VERSION_MINOR = @VERSION_MINOR@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AM_CPPFLAGS = -I$(top_srcdir)/CUnit/Headers
SHARED_SOURCES = \
CUError.c \
MyMem.c \
TestDB.c \
TestRun.c \
Util.c
noinst_LTLIBRARIES = libcunitfmk.la
libcunitfmk_la_SOURCES = $(SHARED_SOURCES)
@ENABLE_TEST_TRUE@TEST_DEFINES = -DCUNIT_BUILD_TESTS -DCUNIT_DO_NOT_DEFINE_UNLESS_BUILDING_TESTS -DMEMTRACE
@ENABLE_TEST_TRUE@TEST_INCLUDES = -I../Test
@ENABLE_TEST_TRUE@TEST_OBJECTS = \
@ENABLE_TEST_TRUE@ CUError_test.o \
@ENABLE_TEST_TRUE@ MyMem_test.o \
@ENABLE_TEST_TRUE@ TestDB_test.o \
@ENABLE_TEST_TRUE@ TestRun_test.o \
@ENABLE_TEST_TRUE@ Util_test.o
@ENABLE_TEST_TRUE@noinst_LIBRARIES = libcunittestfmk.a
@ENABLE_TEST_TRUE@libcunittestfmk_a_SOURCES =
@ENABLE_TEST_TRUE@libcunittestfmk_a_LIBADD = $(TEST_OBJECTS)
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu CUnit/Sources/Framework/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu CUnit/Sources/Framework/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
libcunittestfmk.a: $(libcunittestfmk_a_OBJECTS) $(libcunittestfmk_a_DEPENDENCIES) $(EXTRA_libcunittestfmk_a_DEPENDENCIES)
$(AM_V_at)-rm -f libcunittestfmk.a
$(AM_V_AR)$(libcunittestfmk_a_AR) libcunittestfmk.a $(libcunittestfmk_a_OBJECTS) $(libcunittestfmk_a_LIBADD)
$(AM_V_at)$(RANLIB) libcunittestfmk.a
clean-noinstLTLIBRARIES:
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
@list='$(noinst_LTLIBRARIES)'; \
locs=`for p in $$list; do echo $$p; done | \
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
sort -u`; \
test -z "$$locs" || { \
echo rm -f $${locs}; \
rm -f $${locs}; \
}
libcunitfmk.la: $(libcunitfmk_la_OBJECTS) $(libcunitfmk_la_DEPENDENCIES) $(EXTRA_libcunitfmk_la_DEPENDENCIES)
$(AM_V_CCLD)$(LINK) $(libcunitfmk_la_OBJECTS) $(libcunitfmk_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CUError.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MyMem.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestDB.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestRun.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Util.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-am
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-am
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(LIBRARIES) $(LTLIBRARIES)
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \
clean-noinstLTLIBRARIES mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am:
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
clean-libtool clean-noinstLIBRARIES clean-noinstLTLIBRARIES \
cscopelist-am ctags ctags-am distclean distclean-compile \
distclean-generic distclean-libtool distclean-tags distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am
@ENABLE_TEST_TRUE@%_test.o: %.c
@ENABLE_TEST_TRUE@ $(COMPILE) $(TEST_INCLUDES) $(TEST_DEFINES) -o $@ -c $<
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
cunit-2.1-3-dfsg/CUnit/Sources/Framework/MyMem.c 0000664 0000000 0000000 00000044444 12607012350 0021357 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Memory management functions used throughout CUnit.
*
* 13/Oct/2001 Moved some of the generic functions definitions from other
* files to this one so as to use the functions consitently.
* This file is not included in the distribution headers because
* it is used internally by CUnit. (AK)
*
* 18-Jul-2004 New interface, doxygen comments, made local functions &
* constants static, fixed reporting of memory tracking (valid
* vs invalid cycles), restructured memory tracking to detect
* reallocations & multiple deletions. (JDS)
*
* 24-Apr-2005 Changed type of allocated sizes to size_t to avoid
* signed-unsigned mismatch. (JDS)
*
* 02-May-2006 Added internationalization hooks. (JDS)
*/
/** @file
* Memory management & reporting functions (implementation).
*/
/** @addtogroup Framework
@{
*/
#include
#include
#include
#include
#include
#include
#include
#include "CUnit.h"
#include "MyMem.h"
#include "CUnit_intl.h"
#ifdef MEMTRACE
#define MAX_FILE_NAME_LENGTH 256
/** Default name for memory dump file. */
static const char* f_szDefaultDumpFileName = "CUnit-Memory-Dump.xml";
/**< Default name for memory dump file. */
#ifdef CUNIT_BUILD_TESTS
/** For testing use (only) to simulate memory exhaustion -
* if CU_FALSE, allocation requests will always fail and return NULL.
*/
static CU_BOOL f_bTestCunitMallocActive = CU_TRUE;
#endif
/** Structure holding the details of a memory allocation/deallocation event. */
typedef struct mem_event {
size_t Size;
unsigned int AllocLine;
char AllocFilename[MAX_FILE_NAME_LENGTH];
unsigned int DeallocLine;
char DeallocFilename[MAX_FILE_NAME_LENGTH];
struct mem_event* pNext;
} MEMORY_EVENT;
typedef MEMORY_EVENT* PMEMORY_EVENT;
#define NOT_ALLOCATED 0
#define NOT_DELETED 0
/** Structure holding the details of a memory node having allocation/deallocation events. */
typedef struct mem_node {
void* pLocation;
unsigned int EventCount;
PMEMORY_EVENT pFirstEvent;
struct mem_node* pNext;
} MEMORY_NODE;
typedef MEMORY_NODE* PMEMORY_NODE;
static PMEMORY_NODE f_pMemoryTrackerHead = NULL; /**< Head of double-linked list of memory nodes. */
static unsigned int f_nMemoryNodes = 0; /**< Counter for memory nodes created. */
/*------------------------------------------------------------------------*/
/** Locate the memory node for the specified memory location (returns NULL if none). */
static PMEMORY_NODE find_memory_node(void* pLocation)
{
PMEMORY_NODE pMemoryNode = f_pMemoryTrackerHead;
while (NULL != pMemoryNode) {
if (pLocation == pMemoryNode->pLocation) {
break;
}
pMemoryNode = pMemoryNode->pNext;
}
return pMemoryNode;
}
/*------------------------------------------------------------------------*/
/** Create a new memory node for the specified memory location. */
static PMEMORY_NODE create_memory_node(void* pLocation)
{
PMEMORY_NODE pTempNode = NULL;
PMEMORY_NODE pMemoryNode = find_memory_node(pLocation);
/* a memory node for pLocation should not exist yet */
if (NULL == pMemoryNode) {
pMemoryNode = (PMEMORY_NODE)malloc(sizeof(MEMORY_NODE));
assert(NULL != pMemoryNode);
pMemoryNode->pLocation = pLocation;
pMemoryNode->EventCount = 0;
pMemoryNode->pFirstEvent = NULL;
pMemoryNode->pNext = NULL;
/* add new node to linked list */
pTempNode = f_pMemoryTrackerHead;
if (NULL == pTempNode) {
f_pMemoryTrackerHead = pMemoryNode;
}
else {
while (NULL != pTempNode->pNext) {
pTempNode = pTempNode->pNext;
}
pTempNode->pNext = pMemoryNode;
}
++f_nMemoryNodes;
}
return pMemoryNode;
}
/*------------------------------------------------------------------------*/
/** Add a new memory event having the specified parameters. */
static PMEMORY_EVENT add_memory_event(PMEMORY_NODE pMemoryNode,
size_t size,
unsigned int alloc_line,
const char* alloc_filename)
{
PMEMORY_EVENT pMemoryEvent = NULL;
PMEMORY_EVENT pTempEvent = NULL;
assert (NULL != pMemoryNode);
/* create and set up the new event */
pMemoryEvent = (PMEMORY_EVENT)malloc(sizeof(MEMORY_EVENT));
assert(NULL != pMemoryEvent);
pMemoryEvent->Size = size;
pMemoryEvent->AllocLine = alloc_line;
strncpy(pMemoryEvent->AllocFilename, alloc_filename, (size_t) MAX_FILE_NAME_LENGTH-1);
pMemoryEvent->AllocFilename[MAX_FILE_NAME_LENGTH-1] = (char)0;
pMemoryEvent->DeallocLine = NOT_DELETED;
pMemoryEvent->DeallocFilename[0] = (char)0;
pMemoryEvent->pNext = NULL;
/* add the new event to the end of the linked list */
pTempEvent = pMemoryNode->pFirstEvent;
if (NULL == pTempEvent) {
pMemoryNode->pFirstEvent = pMemoryEvent;
}
else {
while (NULL != pTempEvent->pNext) {
pTempEvent = pTempEvent->pNext;
}
pTempEvent->pNext = pMemoryEvent;
}
++pMemoryNode->EventCount;
return pMemoryEvent;
}
/*------------------------------------------------------------------------*/
/** Record memory allocation event. */
static PMEMORY_NODE allocate_memory(size_t nSize,
void* pLocation,
unsigned int uiAllocationLine,
const char* szAllocationFile)
{
PMEMORY_NODE pMemoryNode = NULL;
/* attempt to locate an existing record for this pLocation */
pMemoryNode = find_memory_node(pLocation);
/* pLocation not found - create a new event record */
if (NULL == pMemoryNode) {
pMemoryNode = create_memory_node(pLocation);
}
/* add the new event record */
add_memory_event(pMemoryNode, nSize, uiAllocationLine, szAllocationFile);
return pMemoryNode;
}
/*------------------------------------------------------------------------*/
/** Record memory deallocation event. */
static void deallocate_memory(void* pLocation, unsigned int uiDeletionLine, const char* szDeletionFileName)
{
PMEMORY_NODE pMemoryNode = NULL;
PMEMORY_EVENT pTempEvent = NULL;
assert(0 != uiDeletionLine);
assert(NULL != szDeletionFileName);
/* attempt to locate an existing record for this pLocation */
pMemoryNode = find_memory_node(pLocation);
/* if no entry, then an unallocated pointer was freed */
if (NULL == pMemoryNode) {
pMemoryNode = create_memory_node(pLocation);
pTempEvent = add_memory_event(pMemoryNode, 0, NOT_ALLOCATED, "");
}
else {
/* there should always be at least 1 event for an existing memory node */
assert(NULL != pMemoryNode->pFirstEvent);
/* locate last memory event for this pLocation */
pTempEvent = pMemoryNode->pFirstEvent;
while (NULL != pTempEvent->pNext) {
pTempEvent = pTempEvent->pNext;
}
/* if pointer has already been freed, create a new event for double deletion */
if (NOT_DELETED != pTempEvent->DeallocLine) {
pTempEvent = add_memory_event(pMemoryNode, pTempEvent->Size, NOT_ALLOCATED, "");
}
}
pTempEvent->DeallocLine = uiDeletionLine;
strncpy(pTempEvent->DeallocFilename, szDeletionFileName, MAX_FILE_NAME_LENGTH-1);
pTempEvent->DeallocFilename[MAX_FILE_NAME_LENGTH-1] = (char)0;
}
/*------------------------------------------------------------------------*/
/** Custom calloc function with memory event recording. */
void* CU_calloc(size_t nmemb, size_t size, unsigned int uiLine, const char* szFileName)
{
void* pVoid = NULL;
#ifdef CUNIT_BUILD_TESTS
if (CU_FALSE == f_bTestCunitMallocActive) {
return NULL;
}
#endif
pVoid = calloc(nmemb, size);
if (NULL != pVoid) {
allocate_memory(nmemb * size, pVoid, uiLine, szFileName);
}
return pVoid;
}
/*------------------------------------------------------------------------*/
/** Custom malloc function with memory event recording. */
void* CU_malloc(size_t size, unsigned int uiLine, const char* szFileName)
{
void* pVoid = NULL;
#ifdef CUNIT_BUILD_TESTS
if (CU_FALSE == f_bTestCunitMallocActive) {
return NULL;
}
#endif
pVoid = malloc(size);
if (NULL != pVoid) {
allocate_memory(size, pVoid, uiLine, szFileName);
}
return pVoid;
}
/*------------------------------------------------------------------------*/
/** Custom free function with memory event recording. */
void CU_free(void *ptr, unsigned int uiLine, const char* szFileName)
{
deallocate_memory(ptr, uiLine, szFileName);
free(ptr);
}
/*------------------------------------------------------------------------*/
/** Custom realloc function with memory event recording. */
void* CU_realloc(void *ptr, size_t size, unsigned int uiLine, const char* szFileName)
{
void* pVoid = NULL;
deallocate_memory(ptr, uiLine, szFileName);
#ifdef CUNIT_BUILD_TESTS
if (CU_FALSE == f_bTestCunitMallocActive) {
free(ptr);
return NULL;
}
#endif
pVoid = realloc(ptr, size);
if (NULL != pVoid) {
allocate_memory(size, pVoid, uiLine, szFileName);
}
return pVoid;
}
/*------------------------------------------------------------------------*/
/** Print a report of memory events to file. */
void CU_dump_memory_usage(const char* szFilename)
{
char* szDumpFileName = (char*)f_szDefaultDumpFileName;
unsigned int nValid;
unsigned int nInvalid;
PMEMORY_NODE pTempNode = NULL;
PMEMORY_EVENT pTempEvent = NULL;
FILE* pFile = NULL;
time_t tTime = 0;
/* use the specified file name, if supplied) */
if ((NULL != szFilename) && strlen(szFilename) > 0) {
szDumpFileName = (char*)szFilename;
}
if (NULL == (pFile = fopen(szDumpFileName, "w"))) {
fprintf(stderr, _("Failed to open file \"%s\" : %s"), szDumpFileName, strerror(errno));
return;
}
setvbuf(pFile, NULL, _IONBF, 0);
fprintf(pFile, "<\?xml version=\"1.0\" \?>");
fprintf(pFile, "\n<\?xml-stylesheet type=\"text/xsl\" href=\"Memory-Dump.xsl\" \?>");
fprintf(pFile, "\n");
fprintf(pFile, "\n");
fprintf(pFile, "\n ");
fprintf(pFile, "\n ");
nValid = 0;
nInvalid = 0;
pTempNode = f_pMemoryTrackerHead;
while (NULL != pTempNode) {
fprintf(pFile, "\n ");
fprintf(pFile, "\n %p ", pTempNode->pLocation);
fprintf(pFile, "\n %u ", pTempNode->EventCount);
pTempEvent = pTempNode->pFirstEvent;
while (NULL != pTempEvent) {
fprintf(pFile, "\n ");
fprintf(pFile, "\n %u ", pTempEvent->Size);
fprintf(pFile, "\n %s ", pTempEvent->AllocFilename);
fprintf(pFile, "\n %u ", pTempEvent->AllocLine);
fprintf(pFile, "\n %s ", pTempEvent->DeallocFilename);
fprintf(pFile, "\n %u ", pTempEvent->DeallocLine);
fprintf(pFile, "\n ");
if ((0 != pTempEvent->AllocLine) && (0 != pTempEvent->DeallocLine)) {
++nValid;
}
else {
++nInvalid;
}
pTempEvent = pTempEvent->pNext;
}
fprintf(pFile, "\n ");
pTempNode = pTempNode->pNext;
}
fprintf(pFile, "\n ");
fprintf(pFile, "\n ");
fprintf(pFile, "\n %u ", nValid);
fprintf(pFile, "\n %u ", nInvalid);
fprintf(pFile, "\n %u ", nValid + nInvalid);
fprintf(pFile, "\n ");
time(&tTime);
fprintf(pFile, "\n Memory Trace for CUnit Run at %s ", ctime(&tTime));
fprintf(pFile, "");
fclose(pFile);
}
#endif /* MEMTRACE */
/** @} */
#ifdef CUNIT_BUILD_TESTS
#include "test_cunit.h"
/** Deactivate CUnit memory allocation
* After calling this function, all Cunit memory
* allocation routines will fail and return NULL.
*/
void test_cunit_deactivate_malloc(void)
{
f_bTestCunitMallocActive = CU_FALSE;
}
/** Activate CUnit memory allocation
* After calling this function, all Cunit memory
* allocation routines will behave normally (allocating
* memory if it is available).
*/
void test_cunit_activate_malloc(void)
{
f_bTestCunitMallocActive = CU_TRUE;
}
/** Retrieve the number of memory events recorded for a given pointer. */
unsigned int test_cunit_get_n_memevents(void* pLocation)
{
PMEMORY_NODE pNode = find_memory_node(pLocation);
return (pNode) ? pNode->EventCount : 0;
}
/** Retrieve the number of memory allocations recorded for a given pointer. */
unsigned int test_cunit_get_n_allocations(void* pLocation)
{
PMEMORY_NODE pNode = find_memory_node(pLocation);
PMEMORY_EVENT pEvent = NULL;
int result = 0;
if (NULL != pNode) {
pEvent = pNode->pFirstEvent;
while (NULL != pEvent) {
if (pEvent->AllocLine != NOT_ALLOCATED)
++result;
pEvent = pEvent->pNext;
}
}
return result;
}
/** Retrieve the number of memory deallocations recorded for a given pointer. */
unsigned int test_cunit_get_n_deallocations(void* pLocation)
{
PMEMORY_NODE pNode = find_memory_node(pLocation);
PMEMORY_EVENT pEvent = NULL;
int result = 0;
if (NULL != pNode) {
pEvent = pNode->pFirstEvent;
while (NULL != pEvent) {
if (pEvent->DeallocLine != NOT_DELETED)
++result;
pEvent = pEvent->pNext;
}
}
return result;
}
void test_CU_calloc(void)
{
void* ptr1 = NULL;
void* ptr2 = calloc(2, sizeof(int));
unsigned int n2 = test_cunit_get_n_memevents(ptr2);
/* test allocation failure */
test_cunit_deactivate_malloc();
ptr1 = CU_CALLOC(2, sizeof(int));
TEST(NULL == ptr1);
TEST(test_cunit_get_n_allocations(ptr1) == test_cunit_get_n_deallocations(ptr1));
TEST(test_cunit_get_n_allocations(ptr2) == test_cunit_get_n_deallocations(ptr2));
test_cunit_activate_malloc();
/* normal allocation */
ptr1 = CU_CALLOC(2, sizeof(int));
TEST_FATAL(NULL != ptr1);
TEST(test_cunit_get_n_allocations(ptr1) != test_cunit_get_n_deallocations(ptr1));
TEST(test_cunit_get_n_allocations(ptr2) == test_cunit_get_n_deallocations(ptr2));
CU_FREE(ptr1);
TEST(test_cunit_get_n_allocations(ptr1) == test_cunit_get_n_deallocations(ptr1));
TEST(test_cunit_get_n_allocations(ptr2) == test_cunit_get_n_deallocations(ptr2));
TEST(n2 == test_cunit_get_n_memevents(ptr2));
free(ptr2);
}
void test_CU_malloc(void)
{
void* ptr1 = NULL;
void* ptr2 = malloc(sizeof(int));
unsigned int n2 = test_cunit_get_n_memevents(ptr2);
/* test allocation failure */
test_cunit_deactivate_malloc();
ptr1 = CU_MALLOC(sizeof(int));
TEST(NULL == ptr1);
TEST(test_cunit_get_n_allocations(ptr1) == test_cunit_get_n_deallocations(ptr1));
TEST(test_cunit_get_n_allocations(ptr2) == test_cunit_get_n_deallocations(ptr2));
test_cunit_activate_malloc();
/* normal allocation */
ptr1 = CU_MALLOC(sizeof(int));
TEST_FATAL(NULL != ptr1);
TEST(test_cunit_get_n_allocations(ptr1) != test_cunit_get_n_deallocations(ptr1));
TEST(test_cunit_get_n_allocations(ptr2) == test_cunit_get_n_deallocations(ptr2));
CU_FREE(ptr1);
TEST(test_cunit_get_n_allocations(ptr1) == test_cunit_get_n_deallocations(ptr1));
TEST(test_cunit_get_n_allocations(ptr2) == test_cunit_get_n_deallocations(ptr2));
TEST(n2 == test_cunit_get_n_memevents(ptr2));
free(ptr2);
}
void test_CU_free(void)
{
/* covered by other test functions */
}
void test_CU_realloc(void)
{
void* ptr1 = CU_MALLOC(sizeof(int));
void* ptr2 = malloc(sizeof(int));
void* ptr3;
void* ptr4;
unsigned int n2 = test_cunit_get_n_memevents(ptr2);
/* test allocation failure */
test_cunit_deactivate_malloc();
ptr1 = CU_REALLOC(ptr1, sizeof(long int));
TEST(NULL == ptr1);
TEST(test_cunit_get_n_allocations(ptr1) == test_cunit_get_n_deallocations(ptr1));
TEST(test_cunit_get_n_allocations(ptr2) == test_cunit_get_n_deallocations(ptr2));
test_cunit_activate_malloc();
/* normal allocation */
ptr3 = CU_MALLOC(sizeof(int));
TEST_FATAL(NULL != ptr3);
TEST(test_cunit_get_n_allocations(ptr1) == test_cunit_get_n_deallocations(ptr1));
TEST(test_cunit_get_n_allocations(ptr2) == test_cunit_get_n_deallocations(ptr2));
TEST(test_cunit_get_n_allocations(ptr3) != test_cunit_get_n_deallocations(ptr3));
ptr4 = CU_REALLOC(ptr3, sizeof(long int));
TEST_FATAL(NULL != ptr4);
TEST(test_cunit_get_n_allocations(ptr1) == test_cunit_get_n_deallocations(ptr1));
TEST(test_cunit_get_n_allocations(ptr2) == test_cunit_get_n_deallocations(ptr2));
if (ptr3 != ptr4)
TEST(test_cunit_get_n_allocations(ptr3) == test_cunit_get_n_deallocations(ptr3));
TEST(test_cunit_get_n_allocations(ptr4) != test_cunit_get_n_deallocations(ptr4));
CU_FREE(ptr4);
TEST(test_cunit_get_n_allocations(ptr1) == test_cunit_get_n_deallocations(ptr1));
TEST(test_cunit_get_n_allocations(ptr2) == test_cunit_get_n_deallocations(ptr2));
TEST(test_cunit_get_n_allocations(ptr3) == test_cunit_get_n_deallocations(ptr3));
TEST(test_cunit_get_n_allocations(ptr4) == test_cunit_get_n_deallocations(ptr4));
TEST(n2 == test_cunit_get_n_memevents(ptr2));
free(ptr2);
}
/** The main internal testing function for MyMem.c. */
void test_cunit_MyMem(void)
{
test_cunit_start_tests("MyMem.c");
test_CU_calloc();
test_CU_malloc();
test_CU_free();
test_CU_realloc();
test_cunit_end_tests();
}
#endif /* CUNIT_BUILD_TESTS */
cunit-2.1-3-dfsg/CUnit/Sources/Framework/TestDB.c 0000664 0000000 0000000 00000266703 12607012350 0021464 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004,2005,2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Implementation of Registry/TestGroup/Testcase management Routines.
*
* Aug 2001 Initial implementation (AK)
*
* 09/Aug/2001 Added startup initialize/cleanup registry functions. (AK)
*
* 29/Aug/2001 Added Test and Group Add functions. (AK)
*
* 02/Oct/2001 Added Proper Error codes and Messages on the failure conditions. (AK)
*
* 13/Oct/2001 Added Code to Check for the Duplicate Group name and test name. (AK)
*
* 15-Jul-2004 Added doxygen comments, new interface, added assertions to
* internal functions, moved error handling code to CUError.c,
* added assertions to make sure no modification of registry
* during a run, bug fixes, changed CU_set_registry() so that it
* doesn't require cleaning the existing registry. (JDS)
*
* 24-Apr-2006 Removed constraint that suites/tests be uniquely named.
* Added ability to turn individual tests/suites on or off.
* Added lookup functions for suites/tests based on index.
* Moved doxygen comments for public API here to header.
* Modified internal unit tests to include these changes. (JDS)
*
* 02-May-2006 Added internationalization hooks. (JDS)
*
* 16-Avr-2007 Added setup and teardown functions. (CJN)
*
*/
/** @file
* Management functions for tests, suites, and the test registry (implementation).
*/
/** @addtogroup Framework
@{
*/
#include
#include
#include
#include
#include
#include "CUnit.h"
#include "MyMem.h"
#include "TestDB.h"
#include "TestRun.h"
#include "Util.h"
#include "CUnit_intl.h"
/*=================================================================
* Global/Static Definitions
*=================================================================*/
static CU_pTestRegistry f_pTestRegistry = NULL; /**< The active internal Test Registry. */
/*=================================================================
* Private function forward declarations
*=================================================================*/
static void cleanup_test_registry(CU_pTestRegistry pRegistry);
static CU_pSuite create_suite(const char* strName, CU_InitializeFunc pInit, CU_CleanupFunc pClean, CU_SetUpFunc pSetup, CU_TearDownFunc pTear);
static void cleanup_suite(CU_pSuite pSuite);
static void insert_suite(CU_pTestRegistry pRegistry, CU_pSuite pSuite);
static CU_pTest create_test(const char* strName, CU_TestFunc pTestFunc);
static void cleanup_test(CU_pTest pTest);
static void insert_test(CU_pSuite pSuite, CU_pTest pTest);
static CU_BOOL suite_exists(CU_pTestRegistry pRegistry, const char* szSuiteName);
static CU_BOOL test_exists(CU_pSuite pSuite, const char* szTestName);
/*=================================================================
* Public Interface functions
*=================================================================*/
CU_ErrorCode CU_initialize_registry(void)
{
CU_ErrorCode result;
assert(CU_FALSE == CU_is_test_running());
CU_set_error(result = CUE_SUCCESS);
if (NULL != f_pTestRegistry) {
CU_cleanup_registry();
}
f_pTestRegistry = CU_create_new_registry();
if (NULL == f_pTestRegistry) {
CU_set_error(result = CUE_NOMEMORY);
}
return result;
}
/*------------------------------------------------------------------------*/
CU_BOOL CU_registry_initialized(void)
{
return (NULL == f_pTestRegistry) ? CU_FALSE : CU_TRUE;
}
/*------------------------------------------------------------------------*/
void CU_cleanup_registry(void)
{
assert(CU_FALSE == CU_is_test_running());
CU_set_error(CUE_SUCCESS);
CU_destroy_existing_registry(&f_pTestRegistry); /* supposed to handle NULL ok */
CU_clear_previous_results();
CU_CREATE_MEMORY_REPORT(NULL);
}
/*------------------------------------------------------------------------*/
CU_pTestRegistry CU_get_registry(void)
{
return f_pTestRegistry;
}
/*------------------------------------------------------------------------*/
CU_pTestRegistry CU_set_registry(CU_pTestRegistry pRegistry)
{
CU_pTestRegistry pOldRegistry = f_pTestRegistry;
assert(CU_FALSE == CU_is_test_running());
CU_set_error(CUE_SUCCESS);
f_pTestRegistry = pRegistry;
return pOldRegistry;
}
/*------------------------------------------------------------------------*/
CU_pSuite CU_add_suite_with_setup_and_teardown(const char* strName, CU_InitializeFunc pInit, CU_CleanupFunc pClean, CU_SetUpFunc pSetup, CU_TearDownFunc pTear)
{
CU_pSuite pRetValue = NULL;
CU_ErrorCode error = CUE_SUCCESS;
assert(CU_FALSE == CU_is_test_running());
if (NULL == f_pTestRegistry) {
error = CUE_NOREGISTRY;
}
else if (NULL == strName) {
error = CUE_NO_SUITENAME;
}
else {
pRetValue = create_suite(strName, pInit, pClean, pSetup, pTear);
if (NULL == pRetValue) {
error = CUE_NOMEMORY;
}
else {
if (CU_TRUE == suite_exists(f_pTestRegistry, strName)) {
error = CUE_DUP_SUITE;
}
insert_suite(f_pTestRegistry, pRetValue);
}
}
CU_set_error(error);
return pRetValue;
}
/*------------------------------------------------------------------------*/
CU_pSuite CU_add_suite(const char* strName, CU_InitializeFunc pInit, CU_CleanupFunc pClean)
{
return CU_add_suite_with_setup_and_teardown(strName, pInit, pClean, NULL, NULL);
}
/*------------------------------------------------------------------------*/
CU_ErrorCode CU_set_suite_active(CU_pSuite pSuite, CU_BOOL fNewActive)
{
CU_ErrorCode result = CUE_SUCCESS;
if (NULL == pSuite) {
result = CUE_NOSUITE;
}
else {
pSuite->fActive = fNewActive;
}
CU_set_error(result);
return result;
}
/*------------------------------------------------------------------------*/
CU_ErrorCode CU_set_suite_name(CU_pSuite pSuite, const char *strNewName)
{
CU_ErrorCode result = CUE_SUCCESS;
if (NULL == pSuite) {
result = CUE_NOSUITE;
}
else if (NULL == strNewName) {
result = CUE_NO_SUITENAME;
}
else {
CU_FREE(pSuite->pName);
pSuite->pName = (char *)CU_MALLOC(strlen(strNewName)+1);
strcpy(pSuite->pName, strNewName);
}
CU_set_error(result);
return result;
}
/*------------------------------------------------------------------------*/
CU_ErrorCode CU_set_suite_initfunc(CU_pSuite pSuite, CU_InitializeFunc pNewInit)
{
CU_ErrorCode result = CUE_SUCCESS;
if (NULL == pSuite) {
result = CUE_NOSUITE;
}
else {
pSuite->pInitializeFunc = pNewInit;
}
CU_set_error(result);
return result;
}
/*------------------------------------------------------------------------*/
CU_ErrorCode CU_set_suite_cleanupfunc(CU_pSuite pSuite, CU_CleanupFunc pNewClean)
{
CU_ErrorCode result = CUE_SUCCESS;
if (NULL == pSuite) {
result = CUE_NOSUITE;
}
else {
pSuite->pCleanupFunc = pNewClean;
}
CU_set_error(result);
return result;
}
/*------------------------------------------------------------------------*/
CU_pSuite CU_get_suite(const char *strName)
{
CU_pSuite result = NULL;
CU_ErrorCode error = CUE_SUCCESS;
if (NULL == f_pTestRegistry) {
error = CUE_NOREGISTRY;
}
else if (NULL == strName) {
error = CUE_NO_SUITENAME;
}
else {
result = CU_get_suite_by_name(strName, f_pTestRegistry);
}
CU_set_error(error);
return result;
}
/*------------------------------------------------------------------------*/
CU_pSuite CU_get_suite_at_pos(unsigned int pos)
{
CU_pSuite result = NULL;
CU_ErrorCode error = CUE_SUCCESS;
if (NULL == f_pTestRegistry) {
error = CUE_NOREGISTRY;
}
else {
result = CU_get_suite_by_index(pos, f_pTestRegistry);
}
CU_set_error(error);
return result;
}
/*------------------------------------------------------------------------*/
unsigned int CU_get_suite_pos(CU_pSuite pSuite)
{
unsigned int result = 0;
CU_ErrorCode error = CUE_SUCCESS;
CU_pSuite pCurrentSuite = NULL;
if (NULL == f_pTestRegistry) {
error = CUE_NOREGISTRY;
}
else if (NULL == pSuite) {
error = CUE_NOSUITE;
}
else {
pCurrentSuite = f_pTestRegistry->pSuite;
result = 1;
while ((NULL != pCurrentSuite) && (pCurrentSuite != pSuite)) {
++result;
pCurrentSuite = pCurrentSuite->pNext;
}
if (pCurrentSuite == NULL) {
result = 0;
}
}
CU_set_error(error);
return result;
}
/*------------------------------------------------------------------------*/
unsigned int CU_get_suite_pos_by_name(const char *strName)
{
unsigned int result = 0;
CU_ErrorCode error = CUE_SUCCESS;
CU_pSuite pCurrentSuite = NULL;
if (NULL == f_pTestRegistry) {
error = CUE_NOREGISTRY;
}
else if (NULL == strName) {
error = CUE_NO_SUITENAME;
}
else {
pCurrentSuite = f_pTestRegistry->pSuite;
result = 1;
while ((NULL != pCurrentSuite) && (0 != strcmp(pCurrentSuite->pName, strName))) {
++result;
pCurrentSuite = pCurrentSuite->pNext;
}
if (pCurrentSuite == NULL) {
result = 0;
}
}
CU_set_error(error);
return result;
}
/*------------------------------------------------------------------------*/
CU_pTest CU_add_test(CU_pSuite pSuite, const char* strName, CU_TestFunc pTestFunc)
{
CU_pTest pRetValue = NULL;
CU_ErrorCode error = CUE_SUCCESS;
assert(CU_FALSE == CU_is_test_running());
if (NULL == f_pTestRegistry) {
error = CUE_NOREGISTRY;
}
else if (NULL == pSuite) {
error = CUE_NOSUITE;
}
else if (NULL == strName) {
error = CUE_NO_TESTNAME;
}
else if(NULL == pTestFunc) {
error = CUE_NOTEST;
}
else {
pRetValue = create_test(strName, pTestFunc);
if (NULL == pRetValue) {
error = CUE_NOMEMORY;
}
else {
f_pTestRegistry->uiNumberOfTests++;
if (CU_TRUE == test_exists(pSuite, strName)) {
error = CUE_DUP_TEST;
}
insert_test(pSuite, pRetValue);
}
}
CU_set_error(error);
return pRetValue;
}
/*------------------------------------------------------------------------*/
CU_ErrorCode CU_set_test_active(CU_pTest pTest, CU_BOOL fNewActive)
{
CU_ErrorCode result = CUE_SUCCESS;
if (NULL == pTest) {
result = CUE_NOTEST;
}
else {
pTest->fActive = fNewActive;
}
CU_set_error(result);
return result;
}
/*------------------------------------------------------------------------*/
CU_ErrorCode CU_set_test_name(CU_pTest pTest, const char *strNewName)
{
CU_ErrorCode result = CUE_SUCCESS;
if (NULL == pTest) {
result = CUE_NOTEST;
}
else if (NULL == strNewName) {
result = CUE_NO_TESTNAME;
}
else {
CU_FREE(pTest->pName);
pTest->pName = (char *)CU_MALLOC(strlen(strNewName)+1);
strcpy(pTest->pName, strNewName);
}
CU_set_error(result);
return result;
}
/*------------------------------------------------------------------------*/
CU_ErrorCode CU_set_test_func(CU_pTest pTest, CU_TestFunc pNewFunc)
{
CU_ErrorCode result = CUE_SUCCESS;
if ((NULL == pTest) || (NULL == pNewFunc)) {
result = CUE_NOTEST;
}
else {
pTest->pTestFunc = pNewFunc;
}
CU_set_error(result);
return result;
}
/*------------------------------------------------------------------------*/
CU_pTest CU_get_test(CU_pSuite pSuite, const char *strName)
{
CU_pTest result = NULL;
CU_ErrorCode error = CUE_SUCCESS;
if (NULL == f_pTestRegistry) {
error = CUE_NOREGISTRY;
}
else if (NULL == pSuite) {
error = CUE_NOSUITE;
}
else if (NULL == strName) {
error = CUE_NO_SUITENAME;
}
else {
result = CU_get_test_by_name(strName, pSuite);
}
CU_set_error(error);
return result;
}
/*------------------------------------------------------------------------*/
CU_pTest CU_get_test_at_pos(CU_pSuite pSuite, unsigned int pos)
{
CU_pTest result = NULL;
CU_ErrorCode error = CUE_SUCCESS;
if (NULL == f_pTestRegistry) {
error = CUE_NOREGISTRY;
}
else if (NULL == pSuite) {
error = CUE_NOSUITE;
}
else {
result = CU_get_test_by_index(pos, pSuite);
}
CU_set_error(error);
return result;
}
/*------------------------------------------------------------------------*/
unsigned int CU_get_test_pos(CU_pSuite pSuite, CU_pTest pTest)
{
unsigned int result = 0;
CU_ErrorCode error = CUE_SUCCESS;
CU_pTest pCurrentTest = NULL;
if (NULL == f_pTestRegistry) {
error = CUE_NOREGISTRY;
}
else if (NULL == pSuite) {
error = CUE_NOSUITE;
}
else if (NULL == pTest) {
error = CUE_NOTEST;
}
else {
pCurrentTest = pSuite->pTest;
result = 1;
while ((NULL != pCurrentTest) && (pCurrentTest != pTest)) {
++result;
pCurrentTest = pCurrentTest->pNext;
}
if (pCurrentTest == NULL) {
result = 0;
}
}
CU_set_error(error);
return result;
}
/*------------------------------------------------------------------------*/
unsigned int CU_get_test_pos_by_name(CU_pSuite pSuite, const char *strName)
{
unsigned int result = 0;
CU_ErrorCode error = CUE_SUCCESS;
CU_pTest pCurrentTest = NULL;
if (NULL == f_pTestRegistry) {
error = CUE_NOREGISTRY;
}
else if (NULL == pSuite) {
error = CUE_NOSUITE;
}
else if (NULL == strName) {
error = CUE_NO_TESTNAME;
}
else {
pCurrentTest = pSuite->pTest;
result = 1;
while ((NULL != pCurrentTest) && (0 != strcmp(pCurrentTest->pName, strName))) {
++result;
pCurrentTest = pCurrentTest->pNext;
}
if (pCurrentTest == NULL) {
result = 0;
}
}
CU_set_error(error);
return result;
}
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
/* This section is based conceptually on code
* Copyright (C) 2004 Aurema Pty Ltd.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Derived from code contributed by K. Cheung and Aurema Pty Ltd. (thanks!)
* int test_group_register(test_group_t *tg)
* int test_suite_register(test_suite_t *ts)
*/
/*------------------------------------------------------------------------*/
CU_ErrorCode CU_register_nsuites(int suite_count, ...)
{
CU_SuiteInfo *pSuiteItem = NULL;
CU_TestInfo *pTestItem = NULL;
CU_pSuite pSuite = NULL;
va_list argptr;
int i;
va_start(argptr, suite_count);
for (i=0 ; ipName; pSuiteItem++) {
if (NULL != (pSuite = CU_add_suite_with_setup_and_teardown(pSuiteItem->pName, pSuiteItem->pInitFunc, pSuiteItem->pCleanupFunc, pSuiteItem->pSetUpFunc, pSuiteItem->pTearDownFunc))) {
for (pTestItem = pSuiteItem->pTests; NULL != pTestItem->pName; pTestItem++) {
if (NULL == CU_add_test(pSuite, pTestItem->pName, pTestItem->pTestFunc)) {
return CU_get_error();
}
}
}
else {
return CU_get_error();
}
}
}
}
return CU_get_error();
}
/*------------------------------------------------------------------------*/
CU_ErrorCode CU_register_suites(CU_SuiteInfo suite_info[])
{
return CU_register_nsuites(1, suite_info);
}
/*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*/
/*=================================================================
* Private static function definitions
*=================================================================*/
/*------------------------------------------------------------------------*/
/**
* Internal function to clean up the specified test registry.
* cleanup_suite() will be called for each registered suite to perform
* cleanup of the associated test cases. Then, the suite's memory will
* be freed. Note that any pointers to tests or suites in pRegistry
* held by the user will be invalidated by this function. Severe problems
* can occur if this function is called during a test run involving pRegistry.
* Note that memory held for data members in the registry (e.g. pName) and
* the registry itself are not freed by this function.
*
* @see cleanup_suite()
* @see cleanup_test()
* @param pRegistry CU_pTestRegistry to clean up (non-NULL).
*/
static void cleanup_test_registry(CU_pTestRegistry pRegistry)
{
CU_pSuite pCurSuite = NULL;
CU_pSuite pNextSuite = NULL;
assert(NULL != pRegistry);
pCurSuite = pRegistry->pSuite;
while (NULL != pCurSuite) {
pNextSuite = pCurSuite->pNext;
cleanup_suite(pCurSuite);
CU_FREE(pCurSuite);
pCurSuite = pNextSuite;
}
pRegistry->pSuite = NULL;
pRegistry->uiNumberOfSuites = 0;
pRegistry->uiNumberOfTests = 0;
}
/*------------------------------------------------------------------------*/
/**
* Internal function to create a new test suite having the specified parameters.
* This function creates a new test suite having the specified name and
* initialization/cleanup functions. The new suite is active for execution during
* test runs. The strName cannot be NULL (checked by assertion), but either or
* both function pointers can be. A pointer to the newly-created suite is returned,
* or NULL if there was an error allocating memory for the new suite. It is the
* responsibility of the caller to destroy the returned suite (use cleanup_suite()
* before freeing the returned pointer).
*
* @param strName Name for the new test suite (non-NULL).
* @param pInit Initialization function to call before running suite.
* @param pClean Cleanup function to call after running suite.
* @return A pointer to the newly-created suite (NULL if creation failed)
*/
static CU_pSuite create_suite(const char* strName, CU_InitializeFunc pInit, CU_CleanupFunc pClean, CU_SetUpFunc pSetup, CU_TearDownFunc pTear)
{
CU_pSuite pRetValue = (CU_pSuite)CU_MALLOC(sizeof(CU_Suite));
assert(NULL != strName);
if (NULL != pRetValue) {
pRetValue->pName = (char *)CU_MALLOC(strlen(strName)+1);
if (NULL != pRetValue->pName) {
strcpy(pRetValue->pName, strName);
pRetValue->fActive = CU_TRUE;
pRetValue->pInitializeFunc = pInit;
pRetValue->pCleanupFunc = pClean;
pRetValue->pSetUpFunc = pSetup;
pRetValue->pTearDownFunc = pTear;
pRetValue->pTest = NULL;
pRetValue->pNext = NULL;
pRetValue->pPrev = NULL;
pRetValue->uiNumberOfTests = 0;
}
else {
CU_FREE(pRetValue);
pRetValue = NULL;
}
}
return pRetValue;
}
/*------------------------------------------------------------------------*/
/**
* Internal function to clean up the specified test suite.
* Each test case registered with pSuite will be freed. Allocated memory held
* by the suite (i.e. the name) will also be deallocated. Severe problems can
* occur if this function is called during a test run involving pSuite.
*
* @param pSuite CU_pSuite to clean up (non-NULL).
* @see cleanup_test_registry()
* @see cleanup_test()
*/
static void cleanup_suite(CU_pSuite pSuite)
{
CU_pTest pCurTest = NULL;
CU_pTest pNextTest = NULL;
assert(NULL != pSuite);
pCurTest = pSuite->pTest;
while (NULL != pCurTest) {
pNextTest = pCurTest->pNext;
cleanup_test(pCurTest);
CU_FREE(pCurTest);
pCurTest = pNextTest;
}
if (NULL != pSuite->pName) {
CU_FREE(pSuite->pName);
}
pSuite->pName = NULL;
pSuite->pTest = NULL;
pSuite->uiNumberOfTests = 0;
}
/*------------------------------------------------------------------------*/
/**
* Internal function to insert a suite into a registry.
* The suite name is assumed to be unique. Internally, the list of suites
* is a double-linked list, which this function manages. Insertion of NULL
* pSuites is not allowed (checked by assertion). Severe problems can occur
* if this function is called during a test run involving pRegistry.
*
* @param pRegistry CU_pTestRegistry to insert into (non-NULL).
* @param pSuite CU_pSuite to insert (non-NULL).
* @see insert_test()
*/
static void insert_suite(CU_pTestRegistry pRegistry, CU_pSuite pSuite)
{
CU_pSuite pCurSuite = NULL;
assert(NULL != pRegistry);
assert(NULL != pSuite);
pCurSuite = pRegistry->pSuite;
assert(pCurSuite != pSuite);
pSuite->pNext = NULL;
pRegistry->uiNumberOfSuites++;
/* if this is the 1st suite to be added... */
if (NULL == pCurSuite) {
pRegistry->pSuite = pSuite;
pSuite->pPrev = NULL;
}
/* otherwise, add it to the end of the linked list... */
else {
while (NULL != pCurSuite->pNext) {
pCurSuite = pCurSuite->pNext;
assert(pCurSuite != pSuite);
}
pCurSuite->pNext = pSuite;
pSuite->pPrev = pCurSuite;
}
}
/*------------------------------------------------------------------------*/
/**
* Internal function to create a new test case having the specified parameters.
* This function creates a new test having the specified name and test function.
* The strName cannot be NULL (checked by assertion), but the function pointer
* may be. A pointer to the newly-created test is returned, or NULL if there
* was an error allocating memory for the new test. It is the responsibility
* of the caller to destroy the returned test (use cleanup_test() before freeing
* the returned pointer).
*
* @param strName Name for the new test.
* @param pTestFunc Test function to call when running this test.
* @return A pointer to the newly-created test (NULL if creation failed)
*/
static CU_pTest create_test(const char* strName, CU_TestFunc pTestFunc)
{
CU_pTest pRetValue = (CU_pTest)CU_MALLOC(sizeof(CU_Test));
assert(NULL != strName);
if (NULL != pRetValue) {
pRetValue->pName = (char *)CU_MALLOC(strlen(strName)+1);
if (NULL != pRetValue->pName) {
strcpy(pRetValue->pName, strName);
pRetValue->fActive = CU_TRUE;
pRetValue->pTestFunc = pTestFunc;
pRetValue->pJumpBuf = NULL;
pRetValue->pNext = NULL;
pRetValue->pPrev = NULL;
}
else {
CU_FREE(pRetValue);
pRetValue = NULL;
}
}
return pRetValue;
}
/*------------------------------------------------------------------------*/
/**
* Internal function to clean up the specified test.
* All memory associated with the test will be freed. Severe problems can
* occur if this function is called during a test run involving pTest.
*
* @param pTest CU_pTest to clean up (non-NULL).
* @see cleanup_test_registry()
* @see cleanup_suite()
*/
static void cleanup_test(CU_pTest pTest)
{
assert(NULL != pTest);
if (NULL != pTest->pName) {
CU_FREE(pTest->pName);
}
pTest->pName = NULL;
}
/*------------------------------------------------------------------------*/
/**
* Internal function to insert a test into a suite.
* The test name is assumed to be unique. Internally, the list of tests in
* a suite is a double-linked list, which this function manages. Neither
* pSuite nor pTest may be NULL (checked by assertion). Further, pTest must
* be an independent test (i.e. both pTest->pNext and pTest->pPrev == NULL),
* which is also checked by assertion. Severe problems can occur if this
* function is called during a test run involving pSuite.
*
* @param pSuite CU_pSuite to insert into (non-NULL).
* @param pTest CU_pTest to insert (non-NULL).
* @see insert_suite()
*/
static void insert_test(CU_pSuite pSuite, CU_pTest pTest)
{
CU_pTest pCurTest = NULL;
assert(NULL != pSuite);
assert(NULL != pTest);
assert(NULL == pTest->pNext);
assert(NULL == pTest->pPrev);
pCurTest = pSuite->pTest;
assert(pCurTest != pTest);
pSuite->uiNumberOfTests++;
/* if this is the 1st suite to be added... */
if (NULL == pCurTest) {
pSuite->pTest = pTest;
pTest->pPrev = NULL;
}
else {
while (NULL != pCurTest->pNext) {
pCurTest = pCurTest->pNext;
assert(pCurTest != pTest);
}
pCurTest->pNext = pTest;
pTest->pPrev = pCurTest;
}
}
/*------------------------------------------------------------------------*/
/**
* Internal function to check whether a suite having a specified
* name already exists.
*
* @param pRegistry CU_pTestRegistry to check (non-NULL).
* @param szSuiteName Suite name to check (non-NULL).
* @return CU_TRUE if suite exists in the registry, CU_FALSE otherwise.
*/
static CU_BOOL suite_exists(CU_pTestRegistry pRegistry, const char* szSuiteName)
{
CU_pSuite pSuite = NULL;
assert(NULL != pRegistry);
assert(NULL != szSuiteName);
pSuite = pRegistry->pSuite;
while (NULL != pSuite) {
if ((NULL != pSuite->pName) && (0 == CU_compare_strings(szSuiteName, pSuite->pName))) {
return CU_TRUE;
}
pSuite = pSuite->pNext;
}
return CU_FALSE;
}
/*------------------------------------------------------------------------*/
/**
* Internal function to check whether a test having a specified
* name is already registered in a given suite.
*
* @param pSuite CU_pSuite to check (non-NULL).
* @param szTestName Test case name to check (non-NULL).
* @return CU_TRUE if test exists in the suite, CU_FALSE otherwise.
*/
static CU_BOOL test_exists(CU_pSuite pSuite, const char* szTestName)
{
CU_pTest pTest = NULL;
assert(NULL != pSuite);
assert(NULL != szTestName);
pTest = pSuite->pTest;
while (NULL != pTest) {
if ((NULL != pTest->pName) && (0 == CU_compare_strings(szTestName, pTest->pName))) {
return CU_TRUE;
}
pTest = pTest->pNext;
}
return CU_FALSE;
}
/*=================================================================
* Public but primarily internal function definitions
*=================================================================*/
CU_pTestRegistry CU_create_new_registry(void)
{
CU_pTestRegistry pRegistry = (CU_pTestRegistry)CU_MALLOC(sizeof(CU_TestRegistry));
if (NULL != pRegistry) {
pRegistry->pSuite = NULL;
pRegistry->uiNumberOfSuites = 0;
pRegistry->uiNumberOfTests = 0;
}
return pRegistry;
}
/*------------------------------------------------------------------------*/
void CU_destroy_existing_registry(CU_pTestRegistry* ppRegistry)
{
assert(NULL != ppRegistry);
/* Note - CU_cleanup_registry counts on being able to pass NULL */
if (NULL != *ppRegistry) {
cleanup_test_registry(*ppRegistry);
}
CU_FREE(*ppRegistry);
*ppRegistry = NULL;
}
/*------------------------------------------------------------------------*/
CU_pSuite CU_get_suite_by_name(const char* szSuiteName, CU_pTestRegistry pRegistry)
{
CU_pSuite pSuite = NULL;
CU_pSuite pCur = NULL;
assert(NULL != pRegistry);
assert(NULL != szSuiteName);
pCur = pRegistry->pSuite;
while (NULL != pCur) {
if ((NULL != pCur->pName) && (0 == CU_compare_strings(pCur->pName, szSuiteName))) {
pSuite = pCur;
break;
}
pCur = pCur->pNext;
}
return pSuite;
}
/*------------------------------------------------------------------------*/
CU_pSuite CU_get_suite_by_index(unsigned int index, CU_pTestRegistry pRegistry)
{
CU_pSuite result = NULL;
unsigned int i;
assert(NULL != pRegistry);
if ((index > 0) && (index <= f_pTestRegistry->uiNumberOfSuites)) {
result = f_pTestRegistry->pSuite;
for (i=1 ; ipNext;
}
}
return result;
}
/*------------------------------------------------------------------------*/
CU_pTest CU_get_test_by_name(const char* szTestName, CU_pSuite pSuite)
{
CU_pTest pTest = NULL;
CU_pTest pCur = NULL;
assert(NULL != pSuite);
assert(NULL != szTestName);
pCur = pSuite->pTest;
while (NULL != pCur) {
if ((NULL != pCur->pName) && (0 == CU_compare_strings(pCur->pName, szTestName))) {
pTest = pCur;
break;
}
pCur = pCur->pNext;
}
return pTest;
}
/*------------------------------------------------------------------------*/
CU_pTest CU_get_test_by_index(unsigned int index, CU_pSuite pSuite)
{
CU_pTest result = NULL;
unsigned int i;
assert(NULL != pSuite);
if ((index > 0) && (index <= pSuite->uiNumberOfTests)) {
result = pSuite->pTest;
for (i=1 ; ipNext;
}
}
return result;
}
/** @} */
/*------------------------------------------------------------------------*/
/*------------------------------------------------------------------------*/
#ifdef CUNIT_BUILD_TESTS
#include "test_cunit.h"
static int sfunc1(void)
{ return 0; }
static void test1(void)
{}
static void test2(void)
{}
/*--------------------------------------------------*/
static void test_CU_initialize_registry(void)
{
CU_pTestRegistry pReg = NULL;
unsigned int ndeallocs_before;
/* initial state */
TEST(NULL == CU_get_registry());
TEST(CU_FALSE == CU_registry_initialized());
/* after normal initialization */
TEST(CUE_SUCCESS == CU_initialize_registry());
pReg = CU_get_registry();
TEST_FATAL(NULL != pReg);
TEST(CU_TRUE == CU_registry_initialized());
TEST(0 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
TEST(NULL == pReg->pSuite);
/* after reinitialization */
TEST(0 < test_cunit_get_n_memevents(pReg));
ndeallocs_before = test_cunit_get_n_deallocations(pReg);
TEST(CUE_SUCCESS == CU_initialize_registry());
TEST((ndeallocs_before + 1) == test_cunit_get_n_deallocations(pReg));
pReg = CU_get_registry();
TEST_FATAL(NULL != pReg);
TEST(0 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
TEST(NULL == pReg->pSuite);
/* after cleanup */
CU_cleanup_registry();
TEST(NULL == CU_get_registry());
TEST(CU_FALSE == CU_registry_initialized());
/* if malloc fails */
test_cunit_deactivate_malloc();
TEST(CUE_NOMEMORY == CU_initialize_registry());
TEST(NULL == CU_get_registry());
TEST(CU_FALSE == CU_registry_initialized());
test_cunit_activate_malloc();
}
/*--------------------------------------------------*/
static void test_CU_cleanup_registry(void)
{
/* make sure calling with uninitialized registry does not crash */
CU_cleanup_registry();
CU_cleanup_registry();
CU_cleanup_registry();
CU_cleanup_registry();
CU_cleanup_registry();
/* nothing more to do over test_CU_initialize_registry() */
}
/*--------------------------------------------------*/
/* test CU_add_suite()
* CU_get_suite_by_name()
* CU_get_suite_by_index()
*/
static void test_CU_add_suite(void)
{
CU_pSuite pSuite = NULL;
CU_pSuite pSuite2 = NULL;
CU_pSuite pSuite3 = NULL;
CU_pSuite pSuite4 = NULL;
CU_pTestRegistry pReg = NULL;
CU_cleanup_registry(); /* make sure registry not initialized */
/* error condition - registry not initialized */
pSuite = CU_add_suite("suite1", NULL, NULL);
TEST(CUE_NOREGISTRY == CU_get_error());
TEST(NULL == pSuite);
/* error condition - no name */
CU_initialize_registry();
pReg = CU_get_registry();
pSuite = CU_add_suite(NULL, NULL, NULL);
TEST(CUE_NO_SUITENAME == CU_get_error());
TEST(NULL == pSuite);
TEST(0 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
/* warning condition - duplicate name */
CU_initialize_registry();
pReg = CU_get_registry();
pSuite = CU_add_suite("suite1", NULL, NULL);
TEST(CUE_SUCCESS == CU_get_error());
TEST(NULL != pSuite);
TEST(1 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
pSuite2 = CU_add_suite("suite1", NULL, NULL);
TEST(CUE_DUP_SUITE == CU_get_error());
TEST(NULL != pSuite2);
TEST(2 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
TEST(!strcmp("suite1", pSuite->pName));
TEST(pSuite->fActive == CU_TRUE); /* suite active on creation */
TEST(pSuite->pTest == NULL); /* no tests added yet */
TEST(pSuite->uiNumberOfTests == 0); /* no tests added yet */
TEST(pSuite->pInitializeFunc == NULL); /* no init function */
TEST(pSuite->pCleanupFunc == NULL); /* no cleanup function */
TEST(pSuite->pNext == pSuite2); /* now have another suite */
TEST(!strcmp("suite1", pSuite2->pName));
TEST(pSuite2->fActive == CU_TRUE); /* suite active on creation */
TEST(pSuite2->pTest == NULL); /* no tests added yet */
TEST(pSuite2->uiNumberOfTests == 0); /* no tests added yet */
TEST(pSuite2->pInitializeFunc == NULL); /* no init function */
TEST(pSuite2->pCleanupFunc == NULL); /* no cleanup function */
TEST(pSuite2->pNext == NULL); /* end of the list */
/* error condition - memory allocation failure */
CU_initialize_registry();
pReg = CU_get_registry();
test_cunit_deactivate_malloc();
pSuite = CU_add_suite("suite1", NULL, NULL);
TEST(CUE_NOMEMORY == CU_get_error());
TEST(NULL == pSuite);
TEST(0 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
test_cunit_activate_malloc();
/* normal creation & cleanup */
CU_initialize_registry();
pReg = CU_get_registry();
TEST(CU_get_suite_by_index(0, pReg) == NULL);
TEST(CU_get_suite_by_index(1, pReg) == NULL);
pSuite = CU_add_suite("suite1", NULL, NULL);
TEST(CUE_SUCCESS == CU_get_error());
TEST(NULL != pSuite);
TEST(1 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
TEST(CU_get_suite_by_name("suite1", pReg) == pSuite);
TEST(CU_get_suite_by_index(0, pReg) == NULL);
TEST(CU_get_suite_by_index(1, pReg) == pSuite);
TEST(CU_get_suite_by_index(2, pReg) == NULL);
TEST(pReg->pSuite == pSuite);
TEST(!strcmp("suite1", pSuite->pName));
TEST(pSuite->fActive == CU_TRUE); /* suite active on creation */
TEST(pSuite->pTest == NULL); /* no tests added yet */
TEST(pSuite->uiNumberOfTests == 0); /* no tests added yet */
TEST(pSuite->pInitializeFunc == NULL); /* no init function */
TEST(pSuite->pCleanupFunc == NULL); /* no cleanup function */
TEST(pSuite->pNext == NULL); /* no more suites added yet */
pSuite2 = CU_add_suite("suite2", sfunc1, NULL);
TEST(CUE_SUCCESS == CU_get_error());
TEST(NULL != pSuite2);
TEST(2 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
TEST(CU_get_suite_by_name("suite2", pReg) == pSuite2);
TEST(CU_get_suite_by_index(0, pReg) == NULL);
TEST(CU_get_suite_by_index(1, pReg) == pSuite);
TEST(CU_get_suite_by_index(2, pReg) == pSuite2);
TEST(CU_get_suite_by_index(3, pReg) == NULL);
pSuite3 = CU_add_suite("suite3", NULL, sfunc1);
TEST(CUE_SUCCESS == CU_get_error());
TEST(NULL != pSuite3);
TEST(3 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
TEST(CU_get_suite_by_name("suite3", pReg) == pSuite3);
TEST(CU_get_suite_by_index(0, pReg) == NULL);
TEST(CU_get_suite_by_index(1, pReg) == pSuite);
TEST(CU_get_suite_by_index(2, pReg) == pSuite2);
TEST(CU_get_suite_by_index(3, pReg) == pSuite3);
TEST(CU_get_suite_by_index(4, pReg) == NULL);
pSuite4 = CU_add_suite("suite4", sfunc1, sfunc1);
TEST(CUE_SUCCESS == CU_get_error());
TEST(NULL != pSuite4);
TEST(4 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
TEST(CU_get_suite_by_name("suite4", pReg) == pSuite4);
TEST(CU_get_suite_by_index(0, pReg) == NULL);
TEST(CU_get_suite_by_index(1, pReg) == pSuite);
TEST(CU_get_suite_by_index(2, pReg) == pSuite2);
TEST(CU_get_suite_by_index(3, pReg) == pSuite3);
TEST(CU_get_suite_by_index(4, pReg) == pSuite4);
TEST(CU_get_suite_by_index(5, pReg) == NULL);
/* test registry suite structures */
TEST(pReg->pSuite == pSuite);
TEST(!strcmp("suite1", pSuite->pName));
TEST(pSuite->fActive == CU_TRUE); /* suite active on creation */
TEST(pSuite->pTest == NULL); /* no tests added yet */
TEST(pSuite->uiNumberOfTests == 0); /* no tests added yet */
TEST(pSuite->pInitializeFunc == NULL); /* no init function */
TEST(pSuite->pCleanupFunc == NULL); /* no cleanup function */
TEST(pSuite->pNext == pSuite2); /* now have another suite */
TEST(!strcmp("suite2", pSuite2->pName));
TEST(pSuite2->fActive == CU_TRUE); /* suite active on creation */
TEST(pSuite2->pTest == NULL); /* no tests added yet */
TEST(pSuite2->uiNumberOfTests == 0); /* no tests added yet */
TEST(pSuite2->pInitializeFunc == sfunc1); /* no init function */
TEST(pSuite2->pCleanupFunc == NULL); /* no cleanup function */
TEST(pSuite2->pNext == pSuite3); /* next suite in list */
TEST(!strcmp("suite3", pSuite3->pName));
TEST(pSuite3->fActive == CU_TRUE); /* suite active on creation */
TEST(pSuite3->pTest == NULL); /* no tests added yet */
TEST(pSuite3->uiNumberOfTests == 0); /* no tests added yet */
TEST(pSuite3->pInitializeFunc == NULL); /* no init function */
TEST(pSuite3->pCleanupFunc == sfunc1); /* no cleanup function */
TEST(pSuite3->pNext == pSuite4); /* next suite in list */
TEST(!strcmp("suite4", pSuite4->pName));
TEST(pSuite4->fActive == CU_TRUE); /* suite active on creation */
TEST(pSuite4->pTest == NULL); /* no tests added yet */
TEST(pSuite4->uiNumberOfTests == 0); /* no tests added yet */
TEST(pSuite4->pInitializeFunc == sfunc1); /* no init function */
TEST(pSuite4->pCleanupFunc == sfunc1); /* no cleanup function */
TEST(pSuite4->pNext == NULL); /* end of suite list */
TEST(0 != test_cunit_get_n_memevents(pSuite));
TEST(0 != test_cunit_get_n_memevents(pSuite2));
TEST(0 != test_cunit_get_n_memevents(pSuite3));
TEST(0 != test_cunit_get_n_memevents(pSuite4));
TEST(test_cunit_get_n_allocations(pSuite) != test_cunit_get_n_deallocations(pSuite));
TEST(test_cunit_get_n_allocations(pSuite2) != test_cunit_get_n_deallocations(pSuite2));
TEST(test_cunit_get_n_allocations(pSuite3) != test_cunit_get_n_deallocations(pSuite3));
TEST(test_cunit_get_n_allocations(pSuite4) != test_cunit_get_n_deallocations(pSuite4));
/* clean up everything and confirm deallocation */
CU_cleanup_registry();
TEST(test_cunit_get_n_allocations(pSuite) == test_cunit_get_n_deallocations(pSuite));
TEST(test_cunit_get_n_allocations(pSuite2) == test_cunit_get_n_deallocations(pSuite2));
TEST(test_cunit_get_n_allocations(pSuite3) == test_cunit_get_n_deallocations(pSuite3));
TEST(test_cunit_get_n_allocations(pSuite4) == test_cunit_get_n_deallocations(pSuite4));
}
/*--------------------------------------------------*/
/* test CU_set_suite_active()
* CU_set_suite_name()
* CU_set_suite_initfunc()
* CU_set_suite_cleanupfunc()
*/
static void test_CU_set_suite_attributes(void)
{
CU_pSuite pSuite1 = NULL;
CU_pSuite pSuite2 = NULL;
/* initialize system */
CU_initialize_registry();
pSuite1 = CU_add_suite("suite1", NULL, NULL);
TEST_FATAL(NULL != pSuite1);
TEST_FATAL(NULL != CU_add_test(pSuite1, "test1", test1));
TEST_FATAL(NULL != CU_add_test(pSuite1, "test2", test1));
pSuite2 = CU_add_suite("suite2", sfunc1, NULL); /* add another suite */
TEST_FATAL(NULL != pSuite2);
TEST_FATAL(NULL != CU_add_test(pSuite2, "test1", test1));
TEST_FATAL(NULL != CU_add_test(pSuite2, "test2", test1));
/* test CU_set_suite_active() */
TEST(CUE_NOSUITE == CU_set_suite_active(NULL, CU_FALSE)); /* error - NULL suite */
TEST(pSuite2->fActive == CU_TRUE); /* suites active on creation */
TEST(pSuite1->fActive == CU_TRUE);
TEST(CUE_SUCCESS == CU_set_suite_active(pSuite1, CU_TRUE));
TEST(CUE_SUCCESS == CU_set_suite_active(pSuite2, CU_FALSE));
TEST(pSuite1->fActive == CU_TRUE);
TEST(pSuite2->fActive == CU_FALSE);
TEST(CUE_SUCCESS == CU_set_suite_active(pSuite1, CU_FALSE));
TEST(CUE_SUCCESS == CU_set_suite_active(pSuite2, CU_FALSE));
TEST(pSuite1->fActive == CU_FALSE);
TEST(pSuite2->fActive == CU_FALSE);
TEST(CUE_SUCCESS == CU_set_suite_active(pSuite1, CU_FALSE));
TEST(CUE_SUCCESS == CU_set_suite_active(pSuite2, CU_TRUE));
TEST(pSuite1->fActive == CU_FALSE);
TEST(pSuite2->fActive == CU_TRUE);
/* test CU_set_suite_name() */
TEST(CUE_NOSUITE == CU_set_suite_name(NULL, "null suite")); /* error - NULL suite */
TEST(CUE_NO_SUITENAME == CU_set_suite_name(pSuite1, NULL)); /* error - NULL name */
TEST(!strcmp(pSuite1->pName, "suite1"));
TEST(!strcmp(pSuite2->pName, "suite2"));
TEST(CUE_SUCCESS == CU_set_suite_name(pSuite1, "This is my new name."));
TEST(!strcmp(pSuite1->pName, "This is my new name."));
TEST(!strcmp(pSuite2->pName, "suite2"));
TEST(CUE_SUCCESS == CU_set_suite_name(pSuite2, "Never mind."));
TEST(!strcmp(pSuite1->pName, "This is my new name."));
TEST(!strcmp(pSuite2->pName, "Never mind."));
TEST(CUE_SUCCESS == CU_set_suite_name(pSuite1, "suite1"));
TEST(CUE_SUCCESS == CU_set_suite_name(pSuite2, "suite2"));
TEST(!strcmp(pSuite1->pName, "suite1"));
TEST(!strcmp(pSuite2->pName, "suite2"));
/* test CU_set_suite_initfunc() */
TEST(CUE_NOSUITE == CU_set_suite_initfunc(NULL, &sfunc1)); /* error - NULL suite */
TEST(pSuite1->pInitializeFunc == NULL);
TEST(pSuite2->pInitializeFunc == &sfunc1);
TEST(CUE_SUCCESS == CU_set_suite_initfunc(pSuite1, &sfunc1));
TEST(pSuite1->pInitializeFunc == &sfunc1);
TEST(pSuite2->pInitializeFunc == &sfunc1);
TEST(CUE_SUCCESS == CU_set_suite_initfunc(pSuite2, NULL));
TEST(pSuite1->pInitializeFunc == &sfunc1);
TEST(pSuite2->pInitializeFunc == NULL);
/* test CU_set_suite_cleanupfunc() */
TEST(CUE_NOSUITE == CU_set_suite_cleanupfunc(NULL, &sfunc1));
TEST(pSuite1->pCleanupFunc == NULL);
TEST(pSuite2->pCleanupFunc == NULL);
TEST(CUE_SUCCESS == CU_set_suite_cleanupfunc(pSuite1, &sfunc1));
TEST(pSuite1->pCleanupFunc == &sfunc1);
TEST(pSuite2->pCleanupFunc == NULL);
TEST(CUE_SUCCESS == CU_set_suite_cleanupfunc(pSuite2, &sfunc1));
TEST(pSuite1->pCleanupFunc == &sfunc1);
TEST(pSuite2->pCleanupFunc == &sfunc1);
/* clean up */
CU_cleanup_registry();
}
static void test_succeed(void) { CU_TEST(CU_TRUE); }
static void test_fail(void) { CU_TEST(CU_FALSE); }
static int suite_fail(void) { return 1; }
/*--------------------------------------------------*/
/* test CU_get_suite()
* CU_get_suite_at_pos()
* CU_get_suite_pos()
* CU_get_suite_pos_by_name()
*/
static void test_get_suite_functions(void)
{
CU_pSuite pSuite1 = NULL;
CU_pSuite pSuite2 = NULL;
CU_pSuite pSuite3 = NULL;
CU_pSuite pSuite4 = NULL;
CU_pSuite pSuite5 = NULL;
CU_pTest pTest1 = NULL;
CU_pTest pTest2 = NULL;
CU_pTest pTest3 = NULL;
CU_pTest pTest4 = NULL;
CU_pTest pTest5 = NULL;
CU_pTest pTest6 = NULL;
CU_pTest pTest7 = NULL;
CU_pTest pTest8 = NULL;
CU_pTest pTest9 = NULL;
CU_pTest pTest10 = NULL;
/* error condition - registry not initialized */
CU_cleanup_registry();
CU_set_error(CUE_SUCCESS);
TEST(NULL == CU_get_suite("suite1"));
TEST(CUE_NOREGISTRY == CU_get_error());
CU_set_error(CUE_SUCCESS);
TEST(NULL == CU_get_suite_at_pos(0));
TEST(CUE_NOREGISTRY == CU_get_error());
CU_set_error(CUE_SUCCESS);
TEST(0 == CU_get_suite_pos(pSuite1));
TEST(CUE_NOREGISTRY == CU_get_error());
CU_set_error(CUE_SUCCESS);
TEST(0 == CU_get_suite_pos_by_name("suite1"));
TEST(CUE_NOREGISTRY == CU_get_error());
/* register some suites and tests */
CU_initialize_registry();
pSuite1 = CU_add_suite("suite1", NULL, NULL);
pTest1 = CU_add_test(pSuite1, "test1", test_succeed);
pTest2 = CU_add_test(pSuite1, "test2", test_fail);
pTest3 = CU_add_test(pSuite1, "test1", test_succeed); /* duplicate test name */
pTest4 = CU_add_test(pSuite1, "test4", test_fail);
pTest5 = CU_add_test(pSuite1, "test1", test_succeed); /* duplicate test name */
pSuite2 = CU_add_suite("suite2", suite_fail, NULL);
pTest6 = CU_add_test(pSuite2, "test6", test_succeed);
pTest7 = CU_add_test(pSuite2, "test7", test_succeed);
pSuite3 = CU_add_suite("suite1", NULL, NULL); /* duplicate suite name */
pTest8 = CU_add_test(pSuite3, "test8", test_fail);
pTest9 = CU_add_test(pSuite3, "test9", test_succeed);
pSuite4 = CU_add_suite("suite4", NULL, suite_fail);
pTest10 = CU_add_test(pSuite4, "test10", test_succeed);
/* error condition - invalid parameters */
CU_set_error(CUE_SUCCESS);
TEST(NULL == CU_get_suite(NULL));
TEST(CUE_NO_SUITENAME == CU_get_error());
CU_set_error(CUE_SUCCESS);
TEST(0 == CU_get_suite_pos(NULL));
TEST(CUE_NOSUITE == CU_get_error());
CU_set_error(CUE_SUCCESS);
TEST(0 == CU_get_suite_pos_by_name(NULL));
TEST(CUE_NO_SUITENAME == CU_get_error());
/* normal operation - CU_get_suite() */
TEST(NULL == CU_get_suite("")); /* invalid names */
TEST(CUE_SUCCESS == CU_get_error());
TEST(NULL == CU_get_suite("bad name"));
TEST(CUE_SUCCESS == CU_get_error());
TEST(NULL == CU_get_suite("suite3"));
TEST(CUE_SUCCESS == CU_get_error());
TEST(pSuite1 == CU_get_suite("suite1")); /* valid names */
TEST(CUE_SUCCESS == CU_get_error());
TEST(pSuite2 == CU_get_suite("suite2"));
TEST(CUE_SUCCESS == CU_get_error());
TEST(pSuite4 == CU_get_suite("suite4"));
TEST(CUE_SUCCESS == CU_get_error());
/* normal operation - CU_get_suite_at_pos() */
TEST(NULL == CU_get_suite_at_pos(0)); /* invalid positions */
TEST(CUE_SUCCESS == CU_get_error());
TEST(NULL == CU_get_suite_at_pos(5));
TEST(CUE_SUCCESS == CU_get_error());
TEST(pSuite1 == CU_get_suite_at_pos(1)); /* valid positions */
TEST(CUE_SUCCESS == CU_get_error());
TEST(pSuite2 == CU_get_suite_at_pos(2));
TEST(CUE_SUCCESS == CU_get_error());
TEST(pSuite3 == CU_get_suite_at_pos(3));
TEST(CUE_SUCCESS == CU_get_error());
TEST(pSuite4 == CU_get_suite_at_pos(4));
TEST(CUE_SUCCESS == CU_get_error());
/* normal operation - CU_get_suite_pos() */
pSuite5 = (CU_pSuite)malloc(sizeof(CU_Suite));
TEST_FATAL(NULL != pSuite5);
TEST(0 == CU_get_suite_pos(pSuite5)); /* invalid suite */
TEST(CUE_SUCCESS == CU_get_error());
TEST(1 == CU_get_suite_pos(pSuite1)); /* valid suites */
TEST(CUE_SUCCESS == CU_get_error());
TEST(2 == CU_get_suite_pos(pSuite2));
TEST(CUE_SUCCESS == CU_get_error());
TEST(3 == CU_get_suite_pos(pSuite3));
TEST(CUE_SUCCESS == CU_get_error());
TEST(4 == CU_get_suite_pos(pSuite4));
TEST(CUE_SUCCESS == CU_get_error());
free(pSuite5);
/* normal operation - CU_get_suite_pos_by_name() */
TEST(0 == CU_get_suite_pos_by_name("")); /* invalid names */
TEST(CUE_SUCCESS == CU_get_error());
TEST(0 == CU_get_suite_pos_by_name("suite3"));
TEST(CUE_SUCCESS == CU_get_error());
TEST(1 == CU_get_suite_pos_by_name("suite1")); /* valid suites */
TEST(CUE_SUCCESS == CU_get_error());
TEST(2 == CU_get_suite_pos_by_name("suite2"));
TEST(CUE_SUCCESS == CU_get_error());
TEST(4 == CU_get_suite_pos_by_name("suite4"));
TEST(CUE_SUCCESS == CU_get_error());
/* clean up */
CU_cleanup_registry();
}
/*--------------------------------------------------*/
/* test CU_add_test()
* CU_get_test_by_name()
* CU_get_test_by_index()
*/
static void test_CU_add_test(void)
{
CU_pSuite pSuite1 = NULL;
CU_pSuite pSuite2 = NULL;
CU_pTest pTest1 = NULL;
CU_pTest pTest2 = NULL;
CU_pTest pTest3 = NULL;
CU_pTest pTest4 = NULL;
CU_pTestRegistry pReg = NULL;
CU_cleanup_registry();
/* error condition - registry not initialized */
pTest1 = CU_add_test(pSuite1, "test1", test1);
TEST(CUE_NOREGISTRY == CU_get_error());
TEST(NULL == pTest1);
CU_initialize_registry();
pReg = CU_get_registry();
/* error condition - no suite */
pTest1 = CU_add_test(pSuite1, "test1", test1);
TEST(CUE_NOSUITE == CU_get_error());
TEST(NULL == pTest1);
/* error condition - no name */
pSuite1 = CU_add_suite("suite1", NULL, NULL);
TEST(CUE_SUCCESS == CU_get_error());
pTest1 = CU_add_test(pSuite1, NULL, test1);
TEST(CUE_NO_TESTNAME == CU_get_error());
TEST(NULL == pTest1);
TEST(1 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
TEST(0 == pSuite1->uiNumberOfTests);
/* error condition - no test function */
pTest1 = CU_add_test(pSuite1, "test1", NULL);
TEST(CUE_NOTEST == CU_get_error());
TEST(NULL == pTest1);
TEST(1 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
TEST(0 == pSuite1->uiNumberOfTests);
/* warning condition - duplicate name */
CU_initialize_registry();
pReg = CU_get_registry();
pSuite1 = CU_add_suite("suite1", NULL, NULL);
TEST(CUE_SUCCESS == CU_get_error());
pTest1 = CU_add_test(pSuite1, "test1", test1);
TEST(CUE_SUCCESS == CU_get_error());
TEST(NULL != pTest1);
TEST(1 == pReg->uiNumberOfSuites);
TEST(1 == pReg->uiNumberOfTests);
TEST(1 == pSuite1->uiNumberOfTests);
TEST(CU_get_test_by_index(0, pSuite1) == NULL);
TEST(CU_get_test_by_index(1, pSuite1) == pTest1);
TEST(CU_get_test_by_index(2, pSuite1) == NULL);
pTest2 = CU_add_test(pSuite1, "test1", test1);
TEST(CUE_DUP_TEST == CU_get_error());
TEST(NULL != pTest2);
TEST(1 == pReg->uiNumberOfSuites);
TEST(2 == pReg->uiNumberOfTests);
TEST(2 == pSuite1->uiNumberOfTests);
TEST(!strcmp("test1", pTest1->pName));
TEST(pTest1->fActive == CU_TRUE);
TEST(pTest1->pNext == pTest2);
TEST(pTest1->pJumpBuf == NULL);
TEST(pTest1->pTestFunc == test1);
TEST(CU_get_test_by_name("test1", pSuite1) == pTest1);
TEST(CU_get_test_by_index(0, pSuite1) == NULL);
TEST(CU_get_test_by_index(1, pSuite1) == pTest1);
TEST(CU_get_test_by_index(2, pSuite1) == pTest2);
TEST(CU_get_test_by_index(3, pSuite1) == NULL);
TEST(!strcmp("test1", pTest2->pName));
TEST(pTest2->fActive == CU_TRUE);
TEST(pTest2->pNext == NULL);
TEST(pTest2->pJumpBuf == NULL);
TEST(pTest2->pTestFunc == test1);
TEST(CU_get_test_by_name("test1", pSuite1) == pTest1);
/* error condition - memory allocation failure */
CU_initialize_registry();
pReg = CU_get_registry();
pSuite1 = CU_add_suite("suite1", NULL, NULL);
TEST(CUE_SUCCESS == CU_get_error());
test_cunit_deactivate_malloc();
pTest1 = CU_add_test(pSuite1, "test1", test1);
test_cunit_activate_malloc();
TEST(CUE_NOMEMORY == CU_get_error());
TEST(NULL == pTest1);
TEST(1 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
TEST(0 == pSuite1->uiNumberOfTests);
/* normal creation & cleanup */
CU_initialize_registry();
pReg = CU_get_registry();
pSuite1 = CU_add_suite("suite1", NULL, NULL);
TEST(CUE_SUCCESS == CU_get_error());
pSuite2 = CU_add_suite("suite2", sfunc1, sfunc1);
TEST(CUE_SUCCESS == CU_get_error());
TEST(CU_get_test_by_index(0, pSuite1) == NULL);
TEST(CU_get_test_by_index(1, pSuite1) == NULL);
pTest1 = CU_add_test(pSuite1, "test1", test1);
TEST(CUE_SUCCESS == CU_get_error());
TEST(NULL != pTest1);
TEST(2 == pReg->uiNumberOfSuites);
TEST(1 == pReg->uiNumberOfTests);
TEST(1 == pSuite1->uiNumberOfTests);
TEST(0 == pSuite2->uiNumberOfTests);
TEST(pSuite1->pTest == pTest1);
TEST(pSuite2->pTest == NULL);
TEST(CU_get_test_by_index(0, pSuite1) == NULL);
TEST(CU_get_test_by_index(1, pSuite1) == pTest1);
TEST(CU_get_test_by_index(2, pSuite1) == NULL);
pTest2 = CU_add_test(pSuite2, "test2", test1);
TEST(CUE_SUCCESS == CU_get_error());
TEST(NULL != pTest2);
TEST(2 == pReg->uiNumberOfSuites);
TEST(2 == pReg->uiNumberOfTests);
TEST(1 == pSuite1->uiNumberOfTests);
TEST(1 == pSuite2->uiNumberOfTests);
TEST(pSuite1->pTest == pTest1);
TEST(pSuite2->pTest == pTest2);
TEST(CU_get_test_by_index(0, pSuite2) == NULL);
TEST(CU_get_test_by_index(1, pSuite2) == pTest2);
TEST(CU_get_test_by_index(2, pSuite2) == NULL);
pTest3 = CU_add_test(pSuite1, "test3", test1);
TEST(CUE_SUCCESS == CU_get_error());
TEST(NULL != pTest3);
TEST(2 == pReg->uiNumberOfSuites);
TEST(3 == pReg->uiNumberOfTests);
TEST(2 == pSuite1->uiNumberOfTests);
TEST(1 == pSuite2->uiNumberOfTests);
TEST(pSuite1->pTest == pTest1);
TEST(pSuite2->pTest == pTest2);
TEST(CU_get_test_by_index(0, pSuite1) == NULL);
TEST(CU_get_test_by_index(1, pSuite1) == pTest1);
TEST(CU_get_test_by_index(2, pSuite1) == pTest3);
TEST(CU_get_test_by_index(3, pSuite1) == NULL);
pTest4 = CU_add_test(pSuite1, "test4", test1);
TEST(CUE_SUCCESS == CU_get_error());
TEST(NULL != pTest4);
TEST(2 == pReg->uiNumberOfSuites);
TEST(4 == pReg->uiNumberOfTests);
TEST(3 == pSuite1->uiNumberOfTests);
TEST(1 == pSuite2->uiNumberOfTests);
TEST(pSuite1->pTest == pTest1);
TEST(pSuite2->pTest == pTest2);
TEST(CU_get_test_by_index(0, pSuite1) == NULL);
TEST(CU_get_test_by_index(1, pSuite1) == pTest1);
TEST(CU_get_test_by_index(2, pSuite1) == pTest3);
TEST(CU_get_test_by_index(3, pSuite1) == pTest4);
TEST(CU_get_test_by_index(4, pSuite1) == NULL);
TEST(!strcmp("test1", pTest1->pName));
TEST(pTest1->pNext == pTest3);
TEST(pTest1->pJumpBuf == NULL);
TEST(pTest1->pTestFunc == test1);
TEST(CU_get_test_by_name("test1", pSuite1) == pTest1);
TEST(CU_get_test_by_name("test1", pSuite2) == NULL);
TEST(!strcmp("test2", pTest2->pName));
TEST(pTest2->pNext == NULL);
TEST(pTest2->pJumpBuf == NULL);
TEST(pTest2->pTestFunc == test1);
TEST(CU_get_test_by_name("test2", pSuite1) == NULL);
TEST(CU_get_test_by_name("test2", pSuite2) == pTest2);
TEST(!strcmp("test3", pTest3->pName));
TEST(pTest3->pNext == pTest4);
TEST(pTest3->pJumpBuf == NULL);
TEST(pTest3->pTestFunc == test1);
TEST(CU_get_test_by_name("test3", pSuite1) == pTest3);
TEST(CU_get_test_by_name("test3", pSuite2) == NULL);
TEST(!strcmp("test4", pTest4->pName));
TEST(pTest4->pNext == NULL);
TEST(pTest4->pJumpBuf == NULL);
TEST(pTest4->pTestFunc == test1);
TEST(CU_get_test_by_name("test4", pSuite1) == pTest4);
TEST(CU_get_test_by_name("test4", pSuite2) == NULL);
TEST(0 != test_cunit_get_n_memevents(pSuite1));
TEST(0 != test_cunit_get_n_memevents(pSuite2));
TEST(0 != test_cunit_get_n_memevents(pTest1));
TEST(0 != test_cunit_get_n_memevents(pTest2));
TEST(0 != test_cunit_get_n_memevents(pTest3));
TEST(0 != test_cunit_get_n_memevents(pTest4));
TEST(test_cunit_get_n_allocations(pSuite1) != test_cunit_get_n_deallocations(pSuite1));
TEST(test_cunit_get_n_allocations(pSuite2) != test_cunit_get_n_deallocations(pSuite2));
TEST(test_cunit_get_n_allocations(pTest1) != test_cunit_get_n_deallocations(pTest1));
TEST(test_cunit_get_n_allocations(pTest2) != test_cunit_get_n_deallocations(pTest2));
TEST(test_cunit_get_n_allocations(pTest3) != test_cunit_get_n_deallocations(pTest3));
TEST(test_cunit_get_n_allocations(pTest4) != test_cunit_get_n_deallocations(pTest4));
CU_cleanup_registry();
TEST(test_cunit_get_n_allocations(pSuite1) == test_cunit_get_n_deallocations(pSuite1));
TEST(test_cunit_get_n_allocations(pSuite2) == test_cunit_get_n_deallocations(pSuite2));
TEST(test_cunit_get_n_allocations(pTest1) == test_cunit_get_n_deallocations(pTest1));
TEST(test_cunit_get_n_allocations(pTest2) == test_cunit_get_n_deallocations(pTest2));
TEST(test_cunit_get_n_allocations(pTest3) == test_cunit_get_n_deallocations(pTest3));
TEST(test_cunit_get_n_allocations(pTest4) == test_cunit_get_n_deallocations(pTest4));
}
/*--------------------------------------------------*/
/* test CU_set_test_active()
* CU_set_test_name()
* CU_set_test_func()
*/
static void test_CU_set_test_attributes(void)
{
CU_pSuite pSuite1 = NULL;
CU_pSuite pSuite2 = NULL;
CU_pTest pTest1 = NULL;
CU_pTest pTest2 = NULL;
CU_pTest pTest3 = NULL;
CU_pTest pTest4 = NULL;
/* initialize system */
CU_initialize_registry();
pSuite1 = CU_add_suite("suite1", NULL, NULL);
TEST_FATAL(NULL != pSuite1);
pTest1 = CU_add_test(pSuite1, "test1", test2);
TEST_FATAL(NULL != pTest1);
pTest2 = CU_add_test(pSuite1, "test2", test1);
TEST_FATAL(NULL != pTest2);
pSuite2 = CU_add_suite("suite2", sfunc1, NULL); /* add another suite */
TEST_FATAL(NULL != pSuite2);
pTest3 = CU_add_test(pSuite2, "test3", test2);
TEST_FATAL(NULL != pTest3);
pTest4 = CU_add_test(pSuite2, "test4", test1);
TEST_FATAL(NULL != pTest4);
/* test CU_set_test_active() */
TEST(CUE_NOTEST == CU_set_test_active(NULL, CU_FALSE)); /* error - NULL test */
TEST(CU_TRUE == pTest1->fActive); /* tests active on creation */
TEST(CU_TRUE == pTest2->fActive);
TEST(CU_TRUE == pTest3->fActive);
TEST(CU_TRUE == pTest4->fActive);
TEST(CUE_SUCCESS == CU_set_test_active(pTest1, CU_TRUE));
TEST(CUE_SUCCESS == CU_set_test_active(pTest2, CU_TRUE));
TEST(CUE_SUCCESS == CU_set_test_active(pTest3, CU_FALSE));
TEST(CUE_SUCCESS == CU_set_test_active(pTest4, CU_FALSE));
TEST(CU_TRUE == pTest1->fActive);
TEST(CU_TRUE == pTest2->fActive);
TEST(CU_FALSE == pTest3->fActive);
TEST(CU_FALSE == pTest4->fActive);
TEST(CUE_SUCCESS == CU_set_test_active(pTest1, CU_FALSE));
TEST(CUE_SUCCESS == CU_set_test_active(pTest2, CU_TRUE));
TEST(CUE_SUCCESS == CU_set_test_active(pTest3, CU_TRUE));
TEST(CUE_SUCCESS == CU_set_test_active(pTest4, CU_FALSE));
TEST(CU_FALSE == pTest1->fActive);
TEST(CU_TRUE == pTest2->fActive);
TEST(CU_TRUE == pTest3->fActive);
TEST(CU_FALSE == pTest4->fActive);
TEST(CUE_SUCCESS == CU_set_test_active(pTest1, CU_FALSE));
TEST(CUE_SUCCESS == CU_set_test_active(pTest2, CU_FALSE));
TEST(CUE_SUCCESS == CU_set_test_active(pTest3, CU_FALSE));
TEST(CUE_SUCCESS == CU_set_test_active(pTest4, CU_FALSE));
TEST(CU_FALSE == pTest1->fActive);
TEST(CU_FALSE == pTest2->fActive);
TEST(CU_FALSE == pTest3->fActive);
TEST(CU_FALSE == pTest4->fActive);
TEST(CUE_SUCCESS == CU_set_test_active(pTest1, CU_TRUE));
TEST(CUE_SUCCESS == CU_set_test_active(pTest2, CU_TRUE));
TEST(CUE_SUCCESS == CU_set_test_active(pTest3, CU_TRUE));
TEST(CUE_SUCCESS == CU_set_test_active(pTest4, CU_TRUE));
TEST(CU_TRUE == pTest1->fActive);
TEST(CU_TRUE == pTest2->fActive);
TEST(CU_TRUE == pTest3->fActive);
TEST(CU_TRUE == pTest4->fActive);
/* test CU_set_test_name() */
TEST(CUE_NOTEST == CU_set_test_name(NULL, "null test")); /* error - NULL test */
TEST(CUE_NO_TESTNAME == CU_set_test_name(pTest1, NULL)); /* error - NULL name */
TEST(!strcmp("test1", pTest1->pName));
TEST(!strcmp("test2", pTest2->pName));
TEST(!strcmp("test3", pTest3->pName));
TEST(!strcmp("test4", pTest4->pName));
TEST(CUE_SUCCESS == CU_set_test_name(pTest1, "Aren't I a pretty girl?"));
TEST(CUE_SUCCESS == CU_set_test_name(pTest2, "Polly want a cracker."));
TEST(CUE_SUCCESS == CU_set_test_name(pTest3, "@This is utter nonsense@"));
TEST(CUE_SUCCESS == CU_set_test_name(pTest4, "Yep!"));
TEST(!strcmp("Aren't I a pretty girl?", pTest1->pName));
TEST(!strcmp("Polly want a cracker.", pTest2->pName));
TEST(!strcmp("@This is utter nonsense@", pTest3->pName));
TEST(!strcmp("Yep!", pTest4->pName));
TEST(CUE_SUCCESS == CU_set_test_name(pTest1, "test1"));
TEST(CUE_SUCCESS == CU_set_test_name(pTest2, "test2"));
TEST(CUE_SUCCESS == CU_set_test_name(pTest3, "test3"));
TEST(CUE_SUCCESS == CU_set_test_name(pTest4, "test4"));
TEST(!strcmp("test1", pTest1->pName));
TEST(!strcmp("test2", pTest2->pName));
TEST(!strcmp("test3", pTest3->pName));
TEST(!strcmp("test4", pTest4->pName));
/* test CU_set_test_func() */
TEST(CUE_NOTEST == CU_set_test_func(NULL, &test1)); /* error - NULL test */
TEST(CUE_NOTEST == CU_set_test_func(pTest1, NULL)); /* error - NULL test function */
TEST(&test2 == pTest1->pTestFunc);
TEST(&test1 == pTest2->pTestFunc);
TEST(&test2 == pTest3->pTestFunc);
TEST(&test1 == pTest4->pTestFunc);
TEST(CUE_SUCCESS == CU_set_test_func(pTest1, &test1));
TEST(CUE_SUCCESS == CU_set_test_func(pTest2, &test2));
TEST(CUE_SUCCESS == CU_set_test_func(pTest3, &test1));
TEST(CUE_SUCCESS == CU_set_test_func(pTest4, &test2));
TEST(&test1 == pTest1->pTestFunc);
TEST(&test2 == pTest2->pTestFunc);
TEST(&test1 == pTest3->pTestFunc);
TEST(&test2 == pTest4->pTestFunc);
TEST(CUE_SUCCESS == CU_set_test_func(pTest1, &test2));
TEST(CUE_SUCCESS == CU_set_test_func(pTest2, &test1));
TEST(CUE_SUCCESS == CU_set_test_func(pTest3, &test2));
TEST(CUE_SUCCESS == CU_set_test_func(pTest4, &test1));
/* clean up */
CU_cleanup_registry();
}
/*--------------------------------------------------*/
/* test CU_get_test()
* CU_get_test_at_pos()
* CU_get_test_pos()
* CU_get_test_pos_by_name()
*/
static void test_get_test_functions(void)
{
CU_pSuite pSuite1 = NULL;
CU_pSuite pSuite2 = NULL;
CU_pSuite pSuite3 = NULL;
CU_pSuite pSuite4 = NULL;
CU_pTest pTest1 = NULL;
CU_pTest pTest2 = NULL;
CU_pTest pTest3 = NULL;
CU_pTest pTest4 = NULL;
CU_pTest pTest5 = NULL;
CU_pTest pTest6 = NULL;
CU_pTest pTest7 = NULL;
CU_pTest pTest8 = NULL;
CU_pTest pTest9 = NULL;
CU_pTest pTest10 = NULL;
/* error condition - registry not initialized */
CU_cleanup_registry();
CU_set_error(CUE_SUCCESS);
TEST(NULL == CU_get_test(pSuite1, "test1"));
TEST(CUE_NOREGISTRY == CU_get_error());
CU_set_error(CUE_SUCCESS);
TEST(NULL == CU_get_test_at_pos(pSuite1, 0));
TEST(CUE_NOREGISTRY == CU_get_error());
CU_set_error(CUE_SUCCESS);
TEST(0 == CU_get_test_pos(pSuite1, pTest1));
TEST(CUE_NOREGISTRY == CU_get_error());
CU_set_error(CUE_SUCCESS);
TEST(0 == CU_get_test_pos_by_name(pSuite1, "test1"));
TEST(CUE_NOREGISTRY == CU_get_error());
/* register some suites and tests */
CU_initialize_registry();
pSuite1 = CU_add_suite("suite1", NULL, NULL);
pTest1 = CU_add_test(pSuite1, "test1", test_succeed);
pTest2 = CU_add_test(pSuite1, "test2", test_fail);
pTest3 = CU_add_test(pSuite1, "test1", test_succeed); /* duplicate test name */
pTest4 = CU_add_test(pSuite1, "test4", test_fail);
pTest5 = CU_add_test(pSuite1, "test1", test_succeed); /* duplicate test name */
pSuite2 = CU_add_suite("suite2", suite_fail, NULL);
pTest6 = CU_add_test(pSuite2, "test6", test_succeed);
pTest7 = CU_add_test(pSuite2, "test7", test_succeed);
pSuite3 = CU_add_suite("suite1", NULL, NULL); /* duplicate suite name */
pTest8 = CU_add_test(pSuite3, "test8", test_fail);
pTest9 = CU_add_test(pSuite3, "test9", test_succeed);
pSuite4 = CU_add_suite("suite4", NULL, suite_fail);
pTest10 = CU_add_test(pSuite4, "test10", test_succeed);
/* error condition - invalid parameters */
CU_set_error(CUE_SUCCESS);
TEST(NULL == CU_get_test(NULL, "test1")); /* suite NULL */
TEST(CUE_NOSUITE == CU_get_error());
CU_set_error(CUE_SUCCESS);
TEST(NULL == CU_get_test(pSuite1, NULL)); /* name NULL */
TEST(CUE_NO_SUITENAME == CU_get_error());
CU_set_error(CUE_SUCCESS);
TEST(0 == CU_get_test_at_pos(NULL, 1)); /* suite NULL */
TEST(CUE_NOSUITE == CU_get_error());
CU_set_error(CUE_SUCCESS);
TEST(0 == CU_get_test_pos(NULL, pTest1)); /* suite NULL */
TEST(CUE_NOSUITE == CU_get_error());
CU_set_error(CUE_SUCCESS);
TEST(0 == CU_get_test_pos(pSuite1, NULL)); /* test NULL */
TEST(CUE_NOTEST == CU_get_error());
CU_set_error(CUE_SUCCESS);
TEST(0 == CU_get_test_pos_by_name(NULL, "test1")); /* suite NULL */
TEST(CUE_NOSUITE == CU_get_error());
CU_set_error(CUE_SUCCESS);
TEST(0 == CU_get_test_pos_by_name(pSuite1, NULL)); /* name NULL */
TEST(CUE_NO_TESTNAME == CU_get_error());
/* normal operation - CU_get_test() */
TEST(NULL == CU_get_test(pSuite1, "")); /* invalid names */
TEST(CUE_SUCCESS == CU_get_error());
TEST(NULL == CU_get_test(pSuite2, "bad name"));
TEST(CUE_SUCCESS == CU_get_error());
TEST(NULL == CU_get_test(pSuite1, "test3"));
TEST(CUE_SUCCESS == CU_get_error());
TEST(pTest1 == CU_get_test(pSuite1, "test1")); /* valid names */
TEST(CUE_SUCCESS == CU_get_error());
TEST(pTest6 == CU_get_test(pSuite2, "test6"));
TEST(CUE_SUCCESS == CU_get_error());
TEST(pTest8 == CU_get_test(pSuite3, "test8"));
TEST(CUE_SUCCESS == CU_get_error());
/* normal operation - CU_get_test_at_pos() */
TEST(NULL == CU_get_test_at_pos(pSuite1, 0)); /* invalid positions */
TEST(CUE_SUCCESS == CU_get_error());
TEST(NULL == CU_get_test_at_pos(pSuite1, 6));
TEST(CUE_SUCCESS == CU_get_error());
TEST(NULL == CU_get_test_at_pos(pSuite4, 2));
TEST(CUE_SUCCESS == CU_get_error());
TEST(pTest1 == CU_get_test_at_pos(pSuite1, 1)); /* valid positions */
TEST(CUE_SUCCESS == CU_get_error());
TEST(pTest2 == CU_get_test_at_pos(pSuite1, 2));
TEST(CUE_SUCCESS == CU_get_error());
TEST(pTest3 == CU_get_test_at_pos(pSuite1, 3));
TEST(CUE_SUCCESS == CU_get_error());
TEST(pTest4 == CU_get_test_at_pos(pSuite1, 4));
TEST(CUE_SUCCESS == CU_get_error());
TEST(pTest5 == CU_get_test_at_pos(pSuite1, 5));
TEST(CUE_SUCCESS == CU_get_error());
TEST(pTest6 == CU_get_test_at_pos(pSuite2, 1));
TEST(CUE_SUCCESS == CU_get_error());
TEST(pTest7 == CU_get_test_at_pos(pSuite2, 2));
TEST(CUE_SUCCESS == CU_get_error());
TEST(pTest8 == CU_get_test_at_pos(pSuite3, 1));
TEST(CUE_SUCCESS == CU_get_error());
TEST(pTest9 == CU_get_test_at_pos(pSuite3, 2));
TEST(CUE_SUCCESS == CU_get_error());
TEST(pTest10 == CU_get_test_at_pos(pSuite4, 1));
TEST(CUE_SUCCESS == CU_get_error());
/* normal operation - CU_get_test_pos() */
TEST(0 == CU_get_test_pos(pSuite1, pTest6)); /* invalid tests */
TEST(CUE_SUCCESS == CU_get_error());
TEST(0 == CU_get_test_pos(pSuite4, pTest6));
TEST(CUE_SUCCESS == CU_get_error());
TEST(1 == CU_get_test_pos(pSuite1, pTest1)); /* valid tests */
TEST(CUE_SUCCESS == CU_get_error());
TEST(2 == CU_get_test_pos(pSuite1, pTest2));
TEST(CUE_SUCCESS == CU_get_error());
TEST(3 == CU_get_test_pos(pSuite1, pTest3));
TEST(CUE_SUCCESS == CU_get_error());
TEST(4 == CU_get_test_pos(pSuite1, pTest4));
TEST(CUE_SUCCESS == CU_get_error());
TEST(5 == CU_get_test_pos(pSuite1, pTest5));
TEST(CUE_SUCCESS == CU_get_error());
TEST(1 == CU_get_test_pos(pSuite2, pTest6));
TEST(CUE_SUCCESS == CU_get_error());
TEST(2 == CU_get_test_pos(pSuite2, pTest7));
TEST(CUE_SUCCESS == CU_get_error());
TEST(1 == CU_get_test_pos(pSuite3, pTest8));
TEST(CUE_SUCCESS == CU_get_error());
TEST(2 == CU_get_test_pos(pSuite3, pTest9));
TEST(CUE_SUCCESS == CU_get_error());
TEST(1 == CU_get_test_pos(pSuite4, pTest10));
TEST(CUE_SUCCESS == CU_get_error());
/* normal operation - CU_get_test_pos_by_name() */
TEST(0 == CU_get_test_pos_by_name(pSuite1, "")); /* invalid names */
TEST(CUE_SUCCESS == CU_get_error());
TEST(0 == CU_get_test_pos_by_name(pSuite1, "test9"));
TEST(CUE_SUCCESS == CU_get_error());
TEST(0 == CU_get_test_pos_by_name(pSuite2, "test1"));
TEST(CUE_SUCCESS == CU_get_error());
TEST(1 == CU_get_test_pos_by_name(pSuite1, "test1")); /* valid names */
TEST(CUE_SUCCESS == CU_get_error());
TEST(2 == CU_get_test_pos_by_name(pSuite1, "test2"));
TEST(CUE_SUCCESS == CU_get_error());
TEST(4 == CU_get_test_pos_by_name(pSuite1, "test4"));
TEST(CUE_SUCCESS == CU_get_error());
TEST(1 == CU_get_test_pos_by_name(pSuite2, "test6"));
TEST(CUE_SUCCESS == CU_get_error());
TEST(2 == CU_get_test_pos_by_name(pSuite2, "test7"));
TEST(CUE_SUCCESS == CU_get_error());
TEST(1 == CU_get_test_pos_by_name(pSuite3, "test8"));
TEST(CUE_SUCCESS == CU_get_error());
TEST(2 == CU_get_test_pos_by_name(pSuite3, "test9"));
TEST(CUE_SUCCESS == CU_get_error());
TEST(1 == CU_get_test_pos_by_name(pSuite4, "test10"));
TEST(CUE_SUCCESS == CU_get_error());
/* clean up */
CU_cleanup_registry();
}
/*--------------------------------------------------*/
static void test_CU_get_registry(void)
{
CU_cleanup_registry();
TEST(NULL == CU_get_registry());
CU_initialize_registry();
TEST(NULL != CU_get_registry());
TEST(f_pTestRegistry == CU_get_registry());
CU_cleanup_registry();
}
/*--------------------------------------------------*/
static void test_CU_set_registry(void)
{
CU_pTestRegistry pReg1 = NULL;
CU_pTestRegistry pReg2 = NULL;
CU_pSuite pSuite1 = NULL;
CU_pSuite pSuite2 = NULL;
CU_initialize_registry();
pSuite1 = CU_add_suite("suite1", NULL, NULL);
pSuite2 = CU_add_suite("suite2", NULL, NULL);
CU_add_test(pSuite1, "test1", test1);
CU_add_test(pSuite1, "test2", test1);
CU_add_test(pSuite2, "test1", test1);
CU_add_test(pSuite2, "test2", test1);
pReg1 = CU_get_registry();
TEST(pReg1->pSuite == pSuite1);
TEST(pReg1->uiNumberOfSuites == 2);
TEST(pReg1->uiNumberOfTests == 4);
TEST(0 < test_cunit_get_n_memevents(pReg1));
TEST(test_cunit_get_n_allocations(pReg1) != test_cunit_get_n_deallocations(pReg1));
CU_set_registry(NULL);
TEST(test_cunit_get_n_allocations(pReg1) != test_cunit_get_n_deallocations(pReg1));
CU_cleanup_registry();
TEST(test_cunit_get_n_allocations(pReg1) != test_cunit_get_n_deallocations(pReg1));
pReg2 = CU_create_new_registry();
CU_set_registry(pReg2);
TEST(pReg1->pSuite == pSuite1);
TEST(pReg1->uiNumberOfSuites == 2);
TEST(pReg1->uiNumberOfTests == 4);
TEST(test_cunit_get_n_allocations(pReg1) != test_cunit_get_n_deallocations(pReg1));
TEST(CU_get_registry()->pSuite == NULL);
TEST(CU_get_registry()->uiNumberOfSuites == 0);
TEST(CU_get_registry()->uiNumberOfTests == 0);
TEST(0 < test_cunit_get_n_memevents(pReg2));
TEST(test_cunit_get_n_allocations(pReg2) != test_cunit_get_n_deallocations(pReg2));
CU_cleanup_registry();
TEST(pReg1->pSuite == pSuite1);
TEST(pReg1->uiNumberOfSuites == 2);
TEST(pReg1->uiNumberOfTests == 4);
TEST(test_cunit_get_n_allocations(pReg1) != test_cunit_get_n_deallocations(pReg1));
TEST(test_cunit_get_n_allocations(pReg2) == test_cunit_get_n_deallocations(pReg2));
CU_set_registry(pReg1);
CU_cleanup_registry();
TEST(test_cunit_get_n_allocations(pReg1) == test_cunit_get_n_deallocations(pReg1));
}
/*--------------------------------------------------*/
/* test CU_create_new_registry()
* CU_destroy_existing_registry()
*/
static void test_CU_create_new_registry(void)
{
CU_pTestRegistry pReg = NULL;
CU_pTestRegistry pRegOld = NULL;
CU_cleanup_registry();
pReg = CU_create_new_registry();
TEST(NULL != pReg);
TEST(0 < test_cunit_get_n_memevents(pReg));
TEST(test_cunit_get_n_allocations(pReg) != test_cunit_get_n_deallocations(pReg));
TEST(pReg->pSuite == NULL);
TEST(pReg->uiNumberOfSuites == 0);
TEST(pReg->uiNumberOfTests == 0);
CU_cleanup_registry();
TEST(test_cunit_get_n_allocations(pReg) != test_cunit_get_n_deallocations(pReg));
pRegOld = pReg;
CU_destroy_existing_registry(&pReg);
TEST(test_cunit_get_n_allocations(pRegOld) == test_cunit_get_n_deallocations(pRegOld));
TEST(NULL == pReg);
}
/*--------------------------------------------------*/
static void test_cleanup_test_registry(void)
{
CU_pSuite pSuite1 = NULL;
CU_pSuite pSuite2 = NULL;
CU_pTest pTest1 = NULL;
CU_pTest pTest2 = NULL;
CU_pTest pTest3 = NULL;
CU_pTest pTest4 = NULL;
CU_pTestRegistry pReg = CU_create_new_registry();
TEST_FATAL(NULL != pReg);
TEST(0 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
/* create tests to register */
pTest1 = create_test("test1", test1);
pTest2 = create_test("test2", NULL);
pTest3 = create_test("test3", test1);
pTest4 = create_test("", NULL);
/* create suites to hold tests */
pSuite1 = create_suite("suite1", NULL, NULL, NULL, NULL);
pSuite2 = create_suite("suite2", sfunc1, sfunc1, NULL, NULL);
insert_suite(pReg, pSuite1);
insert_suite(pReg, pSuite2);
insert_test(pSuite1, pTest1);
insert_test(pSuite1, pTest2);
insert_test(pSuite1, pTest3);
insert_test(pSuite2, pTest4);
TEST(2 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests); /* not managed in primitive functions */
TEST(3 == pSuite1->uiNumberOfTests);
TEST(1 == pSuite2->uiNumberOfTests);
TEST(pSuite1->pTest == pTest1);
TEST(pSuite2->pTest == pTest4);
TEST(pTest1->pNext == pTest2);
TEST(pTest1->pPrev == NULL);
TEST(pTest2->pNext == pTest3);
TEST(pTest2->pPrev == pTest1);
TEST(pTest3->pNext == NULL);
TEST(pTest3->pPrev == pTest2);
TEST(pTest4->pNext == NULL);
TEST(pTest4->pPrev == NULL);
TEST(0 != test_cunit_get_n_memevents(pReg));
TEST(0 != test_cunit_get_n_memevents(pSuite1));
TEST(0 != test_cunit_get_n_memevents(pSuite2));
TEST(0 != test_cunit_get_n_memevents(pTest1));
TEST(0 != test_cunit_get_n_memevents(pTest2));
TEST(0 != test_cunit_get_n_memevents(pTest3));
TEST(0 != test_cunit_get_n_memevents(pTest4));
TEST(test_cunit_get_n_allocations(pReg) != test_cunit_get_n_deallocations(pReg));
TEST(test_cunit_get_n_allocations(pSuite1) != test_cunit_get_n_deallocations(pSuite1));
TEST(test_cunit_get_n_allocations(pSuite2) != test_cunit_get_n_deallocations(pSuite2));
TEST(test_cunit_get_n_allocations(pTest1) != test_cunit_get_n_deallocations(pTest1));
TEST(test_cunit_get_n_allocations(pTest2) != test_cunit_get_n_deallocations(pTest2));
TEST(test_cunit_get_n_allocations(pTest3) != test_cunit_get_n_deallocations(pTest3));
TEST(test_cunit_get_n_allocations(pTest4) != test_cunit_get_n_deallocations(pTest4));
cleanup_test_registry(pReg);
CU_FREE(pReg);
TEST(test_cunit_get_n_allocations(pReg) == test_cunit_get_n_deallocations(pReg));
TEST(test_cunit_get_n_allocations(pSuite1) == test_cunit_get_n_deallocations(pSuite1));
TEST(test_cunit_get_n_allocations(pSuite2) == test_cunit_get_n_deallocations(pSuite2));
TEST(test_cunit_get_n_allocations(pTest1) == test_cunit_get_n_deallocations(pTest1));
TEST(test_cunit_get_n_allocations(pTest2) == test_cunit_get_n_deallocations(pTest2));
TEST(test_cunit_get_n_allocations(pTest3) == test_cunit_get_n_deallocations(pTest3));
TEST(test_cunit_get_n_allocations(pTest4) == test_cunit_get_n_deallocations(pTest4));
}
/*--------------------------------------------------*/
/* test create_suite()
* cleanup_suite()
*/
static void test_create_suite(void)
{
CU_pSuite pSuite1 = NULL;
CU_pSuite pSuite2 = NULL;
CU_pSuite pSuite3 = NULL;
CU_pSuite pSuite4 = NULL;
/* error condition - memory allocation failure */
test_cunit_deactivate_malloc();
pSuite1 = create_suite("suite1", NULL, NULL, NULL, NULL);
TEST(NULL == pSuite1);
test_cunit_activate_malloc();
/* normal creation & cleanup */
pSuite1 = create_suite("suite1", NULL, NULL, NULL, NULL);
TEST(NULL != pSuite1);
TEST(!strcmp("suite1", pSuite1->pName));
TEST(pSuite1->pTest == NULL); /* no tests added yet */
TEST(pSuite1->uiNumberOfTests == 0); /* no tests added yet */
TEST(pSuite1->pInitializeFunc == NULL); /* no init function */
TEST(pSuite1->pCleanupFunc == NULL); /* no cleanup function */
TEST(pSuite1->pNext == NULL); /* no more suites added yet */
pSuite2 = create_suite("suite2", sfunc1, NULL, NULL, NULL);
TEST(NULL != pSuite2);
TEST(!strcmp("suite2", pSuite2->pName));
TEST(pSuite2->pTest == NULL); /* no tests added yet */
TEST(pSuite2->uiNumberOfTests == 0); /* no tests added yet */
TEST(pSuite2->pInitializeFunc == sfunc1); /* init function */
TEST(pSuite2->pCleanupFunc == NULL); /* no cleanup function */
TEST(pSuite2->pNext == NULL); /* no more suites added yet */
pSuite3 = create_suite("suite3", NULL, sfunc1, NULL, NULL);
TEST(NULL != pSuite3);
TEST(!strcmp("suite3", pSuite3->pName));
TEST(pSuite3->pTest == NULL); /* no tests added yet */
TEST(pSuite3->uiNumberOfTests == 0); /* no tests added yet */
TEST(pSuite3->pInitializeFunc == NULL); /* no init function */
TEST(pSuite3->pCleanupFunc == sfunc1); /* cleanup function */
TEST(pSuite3->pNext == NULL); /* no more suites added yet */
pSuite4 = create_suite("suite4", sfunc1, sfunc1, NULL, NULL);
TEST(NULL != pSuite4);
TEST(!strcmp("suite4", pSuite4->pName));
TEST(pSuite4->pTest == NULL); /* no tests added yet */
TEST(pSuite4->uiNumberOfTests == 0); /* no tests added yet */
TEST(pSuite4->pInitializeFunc == sfunc1); /* no init function */
TEST(pSuite4->pCleanupFunc == sfunc1); /* cleanup function */
TEST(pSuite4->pNext == NULL); /* no more suites added yet */
TEST(0 != test_cunit_get_n_memevents(pSuite1));
TEST(test_cunit_get_n_allocations(pSuite1) != test_cunit_get_n_deallocations(pSuite1));
cleanup_suite(pSuite1);
CU_FREE(pSuite1);
TEST(test_cunit_get_n_allocations(pSuite1) == test_cunit_get_n_deallocations(pSuite1));
TEST(0 != test_cunit_get_n_memevents(pSuite2));
TEST(test_cunit_get_n_allocations(pSuite2) != test_cunit_get_n_deallocations(pSuite2));
cleanup_suite(pSuite2);
CU_FREE(pSuite2);
TEST(test_cunit_get_n_allocations(pSuite2) == test_cunit_get_n_deallocations(pSuite2));
TEST(0 != test_cunit_get_n_memevents(pSuite3));
TEST(test_cunit_get_n_allocations(pSuite3) != test_cunit_get_n_deallocations(pSuite3));
cleanup_suite(pSuite3);
CU_FREE(pSuite3);
TEST(test_cunit_get_n_allocations(pSuite3) == test_cunit_get_n_deallocations(pSuite3));
TEST(0 != test_cunit_get_n_memevents(pSuite4));
TEST(test_cunit_get_n_allocations(pSuite4) != test_cunit_get_n_deallocations(pSuite4));
cleanup_suite(pSuite4);
CU_FREE(pSuite4);
TEST(test_cunit_get_n_allocations(pSuite4) == test_cunit_get_n_deallocations(pSuite4));
}
/*--------------------------------------------------*/
/* test insert_suite()
* suite_exists()
*/
static void test_insert_suite(void)
{
CU_pSuite pSuite1 = NULL;
CU_pSuite pSuite2 = NULL;
CU_pSuite pSuite3 = NULL;
CU_pSuite pSuite4 = NULL;
CU_pTestRegistry pReg = CU_create_new_registry();
TEST_FATAL(NULL != pReg);
TEST(0 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
TEST(NULL == pReg->pSuite);
TEST(CU_FALSE == suite_exists(pReg, "suite1"));
TEST(CU_FALSE == suite_exists(pReg, "suite2"));
TEST(CU_FALSE == suite_exists(pReg, "suite3"));
TEST(CU_FALSE == suite_exists(pReg, "suite4"));
TEST(CU_FALSE == suite_exists(pReg, "suite5"));
TEST(CU_FALSE == suite_exists(pReg, ""));
/* normal creation & cleanup */
pSuite1 = create_suite("suite1", NULL, NULL, NULL, NULL);
insert_suite(pReg, pSuite1);
TEST(1 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
TEST(pReg->pSuite == pSuite1);
TEST(pSuite1->pNext == NULL);
TEST(CU_TRUE == suite_exists(pReg, "suite1"));
TEST(CU_FALSE == suite_exists(pReg, "suite2"));
TEST(CU_FALSE == suite_exists(pReg, "suite3"));
TEST(CU_FALSE == suite_exists(pReg, "suite4"));
TEST(CU_FALSE == suite_exists(pReg, "suite5"));
TEST(CU_FALSE == suite_exists(pReg, ""));
pSuite2 = create_suite("suite2", sfunc1, NULL, NULL, NULL);
insert_suite(pReg, pSuite2);
TEST(2 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
TEST(pReg->pSuite == pSuite1);
TEST(pSuite1->pNext == pSuite2);
TEST(pSuite2->pNext == NULL);
TEST(CU_TRUE == suite_exists(pReg, "suite1"));
TEST(CU_TRUE == suite_exists(pReg, "suite2"));
TEST(CU_FALSE == suite_exists(pReg, "suite3"));
TEST(CU_FALSE == suite_exists(pReg, "suite4"));
TEST(CU_FALSE == suite_exists(pReg, "suite5"));
TEST(CU_FALSE == suite_exists(pReg, ""));
pSuite3 = create_suite("suite3", NULL, sfunc1, NULL, NULL);
insert_suite(pReg, pSuite3);
TEST(3 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
TEST(pReg->pSuite == pSuite1);
TEST(pSuite1->pNext == pSuite2);
TEST(pSuite2->pNext == pSuite3);
TEST(pSuite3->pNext == NULL);
TEST(CU_TRUE == suite_exists(pReg, "suite1"));
TEST(CU_TRUE == suite_exists(pReg, "suite2"));
TEST(CU_TRUE == suite_exists(pReg, "suite3"));
TEST(CU_FALSE == suite_exists(pReg, "suite4"));
TEST(CU_FALSE == suite_exists(pReg, "suite5"));
TEST(CU_FALSE == suite_exists(pReg, ""));
pSuite4 = create_suite("suite4", sfunc1, sfunc1, NULL, NULL);
insert_suite(pReg, pSuite4);
TEST(4 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
TEST(pReg->pSuite == pSuite1);
TEST(pSuite1->pNext == pSuite2);
TEST(pSuite2->pNext == pSuite3);
TEST(pSuite3->pNext == pSuite4);
TEST(pSuite4->pNext == NULL);
TEST(CU_TRUE == suite_exists(pReg, "suite1"));
TEST(CU_TRUE == suite_exists(pReg, "suite2"));
TEST(CU_TRUE == suite_exists(pReg, "suite3"));
TEST(CU_TRUE == suite_exists(pReg, "suite4"));
TEST(CU_FALSE == suite_exists(pReg, "suite5"));
TEST(CU_FALSE == suite_exists(pReg, ""));
TEST(0 != test_cunit_get_n_memevents(pReg));
TEST(0 != test_cunit_get_n_memevents(pSuite1));
TEST(0 != test_cunit_get_n_memevents(pSuite2));
TEST(0 != test_cunit_get_n_memevents(pSuite3));
TEST(0 != test_cunit_get_n_memevents(pSuite4));
TEST(test_cunit_get_n_allocations(pReg) != test_cunit_get_n_deallocations(pReg));
TEST(test_cunit_get_n_allocations(pSuite1) != test_cunit_get_n_deallocations(pSuite1));
TEST(test_cunit_get_n_allocations(pSuite2) != test_cunit_get_n_deallocations(pSuite2));
TEST(test_cunit_get_n_allocations(pSuite3) != test_cunit_get_n_deallocations(pSuite3));
TEST(test_cunit_get_n_allocations(pSuite4) != test_cunit_get_n_deallocations(pSuite4));
cleanup_test_registry(pReg);
TEST(CU_FALSE == suite_exists(pReg, "suite1"));
TEST(CU_FALSE == suite_exists(pReg, "suite2"));
TEST(CU_FALSE == suite_exists(pReg, "suite3"));
TEST(CU_FALSE == suite_exists(pReg, "suite4"));
TEST(CU_FALSE == suite_exists(pReg, "suite5"));
TEST(CU_FALSE == suite_exists(pReg, ""));
CU_FREE(pReg);
TEST(test_cunit_get_n_allocations(pReg) == test_cunit_get_n_deallocations(pReg));
TEST(test_cunit_get_n_allocations(pSuite1) == test_cunit_get_n_deallocations(pSuite1));
TEST(test_cunit_get_n_allocations(pSuite2) == test_cunit_get_n_deallocations(pSuite2));
TEST(test_cunit_get_n_allocations(pSuite3) == test_cunit_get_n_deallocations(pSuite3));
TEST(test_cunit_get_n_allocations(pSuite4) == test_cunit_get_n_deallocations(pSuite4));
}
/*--------------------------------------------------*/
static void test_create_test(void)
{
CU_pTest pTest1 = NULL;
CU_pTest pTest2 = NULL;
/* error condition - memory allocation failure */
test_cunit_deactivate_malloc();
pTest1 = create_test("test1", test1);
test_cunit_activate_malloc();
TEST(NULL == pTest1);
/* normal creation & cleanup */
pTest1 = create_test("test1", test1);
TEST(NULL != pTest1);
TEST(pTest1->pTestFunc == test1);
TEST(!strcmp("test1", pTest1->pName));
TEST(pTest1->pNext == NULL);
TEST(pTest1->pPrev == NULL);
TEST(pTest1->pJumpBuf == NULL);
pTest2= create_test("test2", NULL);
TEST(NULL != pTest2);
TEST(pTest2->pTestFunc == NULL);
TEST(!strcmp("test2", pTest2->pName));
TEST(pTest2->pNext == NULL);
TEST(pTest2->pPrev == NULL);
TEST(pTest2->pJumpBuf == NULL);
TEST(0 != test_cunit_get_n_memevents(pTest1));
TEST(0 != test_cunit_get_n_memevents(pTest2));
TEST(test_cunit_get_n_allocations(pTest1) != test_cunit_get_n_deallocations(pTest1));
TEST(test_cunit_get_n_allocations(pTest2) != test_cunit_get_n_deallocations(pTest2));
cleanup_test(pTest1);
CU_FREE(pTest1);
cleanup_test(pTest2);
CU_FREE(pTest2);
TEST(test_cunit_get_n_allocations(pTest1) == test_cunit_get_n_deallocations(pTest1));
TEST(test_cunit_get_n_allocations(pTest2) == test_cunit_get_n_deallocations(pTest2));
}
/*--------------------------------------------------*/
/* test insert_test()
* test_exists()
*/
static void test_insert_test(void)
{
CU_pSuite pSuite1 = NULL;
CU_pSuite pSuite2 = NULL;
CU_pTest pTest1 = NULL;
CU_pTest pTest2 = NULL;
CU_pTest pTest3 = NULL;
CU_pTest pTest4 = NULL;
/* create tests to register */
pTest1 = create_test("test1", test1);
pTest2 = create_test("test2", NULL);
pTest3 = create_test("test3", test1);
pTest4 = create_test("", NULL);
/* create suites to hold tests */
pSuite1 = create_suite("suite1", NULL, NULL, NULL, NULL);
pSuite2 = create_suite("suite2", sfunc1, sfunc1, NULL, NULL);
TEST(CU_FALSE == test_exists(pSuite1, "test1"));
TEST(CU_FALSE == test_exists(pSuite1, "test2"));
TEST(CU_FALSE == test_exists(pSuite1, "test3"));
TEST(CU_FALSE == test_exists(pSuite1, "test4"));
TEST(CU_FALSE == test_exists(pSuite1, ""));
TEST(CU_FALSE == test_exists(pSuite2, "test1"));
TEST(CU_FALSE == test_exists(pSuite2, "test2"));
TEST(CU_FALSE == test_exists(pSuite2, "test3"));
TEST(CU_FALSE == test_exists(pSuite2, "test4"));
TEST(CU_FALSE == test_exists(pSuite2, ""));
insert_test(pSuite1, pTest1);
insert_test(pSuite1, pTest2);
insert_test(pSuite1, pTest3);
insert_test(pSuite2, pTest4);
TEST(CU_TRUE == test_exists(pSuite1, "test1"));
TEST(CU_TRUE == test_exists(pSuite1, "test2"));
TEST(CU_TRUE == test_exists(pSuite1, "test3"));
TEST(CU_FALSE == test_exists(pSuite1, "test4"));
TEST(CU_FALSE == test_exists(pSuite1, ""));
TEST(CU_FALSE == test_exists(pSuite2, "test1"));
TEST(CU_FALSE == test_exists(pSuite2, "test2"));
TEST(CU_FALSE == test_exists(pSuite2, "test3"));
TEST(CU_FALSE == test_exists(pSuite2, "test4"));
TEST(CU_TRUE == test_exists(pSuite2, ""));
TEST(3 == pSuite1->uiNumberOfTests);
TEST(1 == pSuite2->uiNumberOfTests);
TEST(pSuite1->pTest == pTest1);
TEST(pSuite2->pTest == pTest4);
TEST(pTest1->pNext == pTest2);
TEST(pTest1->pPrev == NULL);
TEST(pTest2->pNext == pTest3);
TEST(pTest2->pPrev == pTest1);
TEST(pTest3->pNext == NULL);
TEST(pTest3->pPrev == pTest2);
TEST(pTest4->pNext == NULL);
TEST(pTest4->pPrev == NULL);
TEST(0 != test_cunit_get_n_memevents(pSuite1));
TEST(0 != test_cunit_get_n_memevents(pSuite2));
TEST(0 != test_cunit_get_n_memevents(pTest1));
TEST(0 != test_cunit_get_n_memevents(pTest2));
TEST(0 != test_cunit_get_n_memevents(pTest3));
TEST(0 != test_cunit_get_n_memevents(pTest4));
TEST(test_cunit_get_n_allocations(pSuite1) != test_cunit_get_n_deallocations(pSuite1));
TEST(test_cunit_get_n_allocations(pSuite2) != test_cunit_get_n_deallocations(pSuite2));
TEST(test_cunit_get_n_allocations(pTest1) != test_cunit_get_n_deallocations(pTest1));
TEST(test_cunit_get_n_allocations(pTest2) != test_cunit_get_n_deallocations(pTest2));
TEST(test_cunit_get_n_allocations(pTest3) != test_cunit_get_n_deallocations(pTest3));
TEST(test_cunit_get_n_allocations(pTest4) != test_cunit_get_n_deallocations(pTest4));
cleanup_suite(pSuite1);
TEST(CU_FALSE == test_exists(pSuite1, "test1"));
TEST(CU_FALSE == test_exists(pSuite1, "test2"));
TEST(CU_FALSE == test_exists(pSuite1, "test3"));
TEST(CU_FALSE == test_exists(pSuite1, "test4"));
TEST(CU_FALSE == test_exists(pSuite1, ""));
TEST(CU_FALSE == test_exists(pSuite2, "test1"));
TEST(CU_FALSE == test_exists(pSuite2, "test2"));
TEST(CU_FALSE == test_exists(pSuite2, "test3"));
TEST(CU_FALSE == test_exists(pSuite2, "test4"));
TEST(CU_TRUE == test_exists(pSuite2, ""));
cleanup_suite(pSuite2);
TEST(CU_FALSE == test_exists(pSuite1, "test1"));
TEST(CU_FALSE == test_exists(pSuite1, "test2"));
TEST(CU_FALSE == test_exists(pSuite1, "test3"));
TEST(CU_FALSE == test_exists(pSuite1, "test4"));
TEST(CU_FALSE == test_exists(pSuite1, ""));
TEST(CU_FALSE == test_exists(pSuite2, "test1"));
TEST(CU_FALSE == test_exists(pSuite2, "test2"));
TEST(CU_FALSE == test_exists(pSuite2, "test3"));
TEST(CU_FALSE == test_exists(pSuite2, "test4"));
TEST(CU_FALSE == test_exists(pSuite2, ""));
CU_FREE(pSuite1);
CU_FREE(pSuite2);
TEST(test_cunit_get_n_allocations(pSuite1) == test_cunit_get_n_deallocations(pSuite1));
TEST(test_cunit_get_n_allocations(pSuite2) == test_cunit_get_n_deallocations(pSuite2));
TEST(test_cunit_get_n_allocations(pTest1) == test_cunit_get_n_deallocations(pTest1));
TEST(test_cunit_get_n_allocations(pTest2) == test_cunit_get_n_deallocations(pTest2));
TEST(test_cunit_get_n_allocations(pTest3) == test_cunit_get_n_deallocations(pTest3));
TEST(test_cunit_get_n_allocations(pTest4) == test_cunit_get_n_deallocations(pTest4));
}
/*--------------------------------------------------*/
static void test_cleanup_test(void)
{
char* pName;
CU_pTest pTest1 = create_test("test1", NULL);
TEST_FATAL(NULL != pTest1);
pName = pTest1->pName;
TEST(0 != test_cunit_get_n_memevents(pTest1));
TEST(0 != test_cunit_get_n_memevents(pName));
TEST(test_cunit_get_n_allocations(pTest1) != test_cunit_get_n_deallocations(pTest1));
TEST(test_cunit_get_n_allocations(pName) != test_cunit_get_n_deallocations(pName));
cleanup_test(pTest1);
CU_FREE(pTest1);
TEST(test_cunit_get_n_allocations(pTest1) == test_cunit_get_n_deallocations(pTest1));
TEST(test_cunit_get_n_allocations(pName) == test_cunit_get_n_deallocations(pName));
}
/*--------------------------------------------------*/
static void group_A_case_1(void)
{
CU_ASSERT_TRUE(1);
}
static void group_A_case_2(void)
{
CU_ASSERT_TRUE(2);
}
static void group_B_case_1(void)
{
CU_ASSERT_FALSE(1);
}
static void group_B_case_2(void)
{
CU_ASSERT_FALSE(2);
}
static CU_TestInfo group_A_test_cases[] = {
{ "1", group_A_case_1 },
{ "2", group_A_case_2 },
CU_TEST_INFO_NULL,
};
static CU_TestInfo group_B_test_cases[] = {
{ "1", group_B_case_1 },
{ "2", group_B_case_2 },
CU_TEST_INFO_NULL,
};
static CU_TestInfo group_C_test_cases[] = {
{ "1", group_B_case_1 },
{ "1", group_B_case_2 }, /* duplicate test name */
CU_TEST_INFO_NULL,
};
static CU_SuiteInfo suites0[] = {
CU_SUITE_INFO_NULL,
};
static CU_SuiteInfo suites1[] = {
{ "A1", NULL, NULL, NULL, NULL, group_A_test_cases },
{ "B1", NULL, NULL, NULL, NULL, group_B_test_cases },
CU_SUITE_INFO_NULL,
};
static CU_SuiteInfo suites2[] = {
{ "A2", NULL, NULL, NULL, NULL, group_A_test_cases },
{ "B2", NULL, NULL, NULL, NULL, group_B_test_cases },
CU_SUITE_INFO_NULL,
};
static CU_SuiteInfo suites3[] = {
{ "A3", NULL, NULL, NULL, NULL, group_A_test_cases },
{ "A3", NULL, NULL, NULL, NULL, group_C_test_cases }, /* duplicate suite name */
CU_SUITE_INFO_NULL,
};
static void test_register_suite(void)
{
CU_pTestRegistry pReg = NULL;
CU_ErrorCode status;
if (CU_initialize_registry()) {
fprintf(stderr, "\nError initializing registry in test_register_suite().");
return;
}
pReg = CU_get_registry();
/* test initial condition */
TEST_FATAL(NULL != pReg);
TEST(0 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
/* test CU_register_suites() with NULL */
status = CU_register_suites(NULL);
TEST(CUE_SUCCESS == status);
TEST(0 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
/* test CU_register_suites() with empty array */
status = CU_register_suites(suites0);
TEST(CUE_SUCCESS == status);
TEST(0 == pReg->uiNumberOfSuites);
TEST(0 == pReg->uiNumberOfTests);
/* test CU_register_suites() with ok array */
status = CU_register_suites(suites1);
TEST(CUE_SUCCESS == status);
TEST(2 == pReg->uiNumberOfSuites);
TEST(4 == pReg->uiNumberOfTests);
/* test CU_register_suites() with duplicate suite name */
status = CU_register_suites(suites1);
TEST(CUE_SUCCESS == status); /* shaky - depends on order of operation in CU_register_suites() */
TEST(4 == pReg->uiNumberOfSuites);
TEST(8 == pReg->uiNumberOfTests);
/* test CU_register_suites() with duplicate test name */
status = CU_register_suites(suites3);
TEST(CUE_DUP_TEST == status); /* shaky - depends on order of operation in CU_register_suites() */
TEST(6 == pReg->uiNumberOfSuites);
TEST(12 == pReg->uiNumberOfTests);
CU_cleanup_registry();
if (CU_initialize_registry()) {
fprintf(stderr, "\nError initializing registry in test_register_suite().");
return;
}
pReg = CU_get_registry();
/* test CU_register_nsuites() with ok arrays */
status = CU_register_nsuites(2, suites1, suites2);
TEST(CUE_SUCCESS == status);
TEST(4 == pReg->uiNumberOfSuites);
TEST(8 == pReg->uiNumberOfTests);
}
/*--------------------------------------------------*/
void test_cunit_TestDB(void)
{
test_cunit_start_tests("TestDB.c");
test_CU_initialize_registry();
test_CU_cleanup_registry();
test_CU_add_suite();
test_CU_set_suite_attributes();
test_get_suite_functions();
test_CU_add_test();
test_CU_set_test_attributes();
test_get_test_functions();
test_CU_get_registry();
test_CU_set_registry();
test_CU_create_new_registry();
test_cleanup_test_registry();
test_create_suite();
test_insert_suite();
test_create_test();
test_cleanup_test();
test_insert_test();
test_register_suite();
test_cunit_end_tests();
}
#endif /* CUNIT_BUILD_TESTS */
cunit-2.1-3-dfsg/CUnit/Sources/Framework/TestRun.c 0000664 0000000 0000000 00000307412 12607012350 0021734 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Implementation of Test Run Interface.
*
* Aug 2001 Initial implementaion (AK)
*
* 19/Aug/2001 Added initial registry/Suite/test framework implementation. (AK)
*
* 24/Aug/2001 Changed Data structure from SLL to DLL for all linked lists. (AK)
*
* 25/Nov/2001 Added notification for Suite Initialization failure condition. (AK)
*
* 5-Aug-2004 New interface, doxygen comments, moved add_failure on suite
* initialization so called even if a callback is not registered,
* moved CU_assertImplementation into TestRun.c, consolidated
* all run summary info out of CU_TestRegistry into TestRun.c,
* revised counting and reporting of run stats to cleanly
* differentiate suite, test, and assertion failures. (JDS)
*
* 1-Sep-2004 Modified CU_assertImplementation() and run_single_test() for
* setjmp/longjmp mechanism of aborting test runs, add asserts in
* CU_assertImplementation() to trap use outside a registered
* test function during an active test run. (JDS)
*
* 22-Sep-2004 Initial implementation of internal unit tests, added nFailureRecords
* to CU_Run_Summary, added CU_get_n_failure_records(), removed
* requirement for registry to be initialized in order to run
* CU_run_suite() and CU_run_test(). (JDS)
*
* 30-Apr-2005 Added callback for suite cleanup function failure,
* updated unit tests. (JDS)
*
* 23-Apr-2006 Added testing for suite/test deactivation, changing functions.
* Moved doxygen comments for public functions into header.
* Added type marker to CU_FailureRecord.
* Added support for tracking inactive suites/tests. (JDS)
*
* 02-May-2006 Added internationalization hooks. (JDS)
*
* 02-Jun-2006 Added support for elapsed time. Added handlers for suite
* start and complete events. Reworked test run routines to
* better support these features, suite/test activation. (JDS)
*
* 16-Avr-2007 Added setup and teardown functions. (CJN)
*
*/
/** @file
* Test run management functions (implementation).
*/
/** @addtogroup Framework
@{
*/
#include
#include
#include
#include
#include
#include
#include "CUnit.h"
#include "MyMem.h"
#include "TestDB.h"
#include "TestRun.h"
#include "Util.h"
#include "CUnit_intl.h"
/*=================================================================
* Global/Static Definitions
*=================================================================*/
static CU_BOOL f_bTestIsRunning = CU_FALSE; /**< Flag for whether a test run is in progress */
static CU_pSuite f_pCurSuite = NULL; /**< Pointer to the suite currently being run. */
static CU_pTest f_pCurTest = NULL; /**< Pointer to the test currently being run. */
/** CU_RunSummary to hold results of each test run. */
static CU_RunSummary f_run_summary = {"", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
/** CU_pFailureRecord to hold head of failure record list of each test run. */
static CU_pFailureRecord f_failure_list = NULL;
/** CU_pFailureRecord to hold head of failure record list of each test run. */
static CU_pFailureRecord f_last_failure = NULL;
/** Flag for whether inactive suites/tests are treated as failures. */
static CU_BOOL f_failure_on_inactive = CU_TRUE;
/** Variable for storage of start time for test run. */
static clock_t f_start_time;
/** Pointer to the function to be called before running a suite. */
static CU_SuiteStartMessageHandler f_pSuiteStartMessageHandler = NULL;
/** Pointer to the function to be called before running a test. */
static CU_TestStartMessageHandler f_pTestStartMessageHandler = NULL;
/** Pointer to the function to be called after running a test. */
static CU_TestCompleteMessageHandler f_pTestCompleteMessageHandler = NULL;
/** Pointer to the function to be called after running a suite. */
static CU_SuiteCompleteMessageHandler f_pSuiteCompleteMessageHandler = NULL;
/** Pointer to the function to be called when all tests have been run. */
static CU_AllTestsCompleteMessageHandler f_pAllTestsCompleteMessageHandler = NULL;
/** Pointer to the function to be called if a suite initialization function returns an error. */
static CU_SuiteInitFailureMessageHandler f_pSuiteInitFailureMessageHandler = NULL;
/** Pointer to the function to be called if a suite cleanup function returns an error. */
static CU_SuiteCleanupFailureMessageHandler f_pSuiteCleanupFailureMessageHandler = NULL;
/*=================================================================
* Private function forward declarations
*=================================================================*/
static void clear_previous_results(CU_pRunSummary pRunSummary, CU_pFailureRecord* ppFailure);
static void cleanup_failure_list(CU_pFailureRecord* ppFailure);
static CU_ErrorCode run_single_suite(CU_pSuite pSuite, CU_pRunSummary pRunSummary);
static CU_ErrorCode run_single_test(CU_pTest pTest, CU_pRunSummary pRunSummary);
static void add_failure(CU_pFailureRecord* ppFailure,
CU_pRunSummary pRunSummary,
CU_FailureType type,
unsigned int uiLineNumber,
const char *szCondition,
const char *szFileName,
CU_pSuite pSuite,
CU_pTest pTest);
/*=================================================================
* Public Interface functions
*=================================================================*/
CU_BOOL CU_assertImplementation(CU_BOOL bValue,
unsigned int uiLine,
const char *strCondition,
const char *strFile,
const char *strFunction,
CU_BOOL bFatal)
{
/* not used in current implementation - stop compiler warning */
CU_UNREFERENCED_PARAMETER(strFunction);
/* these should always be non-NULL (i.e. a test run is in progress) */
assert(NULL != f_pCurSuite);
assert(NULL != f_pCurTest);
++f_run_summary.nAsserts;
if (CU_FALSE == bValue) {
++f_run_summary.nAssertsFailed;
add_failure(&f_failure_list, &f_run_summary, CUF_AssertFailed,
uiLine, strCondition, strFile, f_pCurSuite, f_pCurTest);
if ((CU_TRUE == bFatal) && (NULL != f_pCurTest->pJumpBuf)) {
longjmp(*(f_pCurTest->pJumpBuf), 1);
}
}
return bValue;
}
/*------------------------------------------------------------------------*/
void CU_set_suite_start_handler(CU_SuiteStartMessageHandler pSuiteStartHandler)
{
f_pSuiteStartMessageHandler = pSuiteStartHandler;
}
/*------------------------------------------------------------------------*/
void CU_set_test_start_handler(CU_TestStartMessageHandler pTestStartHandler)
{
f_pTestStartMessageHandler = pTestStartHandler;
}
/*------------------------------------------------------------------------*/
void CU_set_test_complete_handler(CU_TestCompleteMessageHandler pTestCompleteHandler)
{
f_pTestCompleteMessageHandler = pTestCompleteHandler;
}
/*------------------------------------------------------------------------*/
void CU_set_suite_complete_handler(CU_SuiteCompleteMessageHandler pSuiteCompleteHandler)
{
f_pSuiteCompleteMessageHandler = pSuiteCompleteHandler;
}
/*------------------------------------------------------------------------*/
void CU_set_all_test_complete_handler(CU_AllTestsCompleteMessageHandler pAllTestsCompleteHandler)
{
f_pAllTestsCompleteMessageHandler = pAllTestsCompleteHandler;
}
/*------------------------------------------------------------------------*/
void CU_set_suite_init_failure_handler(CU_SuiteInitFailureMessageHandler pSuiteInitFailureHandler)
{
f_pSuiteInitFailureMessageHandler = pSuiteInitFailureHandler;
}
/*------------------------------------------------------------------------*/
void CU_set_suite_cleanup_failure_handler(CU_SuiteCleanupFailureMessageHandler pSuiteCleanupFailureHandler)
{
f_pSuiteCleanupFailureMessageHandler = pSuiteCleanupFailureHandler;
}
/*------------------------------------------------------------------------*/
CU_SuiteStartMessageHandler CU_get_suite_start_handler(void)
{
return f_pSuiteStartMessageHandler;
}
/*------------------------------------------------------------------------*/
CU_TestStartMessageHandler CU_get_test_start_handler(void)
{
return f_pTestStartMessageHandler;
}
/*------------------------------------------------------------------------*/
CU_TestCompleteMessageHandler CU_get_test_complete_handler(void)
{
return f_pTestCompleteMessageHandler;
}
/*------------------------------------------------------------------------*/
CU_SuiteCompleteMessageHandler CU_get_suite_complete_handler(void)
{
return f_pSuiteCompleteMessageHandler;
}
/*------------------------------------------------------------------------*/
CU_AllTestsCompleteMessageHandler CU_get_all_test_complete_handler(void)
{
return f_pAllTestsCompleteMessageHandler;
}
/*------------------------------------------------------------------------*/
CU_SuiteInitFailureMessageHandler CU_get_suite_init_failure_handler(void)
{
return f_pSuiteInitFailureMessageHandler;
}
/*------------------------------------------------------------------------*/
CU_SuiteCleanupFailureMessageHandler CU_get_suite_cleanup_failure_handler(void)
{
return f_pSuiteCleanupFailureMessageHandler;
}
/*------------------------------------------------------------------------*/
unsigned int CU_get_number_of_suites_run(void)
{
return f_run_summary.nSuitesRun;
}
/*------------------------------------------------------------------------*/
unsigned int CU_get_number_of_suites_failed(void)
{
return f_run_summary.nSuitesFailed;
}
/*------------------------------------------------------------------------*/
unsigned int CU_get_number_of_suites_inactive(void)
{
return f_run_summary.nSuitesInactive;
}
/*------------------------------------------------------------------------*/
unsigned int CU_get_number_of_tests_run(void)
{
return f_run_summary.nTestsRun;
}
/*------------------------------------------------------------------------*/
unsigned int CU_get_number_of_tests_failed(void)
{
return f_run_summary.nTestsFailed;
}
/*------------------------------------------------------------------------*/
unsigned int CU_get_number_of_tests_inactive(void)
{
return f_run_summary.nTestsInactive;
}
/*------------------------------------------------------------------------*/
unsigned int CU_get_number_of_asserts(void)
{
return f_run_summary.nAsserts;
}
/*------------------------------------------------------------------------*/
unsigned int CU_get_number_of_successes(void)
{
return (f_run_summary.nAsserts - f_run_summary.nAssertsFailed);
}
/*------------------------------------------------------------------------*/
unsigned int CU_get_number_of_failures(void)
{
return f_run_summary.nAssertsFailed;
}
/*------------------------------------------------------------------------*/
unsigned int CU_get_number_of_failure_records(void)
{
return f_run_summary.nFailureRecords;
}
/*------------------------------------------------------------------------*/
double CU_get_elapsed_time(void)
{
if (CU_TRUE == f_bTestIsRunning) {
return ((double)clock() - (double)f_start_time)/(double)CLOCKS_PER_SEC;
}
else {
return f_run_summary.ElapsedTime;
}
}
/*------------------------------------------------------------------------*/
CU_pFailureRecord CU_get_failure_list(void)
{
return f_failure_list;
}
/*------------------------------------------------------------------------*/
CU_pRunSummary CU_get_run_summary(void)
{
return &f_run_summary;
}
/*------------------------------------------------------------------------*/
CU_ErrorCode CU_run_all_tests(void)
{
CU_pTestRegistry pRegistry = CU_get_registry();
CU_pSuite pSuite = NULL;
CU_ErrorCode result = CUE_SUCCESS;
CU_ErrorCode result2;
/* Clear results from the previous run */
clear_previous_results(&f_run_summary, &f_failure_list);
if (NULL == pRegistry) {
result = CUE_NOREGISTRY;
}
else {
/* test run is starting - set flag */
f_bTestIsRunning = CU_TRUE;
f_start_time = clock();
pSuite = pRegistry->pSuite;
while ((NULL != pSuite) && ((CUE_SUCCESS == result) || (CU_get_error_action() == CUEA_IGNORE))) {
result2 = run_single_suite(pSuite, &f_run_summary);
result = (CUE_SUCCESS == result) ? result2 : result; /* result = 1st error encountered */
pSuite = pSuite->pNext;
}
/* test run is complete - clear flag */
f_bTestIsRunning = CU_FALSE;
f_run_summary.ElapsedTime = ((double)clock() - (double)f_start_time)/(double)CLOCKS_PER_SEC;
if (NULL != f_pAllTestsCompleteMessageHandler) {
(*f_pAllTestsCompleteMessageHandler)(f_failure_list);
}
}
CU_set_error(result);
return result;
}
/*------------------------------------------------------------------------*/
CU_ErrorCode CU_run_suite(CU_pSuite pSuite)
{
CU_ErrorCode result = CUE_SUCCESS;
/* Clear results from the previous run */
clear_previous_results(&f_run_summary, &f_failure_list);
if (NULL == pSuite) {
result = CUE_NOSUITE;
}
else {
/* test run is starting - set flag */
f_bTestIsRunning = CU_TRUE;
f_start_time = clock();
result = run_single_suite(pSuite, &f_run_summary);
/* test run is complete - clear flag */
f_bTestIsRunning = CU_FALSE;
f_run_summary.ElapsedTime = ((double)clock() - (double)f_start_time)/(double)CLOCKS_PER_SEC;
/* run handler for overall completion, if any */
if (NULL != f_pAllTestsCompleteMessageHandler) {
(*f_pAllTestsCompleteMessageHandler)(f_failure_list);
}
}
CU_set_error(result);
return result;
}
/*------------------------------------------------------------------------*/
CU_ErrorCode CU_run_test(CU_pSuite pSuite, CU_pTest pTest)
{
CU_ErrorCode result = CUE_SUCCESS;
CU_ErrorCode result2;
/* Clear results from the previous run */
clear_previous_results(&f_run_summary, &f_failure_list);
if (NULL == pSuite) {
result = CUE_NOSUITE;
}
else if (NULL == pTest) {
result = CUE_NOTEST;
}
else if (CU_FALSE == pSuite->fActive) {
f_run_summary.nSuitesInactive++;
if (CU_FALSE != f_failure_on_inactive) {
add_failure(&f_failure_list, &f_run_summary, CUF_SuiteInactive,
0, _("Suite inactive"), _("CUnit System"), pSuite, NULL);
}
result = CUE_SUITE_INACTIVE;
}
else if ((NULL == pTest->pName) || (NULL == CU_get_test_by_name(pTest->pName, pSuite))) {
result = CUE_TEST_NOT_IN_SUITE;
}
else {
/* test run is starting - set flag */
f_bTestIsRunning = CU_TRUE;
f_start_time = clock();
f_pCurTest = NULL;
f_pCurSuite = pSuite;
pSuite->uiNumberOfTestsFailed = 0;
pSuite->uiNumberOfTestsSuccess = 0;
/* run handler for suite start, if any */
if (NULL != f_pSuiteStartMessageHandler) {
(*f_pSuiteStartMessageHandler)(pSuite);
}
/* run the suite initialization function, if any */
if ((NULL != pSuite->pInitializeFunc) && (0 != (*pSuite->pInitializeFunc)())) {
/* init function had an error - call handler, if any */
if (NULL != f_pSuiteInitFailureMessageHandler) {
(*f_pSuiteInitFailureMessageHandler)(pSuite);
}
f_run_summary.nSuitesFailed++;
add_failure(&f_failure_list, &f_run_summary, CUF_SuiteInitFailed, 0,
_("Suite Initialization failed - Suite Skipped"),
_("CUnit System"), pSuite, NULL);
result = CUE_SINIT_FAILED;
}
/* reach here if no suite initialization, or if it succeeded */
else {
result2 = run_single_test(pTest, &f_run_summary);
result = (CUE_SUCCESS == result) ? result2 : result;
/* run the suite cleanup function, if any */
if ((NULL != pSuite->pCleanupFunc) && (0 != (*pSuite->pCleanupFunc)())) {
/* cleanup function had an error - call handler, if any */
if (NULL != f_pSuiteCleanupFailureMessageHandler) {
(*f_pSuiteCleanupFailureMessageHandler)(pSuite);
}
f_run_summary.nSuitesFailed++;
add_failure(&f_failure_list, &f_run_summary, CUF_SuiteCleanupFailed,
0, _("Suite cleanup failed."), _("CUnit System"), pSuite, NULL);
result = (CUE_SUCCESS == result) ? CUE_SCLEAN_FAILED : result;
}
}
/* run handler for suite completion, if any */
if (NULL != f_pSuiteCompleteMessageHandler) {
(*f_pSuiteCompleteMessageHandler)(pSuite, NULL);
}
/* test run is complete - clear flag */
f_bTestIsRunning = CU_FALSE;
f_run_summary.ElapsedTime = ((double)clock() - (double)f_start_time)/(double)CLOCKS_PER_SEC;
/* run handler for overall completion, if any */
if (NULL != f_pAllTestsCompleteMessageHandler) {
(*f_pAllTestsCompleteMessageHandler)(f_failure_list);
}
f_pCurSuite = NULL;
}
CU_set_error(result);
return result;
}
/*------------------------------------------------------------------------*/
void CU_clear_previous_results(void)
{
clear_previous_results(&f_run_summary, &f_failure_list);
}
/*------------------------------------------------------------------------*/
CU_pSuite CU_get_current_suite(void)
{
return f_pCurSuite;
}
/*------------------------------------------------------------------------*/
CU_pTest CU_get_current_test(void)
{
return f_pCurTest;
}
/*------------------------------------------------------------------------*/
CU_BOOL CU_is_test_running(void)
{
return f_bTestIsRunning;
}
/*------------------------------------------------------------------------*/
CU_EXPORT void CU_set_fail_on_inactive(CU_BOOL new_inactive)
{
f_failure_on_inactive = new_inactive;
}
/*------------------------------------------------------------------------*/
CU_EXPORT CU_BOOL CU_get_fail_on_inactive(void)
{
return f_failure_on_inactive;
}
/*------------------------------------------------------------------------*/
CU_EXPORT void CU_print_run_results(FILE *file)
{
char *summary_string;
assert(NULL != file);
summary_string = CU_get_run_results_string();
if (NULL != summary_string) {
fprintf(file, "%s", summary_string);
CU_FREE(summary_string);
}
else {
fprintf(file, _("An error occurred printing the run results."));
}
}
/*------------------------------------------------------------------------*/
CU_EXPORT char * CU_get_run_results_string(void)
{
CU_pRunSummary pRunSummary = &f_run_summary;
CU_pTestRegistry pRegistry = CU_get_registry();
size_t width[9];
size_t len;
char *result;
assert(NULL != pRunSummary);
assert(NULL != pRegistry);
width[0] = strlen(_("Run Summary:"));
width[1] = CU_MAX(6,
CU_MAX(strlen(_("Type")),
CU_MAX(strlen(_("suites")),
CU_MAX(strlen(_("tests")),
strlen(_("asserts")))))) + 1;
width[2] = CU_MAX(6,
CU_MAX(strlen(_("Total")),
CU_MAX(CU_number_width(pRegistry->uiNumberOfSuites),
CU_MAX(CU_number_width(pRegistry->uiNumberOfTests),
CU_number_width(pRunSummary->nAsserts))))) + 1;
width[3] = CU_MAX(6,
CU_MAX(strlen(_("Ran")),
CU_MAX(CU_number_width(pRunSummary->nSuitesRun),
CU_MAX(CU_number_width(pRunSummary->nTestsRun),
CU_number_width(pRunSummary->nAsserts))))) + 1;
width[4] = CU_MAX(6,
CU_MAX(strlen(_("Passed")),
CU_MAX(strlen(_("n/a")),
CU_MAX(CU_number_width(pRunSummary->nTestsRun - pRunSummary->nTestsFailed),
CU_number_width(pRunSummary->nAsserts - pRunSummary->nAssertsFailed))))) + 1;
width[5] = CU_MAX(6,
CU_MAX(strlen(_("Failed")),
CU_MAX(CU_number_width(pRunSummary->nSuitesFailed),
CU_MAX(CU_number_width(pRunSummary->nTestsFailed),
CU_number_width(pRunSummary->nAssertsFailed))))) + 1;
width[6] = CU_MAX(6,
CU_MAX(strlen(_("Inactive")),
CU_MAX(CU_number_width(pRunSummary->nSuitesInactive),
CU_MAX(CU_number_width(pRunSummary->nTestsInactive),
strlen(_("n/a")))))) + 1;
width[7] = strlen(_("Elapsed time = "));
width[8] = strlen(_(" seconds"));
len = 13 + 4*(width[0] + width[1] + width[2] + width[3] + width[4] + width[5] + width[6]) + width[7] + width[8] + 1;
result = (char *)CU_MALLOC(len);
if (NULL != result) {
snprintf(result, len, "%*s%*s%*s%*s%*s%*s%*s\n" /* if you change this, be sure */
"%*s%*s%*u%*u%*s%*u%*u\n" /* to change the calculation of */
"%*s%*s%*u%*u%*u%*u%*u\n" /* len above! */
"%*s%*s%*u%*u%*u%*u%*s\n\n"
"%*s%8.3f%*s",
width[0], _("Run Summary:"),
width[1], _("Type"),
width[2], _("Total"),
width[3], _("Ran"),
width[4], _("Passed"),
width[5], _("Failed"),
width[6], _("Inactive"),
width[0], " ",
width[1], _("suites"),
width[2], pRegistry->uiNumberOfSuites,
width[3], pRunSummary->nSuitesRun,
width[4], _("n/a"),
width[5], pRunSummary->nSuitesFailed,
width[6], pRunSummary->nSuitesInactive,
width[0], " ",
width[1], _("tests"),
width[2], pRegistry->uiNumberOfTests,
width[3], pRunSummary->nTestsRun,
width[4], pRunSummary->nTestsRun - pRunSummary->nTestsFailed,
width[5], pRunSummary->nTestsFailed,
width[6], pRunSummary->nTestsInactive,
width[0], " ",
width[1], _("asserts"),
width[2], pRunSummary->nAsserts,
width[3], pRunSummary->nAsserts,
width[4], pRunSummary->nAsserts - pRunSummary->nAssertsFailed,
width[5], pRunSummary->nAssertsFailed,
width[6], _("n/a"),
width[7], _("Elapsed time = "), CU_get_elapsed_time(), /* makes sure time is updated */
width[8], _(" seconds")
);
result[len-1] = '\0';
}
return result;
}
/*=================================================================
* Static Function Definitions
*=================================================================*/
/**
* Records a runtime failure.
* This function is called whenever a runtime failure occurs.
* This includes user assertion failures, suite initialization and
* cleanup failures, and inactive suites/tests when set as failures.
* This function records the details of the failure in a new
* failure record in the linked list of runtime failures.
*
* @param ppFailure Pointer to head of linked list of failure
* records to append with new failure record.
* If it points to a NULL pointer, it will be set
* to point to the new failure record.
* @param pRunSummary Pointer to CU_RunSummary keeping track of failure records
* (ignored if NULL).
* @param type Type of failure.
* @param uiLineNumber Line number of the failure, if applicable.
* @param szCondition Description of failure condition
* @param szFileName Name of file, if applicable
* @param pSuite The suite being run at time of failure
* @param pTest The test being run at time of failure
*/
static void add_failure(CU_pFailureRecord* ppFailure,
CU_pRunSummary pRunSummary,
CU_FailureType type,
unsigned int uiLineNumber,
const char *szCondition,
const char *szFileName,
CU_pSuite pSuite,
CU_pTest pTest)
{
CU_pFailureRecord pFailureNew = NULL;
CU_pFailureRecord pTemp = NULL;
assert(NULL != ppFailure);
pFailureNew = (CU_pFailureRecord)CU_MALLOC(sizeof(CU_FailureRecord));
if (NULL == pFailureNew) {
return;
}
pFailureNew->strFileName = NULL;
pFailureNew->strCondition = NULL;
if (NULL != szFileName) {
pFailureNew->strFileName = (char*)CU_MALLOC(strlen(szFileName) + 1);
if(NULL == pFailureNew->strFileName) {
CU_FREE(pFailureNew);
return;
}
strcpy(pFailureNew->strFileName, szFileName);
}
if (NULL != szCondition) {
pFailureNew->strCondition = (char*)CU_MALLOC(strlen(szCondition) + 1);
if (NULL == pFailureNew->strCondition) {
if(NULL != pFailureNew->strFileName) {
CU_FREE(pFailureNew->strFileName);
}
CU_FREE(pFailureNew);
return;
}
strcpy(pFailureNew->strCondition, szCondition);
}
pFailureNew->type = type;
pFailureNew->uiLineNumber = uiLineNumber;
pFailureNew->pTest = pTest;
pFailureNew->pSuite = pSuite;
pFailureNew->pNext = NULL;
pFailureNew->pPrev = NULL;
pTemp = *ppFailure;
if (NULL != pTemp) {
while (NULL != pTemp->pNext) {
pTemp = pTemp->pNext;
}
pTemp->pNext = pFailureNew;
pFailureNew->pPrev = pTemp;
}
else {
*ppFailure = pFailureNew;
}
if (NULL != pRunSummary) {
++(pRunSummary->nFailureRecords);
}
f_last_failure = pFailureNew;
}
/*
* Local function for result set initialization/cleanup.
*/
/*------------------------------------------------------------------------*/
/**
* Initializes the run summary information in the specified structure.
* Resets the run counts to zero, and calls cleanup_failure_list() if
* failures were recorded by the last test run. Calling this function
* multiple times, while inefficient, will not cause an error condition.
*
* @param pRunSummary CU_RunSummary to initialize (non-NULL).
* @param ppFailure The failure record to clean (non-NULL).
* @see CU_clear_previous_results()
*/
static void clear_previous_results(CU_pRunSummary pRunSummary, CU_pFailureRecord* ppFailure)
{
assert(NULL != pRunSummary);
assert(NULL != ppFailure);
pRunSummary->nSuitesRun = 0;
pRunSummary->nSuitesFailed = 0;
pRunSummary->nSuitesInactive = 0;
pRunSummary->nTestsRun = 0;
pRunSummary->nTestsFailed = 0;
pRunSummary->nTestsInactive = 0;
pRunSummary->nAsserts = 0;
pRunSummary->nAssertsFailed = 0;
pRunSummary->nFailureRecords = 0;
pRunSummary->ElapsedTime = 0.0;
if (NULL != *ppFailure) {
cleanup_failure_list(ppFailure);
}
f_last_failure = NULL;
}
/*------------------------------------------------------------------------*/
/**
* Frees all memory allocated for the linked list of test failure
* records. pFailure is reset to NULL after its list is cleaned up.
*
* @param ppFailure Pointer to head of linked list of
* CU_pFailureRecords to clean.
* @see CU_clear_previous_results()
*/
static void cleanup_failure_list(CU_pFailureRecord* ppFailure)
{
CU_pFailureRecord pCurFailure = NULL;
CU_pFailureRecord pNextFailure = NULL;
pCurFailure = *ppFailure;
while (NULL != pCurFailure) {
if (NULL != pCurFailure->strCondition) {
CU_FREE(pCurFailure->strCondition);
}
if (NULL != pCurFailure->strFileName) {
CU_FREE(pCurFailure->strFileName);
}
pNextFailure = pCurFailure->pNext;
CU_FREE(pCurFailure);
pCurFailure = pNextFailure;
}
*ppFailure = NULL;
}
/*------------------------------------------------------------------------*/
/**
* Runs all tests in a specified suite.
* Internal function to run all tests in a suite. The suite need
* not be registered in the test registry to be run. Only
* suites having their fActive flags set CU_TRUE will actually be
* run. If the CUnit framework is in an error condition after
* running a test, no additional tests are run.
*
* @param pSuite The suite containing the test (non-NULL).
* @param pRunSummary The CU_RunSummary to receive the results (non-NULL).
* @return A CU_ErrorCode indicating the status of the run.
* @see CU_run_suite() for public interface function.
* @see CU_run_all_tests() for running all suites.
*/
static CU_ErrorCode run_single_suite(CU_pSuite pSuite, CU_pRunSummary pRunSummary)
{
CU_pTest pTest = NULL;
unsigned int nStartFailures;
/* keep track of the last failure BEFORE running the test */
CU_pFailureRecord pLastFailure = f_last_failure;
CU_ErrorCode result = CUE_SUCCESS;
CU_ErrorCode result2;
assert(NULL != pSuite);
assert(NULL != pRunSummary);
nStartFailures = pRunSummary->nFailureRecords;
f_pCurTest = NULL;
f_pCurSuite = pSuite;
/* run handler for suite start, if any */
if (NULL != f_pSuiteStartMessageHandler) {
(*f_pSuiteStartMessageHandler)(pSuite);
}
/* run suite if it's active */
if (CU_FALSE != pSuite->fActive) {
/* run the suite initialization function, if any */
if ((NULL != pSuite->pInitializeFunc) && (0 != (*pSuite->pInitializeFunc)())) {
/* init function had an error - call handler, if any */
if (NULL != f_pSuiteInitFailureMessageHandler) {
(*f_pSuiteInitFailureMessageHandler)(pSuite);
}
pRunSummary->nSuitesFailed++;
add_failure(&f_failure_list, &f_run_summary, CUF_SuiteInitFailed, 0,
_("Suite Initialization failed - Suite Skipped"),
_("CUnit System"), pSuite, NULL);
result = CUE_SINIT_FAILED;
}
/* reach here if no suite initialization, or if it succeeded */
else {
pTest = pSuite->pTest;
while ((NULL != pTest) && ((CUE_SUCCESS == result) || (CU_get_error_action() == CUEA_IGNORE))) {
if (CU_FALSE != pTest->fActive) {
result2 = run_single_test(pTest, pRunSummary);
result = (CUE_SUCCESS == result) ? result2 : result;
}
else {
f_run_summary.nTestsInactive++;
if (CU_FALSE != f_failure_on_inactive) {
add_failure(&f_failure_list, &f_run_summary, CUF_TestInactive,
0, _("Test inactive"), _("CUnit System"), pSuite, pTest);
result = CUE_TEST_INACTIVE;
}
}
pTest = pTest->pNext;
if (CUE_SUCCESS == result) {
pSuite->uiNumberOfTestsFailed++;
}
else {
pSuite->uiNumberOfTestsSuccess++;
}
}
pRunSummary->nSuitesRun++;
/* call the suite cleanup function, if any */
if ((NULL != pSuite->pCleanupFunc) && (0 != (*pSuite->pCleanupFunc)())) {
if (NULL != f_pSuiteCleanupFailureMessageHandler) {
(*f_pSuiteCleanupFailureMessageHandler)(pSuite);
}
pRunSummary->nSuitesFailed++;
add_failure(&f_failure_list, &f_run_summary, CUF_SuiteCleanupFailed,
0, _("Suite cleanup failed."), _("CUnit System"), pSuite, NULL);
result = (CUE_SUCCESS == result) ? CUE_SCLEAN_FAILED : result;
}
}
}
/* otherwise record inactive suite and failure if appropriate */
else {
f_run_summary.nSuitesInactive++;
if (CU_FALSE != f_failure_on_inactive) {
add_failure(&f_failure_list, &f_run_summary, CUF_SuiteInactive,
0, _("Suite inactive"), _("CUnit System"), pSuite, NULL);
result = CUE_SUITE_INACTIVE;
}
}
/* if additional failures have occurred... */
if (pRunSummary->nFailureRecords > nStartFailures) {
if (NULL != pLastFailure) {
pLastFailure = pLastFailure->pNext; /* was a previous failure, so go to next one */
}
else {
pLastFailure = f_failure_list; /* no previous failure - go to 1st one */
}
}
else {
pLastFailure = NULL; /* no additional failure - set to NULL */
}
/* run handler for suite completion, if any */
if (NULL != f_pSuiteCompleteMessageHandler) {
(*f_pSuiteCompleteMessageHandler)(pSuite, pLastFailure);
}
f_pCurSuite = NULL;
return result;
}
/*------------------------------------------------------------------------*/
/**
* Runs a specific test.
* Internal function to run a test case. This includes calling
* any handler to be run before executing the test, running the
* test's function (if any), and calling any handler to be run
* after executing a test. Suite initialization and cleanup functions
* are not called by this function. A current suite must be set and
* active (checked by assertion).
*
* @param pTest The test to be run (non-NULL).
* @param pRunSummary The CU_RunSummary to receive the results (non-NULL).
* @return A CU_ErrorCode indicating the status of the run.
* @see CU_run_test() for public interface function.
* @see CU_run_all_tests() for running all suites.
*/
static CU_ErrorCode run_single_test(CU_pTest pTest, CU_pRunSummary pRunSummary)
{
volatile unsigned int nStartFailures;
/* keep track of the last failure BEFORE running the test */
volatile CU_pFailureRecord pLastFailure = f_last_failure;
jmp_buf buf;
CU_ErrorCode result = CUE_SUCCESS;
assert(NULL != f_pCurSuite);
assert(CU_FALSE != f_pCurSuite->fActive);
assert(NULL != pTest);
assert(NULL != pRunSummary);
nStartFailures = pRunSummary->nFailureRecords;
f_pCurTest = pTest;
if (NULL != f_pTestStartMessageHandler) {
(*f_pTestStartMessageHandler)(f_pCurTest, f_pCurSuite);
}
/* run test if it is active */
if (CU_FALSE != pTest->fActive) {
if (NULL != f_pCurSuite->pSetUpFunc) {
(*f_pCurSuite->pSetUpFunc)();
}
/* set jmp_buf and run test */
pTest->pJumpBuf = &buf;
if (0 == setjmp(buf)) {
if (NULL != pTest->pTestFunc) {
(*pTest->pTestFunc)();
}
}
if (NULL != f_pCurSuite->pTearDownFunc) {
(*f_pCurSuite->pTearDownFunc)();
}
pRunSummary->nTestsRun++;
}
else {
f_run_summary.nTestsInactive++;
if (CU_FALSE != f_failure_on_inactive) {
add_failure(&f_failure_list, &f_run_summary, CUF_TestInactive,
0, _("Test inactive"), _("CUnit System"), f_pCurSuite, f_pCurTest);
}
result = CUE_TEST_INACTIVE;
}
/* if additional failures have occurred... */
if (pRunSummary->nFailureRecords > nStartFailures) {
pRunSummary->nTestsFailed++;
if (NULL != pLastFailure) {
pLastFailure = pLastFailure->pNext; /* was a previous failure, so go to next one */
}
else {
pLastFailure = f_failure_list; /* no previous failure - go to 1st one */
}
}
else {
pLastFailure = NULL; /* no additional failure - set to NULL */
}
if (NULL != f_pTestCompleteMessageHandler) {
(*f_pTestCompleteMessageHandler)(f_pCurTest, f_pCurSuite, pLastFailure);
}
pTest->pJumpBuf = NULL;
f_pCurTest = NULL;
return result;
}
/** @} */
#ifdef CUNIT_BUILD_TESTS
#include "test_cunit.h"
/** Types of framework events tracked by test system. */
typedef enum TET {
SUITE_START = 1,
TEST_START,
TEST_COMPLETE,
SUITE_COMPLETE,
ALL_TESTS_COMPLETE,
SUITE_INIT_FAILED,
SUITE_CLEANUP_FAILED
} TestEventType;
/** Test event structure for recording details of a framework event. */
typedef struct TE {
TestEventType type;
CU_pSuite pSuite;
CU_pTest pTest;
CU_pFailureRecord pFailure;
struct TE * pNext;
} TestEvent, * pTestEvent;
static int f_nTestEvents = 0;
static pTestEvent f_pFirstEvent = NULL;
/** Creates & stores a test event record having the specified details. */
static void add_test_event(TestEventType type, CU_pSuite psuite,
CU_pTest ptest, CU_pFailureRecord pfailure)
{
pTestEvent pNewEvent = (pTestEvent)malloc(sizeof(TestEvent));
pTestEvent pNextEvent = f_pFirstEvent;
if (NULL == pNewEvent) {
fprintf(stderr, "Memory allocation failed in add_test_event().");
exit(1);
}
pNewEvent->type = type;
pNewEvent->pSuite = psuite;
pNewEvent->pTest = ptest;
pNewEvent->pFailure = pfailure;
pNewEvent->pNext = NULL;
if (pNextEvent) {
while (pNextEvent->pNext) {
pNextEvent = pNextEvent->pNext;
}
pNextEvent->pNext = pNewEvent;
}
else {
f_pFirstEvent = pNewEvent;
}
++f_nTestEvents;
}
/** Deallocates all test event data. */
static void clear_test_events(void)
{
pTestEvent pCurrentEvent = f_pFirstEvent;
pTestEvent pNextEvent = NULL;
while (pCurrentEvent) {
pNextEvent = pCurrentEvent->pNext;
free(pCurrentEvent);
pCurrentEvent = pNextEvent;
}
f_pFirstEvent = NULL;
f_nTestEvents = 0;
}
static void suite_start_handler(const CU_pSuite pSuite)
{
TEST(CU_is_test_running());
TEST(pSuite == CU_get_current_suite());
TEST(NULL == CU_get_current_test());
add_test_event(SUITE_START, pSuite, NULL, NULL);
}
static void test_start_handler(const CU_pTest pTest, const CU_pSuite pSuite)
{
TEST(CU_is_test_running());
TEST(pSuite == CU_get_current_suite());
TEST(pTest == CU_get_current_test());
add_test_event(TEST_START, pSuite, pTest, NULL);
}
static void test_complete_handler(const CU_pTest pTest, const CU_pSuite pSuite,
const CU_pFailureRecord pFailure)
{
TEST(CU_is_test_running());
TEST(pSuite == CU_get_current_suite());
TEST(pTest == CU_get_current_test());
add_test_event(TEST_COMPLETE, pSuite, pTest, pFailure);
}
static void suite_complete_handler(const CU_pSuite pSuite,
const CU_pFailureRecord pFailure)
{
TEST(CU_is_test_running());
TEST(pSuite == CU_get_current_suite());
TEST(NULL == CU_get_current_test());
add_test_event(SUITE_COMPLETE, pSuite, NULL, pFailure);
}
static void test_all_complete_handler(const CU_pFailureRecord pFailure)
{
TEST(!CU_is_test_running());
add_test_event(ALL_TESTS_COMPLETE, NULL, NULL, pFailure);
}
static void suite_init_failure_handler(const CU_pSuite pSuite)
{
TEST(CU_is_test_running());
TEST(pSuite == CU_get_current_suite());
add_test_event(SUITE_INIT_FAILED, pSuite, NULL, NULL);
}
static void suite_cleanup_failure_handler(const CU_pSuite pSuite)
{
TEST(CU_is_test_running());
TEST(pSuite == CU_get_current_suite());
add_test_event(SUITE_CLEANUP_FAILED, pSuite, NULL, NULL);
}
/**
* Centralize test result testing - we're going to do it a lot!
* This is messy since we want to report the calling location upon failure.
*
* Via calling test functions tests:
* CU_get_number_of_suites_run()
* CU_get_number_of_suites_failed()
* CU_get_number_of_tests_run()
* CU_get_number_of_tests_failed()
* CU_get_number_of_asserts()
* CU_get_number_of_successes()
* CU_get_number_of_failures()
* CU_get_number_of_failure_records()
* CU_get_run_summary()
*/
static void do_test_results(unsigned int nSuitesRun,
unsigned int nSuitesFailed,
unsigned int nSuitesInactive,
unsigned int nTestsRun,
unsigned int nTestsFailed,
unsigned int nTestsInactive,
unsigned int nAsserts,
unsigned int nSuccesses,
unsigned int nFailures,
unsigned int nFailureRecords,
const char *file,
unsigned int line)
{
char msg[500];
CU_pRunSummary pRunSummary = NULL;
if (nSuitesRun == CU_get_number_of_suites_run()) {
PASS();
} else {
snprintf(msg, 499, "%u == CU_get_number_of_suites_run() (called from %s:%u)",
nSuitesRun, file, line);
msg[499] = '\0';
FAIL(msg);
}
if (nSuitesInactive == CU_get_number_of_suites_inactive()) {
PASS();
} else {
snprintf(msg, 499, "%u == CU_get_number_of_suites_inactive() (called from %s:%u)",
nSuitesInactive, file, line);
msg[499] = '\0';
FAIL(msg);
}
if (nSuitesFailed == CU_get_number_of_suites_failed()) {
PASS();
} else {
snprintf(msg, 499, "%u == CU_get_number_of_suites_failed() (called from %s:%u)",
nSuitesFailed, file, line);
msg[499] = '\0';
FAIL(msg);
}
if (nTestsRun == CU_get_number_of_tests_run()) {
PASS();
} else {
snprintf(msg, 499, "%u == CU_get_number_of_tests_run() (called from %s:%u)",
nTestsRun, file, line);
msg[499] = '\0';
FAIL(msg);
}
if (nTestsFailed == CU_get_number_of_tests_failed()) {
PASS();
} else {
snprintf(msg, 499, "%u == CU_get_number_of_tests_failed() (called from %s:%u)",
nTestsFailed, file, line);
msg[499] = '\0';
FAIL(msg);
}
if (nTestsInactive == CU_get_number_of_tests_inactive()) {
PASS();
} else {
snprintf(msg, 499, "%u == CU_get_number_of_tests_inactive() (called from %s:%u)",
nTestsInactive, file, line);
msg[499] = '\0';
FAIL(msg);
}
if (nAsserts == CU_get_number_of_asserts()) {
PASS();
} else {
snprintf(msg, 499, "%u == CU_get_number_of_asserts() (called from %s:%u)",
nAsserts, file, line);
msg[499] = '\0';
FAIL(msg);
}
if (nSuccesses == CU_get_number_of_successes()) {
PASS();
} else {
snprintf(msg, 499, "%u == CU_get_number_of_successes() (called from %s:%u)",
nSuccesses, file, line);
msg[499] = '\0';
FAIL(msg);
}
if (nFailures == CU_get_number_of_failures()) {
PASS();
} else {
snprintf(msg, 499, "%u == CU_get_number_of_failures() (called from %s:%u)",
nFailures, file, line);
msg[499] = '\0';
FAIL(msg);
}
if (nFailureRecords == CU_get_number_of_failure_records()) {
PASS();
} else {
snprintf(msg, 499, "%u == CU_get_number_of_failure_records() (called from %s:%u)",
nFailureRecords, file, line);
msg[499] = '\0';
FAIL(msg);
}
pRunSummary = CU_get_run_summary();
if (pRunSummary->nSuitesRun == CU_get_number_of_suites_run()) {
PASS();
} else {
snprintf(msg, 499, "%u == CU_get_number_of_suites_run() (called from %s:%u)",
pRunSummary->nSuitesRun, file, line);
msg[499] = '\0';
FAIL(msg);
}
if (pRunSummary->nSuitesFailed == CU_get_number_of_suites_failed()) {
PASS();
} else {
snprintf(msg, 499, "%u == CU_get_number_of_suites_failed() (called from %s:%u)",
pRunSummary->nSuitesFailed, file, line);
msg[499] = '\0';
FAIL(msg);
}
if (pRunSummary->nTestsRun == CU_get_number_of_tests_run()) {
PASS();
} else {
snprintf(msg, 499, "%u == CU_get_number_of_tests_run() (called from %s:%u)",
pRunSummary->nTestsRun, file, line);
msg[499] = '\0';
FAIL(msg);
}
if (pRunSummary->nTestsFailed == CU_get_number_of_tests_failed()) {
PASS();
} else {
snprintf(msg, 499, "%u == CU_get_number_of_tests_failed() (called from %s:%u)",
pRunSummary->nTestsFailed, file, line);
msg[499] = '\0';
FAIL(msg);
}
if (pRunSummary->nAsserts == CU_get_number_of_asserts()) {
PASS();
} else {
snprintf(msg, 499, "%u == CU_get_number_of_asserts() (called from %s:%u)",
pRunSummary->nAsserts, file, line);
msg[499] = '\0';
FAIL(msg);
}
if (pRunSummary->nAssertsFailed == CU_get_number_of_failures()) {
PASS();
} else {
snprintf(msg, 499, "%u == CU_get_number_of_failures() (called from %s:%u)",
pRunSummary->nAssertsFailed, file, line);
msg[499] = '\0';
FAIL(msg);
}
if (pRunSummary->nFailureRecords == CU_get_number_of_failure_records()) {
PASS();
} else {
snprintf(msg, 499, "%u == CU_get_number_of_failure_records() (called from %s:%u)",
pRunSummary->nFailureRecords, file, line);
msg[499] = '\0';
FAIL(msg);
}
}
#define test_results(nSuitesRun, nSuitesFailed, nSuitesInactive, nTestsRun, nTestsFailed, \
nTestsInactive, nAsserts, nSuccesses, nFailures, nFailureRecords) \
do_test_results(nSuitesRun, nSuitesFailed, nSuitesInactive, nTestsRun, nTestsFailed, \
nTestsInactive, nAsserts, nSuccesses, nFailures, nFailureRecords, \
__FILE__, __LINE__)
static void test_succeed(void) { CU_TEST(CU_TRUE); }
static void test_fail(void) { CU_TEST(CU_FALSE); }
static int suite_succeed(void) { return 0; }
static int suite_fail(void) { return 1; }
static CU_BOOL SetUp_Passed;
static void test_succeed_if_setup(void) { CU_TEST(SetUp_Passed); }
static void test_fail_if_not_setup(void) { CU_TEST(SetUp_Passed); }
static void suite_setup(void) { SetUp_Passed = CU_TRUE; }
static void suite_teardown(void) { SetUp_Passed = CU_FALSE; }
/*-------------------------------------------------*/
/* tests:
* CU_set_suite_start_handler()
* CU_set_test_start_handler()
* CU_set_test_complete_handler()
* CU_set_suite_complete_handler()
* CU_set_all_test_complete_handler()
* CU_set_suite_init_failure_handler()
* CU_set_suite_cleanup_failure_handler()
* CU_get_suite_start_handler()
* CU_get_test_start_handler()
* CU_get_test_complete_handler()
* CU_get_suite_complete_handler()
* CU_get_all_test_complete_handler()
* CU_get_suite_init_failure_handler()
* CU_get_suite_cleanup_failure_handler()
* CU_is_test_running()
* via handlers tests:
* CU_get_current_suite()
* CU_get_current_test()
*/
static void test_message_handlers(void)
{
CU_pSuite pSuite1 = NULL;
CU_pSuite pSuite2 = NULL;
CU_pSuite pSuite3 = NULL;
CU_pTest pTest1 = NULL;
CU_pTest pTest2 = NULL;
CU_pTest pTest3 = NULL;
CU_pTest pTest4 = NULL;
CU_pTest pTest5 = NULL;
pTestEvent pEvent = NULL;
TEST(!CU_is_test_running());
/* handlers should be NULL on startup */
TEST(NULL == CU_get_suite_start_handler());
TEST(NULL == CU_get_test_start_handler());
TEST(NULL == CU_get_test_complete_handler());
TEST(NULL == CU_get_suite_complete_handler());
TEST(NULL == CU_get_all_test_complete_handler());
TEST(NULL == CU_get_suite_init_failure_handler());
TEST(NULL == CU_get_suite_cleanup_failure_handler());
/* register some suites and tests */
CU_initialize_registry();
pSuite1 = CU_add_suite("suite1", NULL, NULL);
pTest1 = CU_add_test(pSuite1, "test1", test_succeed);
pTest2 = CU_add_test(pSuite1, "test2", test_fail);
pTest3 = CU_add_test(pSuite1, "test3", test_succeed);
pSuite2 = CU_add_suite("suite2", suite_fail, NULL);
pTest4 = CU_add_test(pSuite2, "test4", test_succeed);
pSuite3 = CU_add_suite("suite3", suite_succeed, suite_fail);
pTest5 = CU_add_test(pSuite3, "test5", test_fail);
TEST_FATAL(CUE_SUCCESS == CU_get_error());
/* first run tests without handlers set */
clear_test_events();
CU_run_all_tests();
TEST(0 == f_nTestEvents);
TEST(NULL == f_pFirstEvent);
test_results(2,2,0,4,2,0,4,2,2,4);
/* set handlers to local functions */
CU_set_suite_start_handler(&suite_start_handler);
CU_set_test_start_handler(&test_start_handler);
CU_set_test_complete_handler(&test_complete_handler);
CU_set_suite_complete_handler(&suite_complete_handler);
CU_set_all_test_complete_handler(&test_all_complete_handler);
CU_set_suite_init_failure_handler(&suite_init_failure_handler);
CU_set_suite_cleanup_failure_handler(&suite_cleanup_failure_handler);
/* confirm handlers set properly */
TEST(suite_start_handler == CU_get_suite_start_handler());
TEST(test_start_handler == CU_get_test_start_handler());
TEST(test_complete_handler == CU_get_test_complete_handler());
TEST(suite_complete_handler == CU_get_suite_complete_handler());
TEST(test_all_complete_handler == CU_get_all_test_complete_handler());
TEST(suite_init_failure_handler == CU_get_suite_init_failure_handler());
TEST(suite_cleanup_failure_handler == CU_get_suite_cleanup_failure_handler());
/* run tests again with handlers set */
clear_test_events();
CU_run_all_tests();
TEST(17 == f_nTestEvents);
if (17 == f_nTestEvents) {
pEvent = f_pFirstEvent;
TEST(SUITE_START == pEvent->type);
TEST(pSuite1 == pEvent->pSuite);
TEST(NULL == pEvent->pTest);
TEST(NULL == pEvent->pFailure);
pEvent = pEvent->pNext;
TEST(TEST_START == pEvent->type);
TEST(pSuite1 == pEvent->pSuite);
TEST(pTest1 == pEvent->pTest);
TEST(NULL == pEvent->pFailure);
pEvent = pEvent->pNext;
TEST(TEST_COMPLETE == pEvent->type);
TEST(pSuite1 == pEvent->pSuite);
TEST(pTest1 == pEvent->pTest);
TEST(NULL == pEvent->pFailure);
pEvent = pEvent->pNext;
TEST(TEST_START == pEvent->type);
TEST(pSuite1 == pEvent->pSuite);
TEST(pTest2 == pEvent->pTest);
TEST(NULL == pEvent->pFailure);
pEvent = pEvent->pNext;
TEST(TEST_COMPLETE == pEvent->type);
TEST(pSuite1 == pEvent->pSuite);
TEST(pTest2 == pEvent->pTest);
TEST(NULL != pEvent->pFailure);
pEvent = pEvent->pNext;
TEST(TEST_START == pEvent->type);
TEST(pSuite1 == pEvent->pSuite);
TEST(pTest3 == pEvent->pTest);
TEST(NULL == pEvent->pFailure);
pEvent = pEvent->pNext;
TEST(TEST_COMPLETE == pEvent->type);
TEST(pSuite1 == pEvent->pSuite);
TEST(pTest3 == pEvent->pTest);
TEST(NULL == pEvent->pFailure);
pEvent = pEvent->pNext;
TEST(SUITE_COMPLETE == pEvent->type);
TEST(pSuite1 == pEvent->pSuite);
TEST(NULL == pEvent->pTest);
TEST(NULL != pEvent->pFailure);
pEvent = pEvent->pNext;
TEST(SUITE_START == pEvent->type);
TEST(pSuite2 == pEvent->pSuite);
TEST(NULL == pEvent->pTest);
TEST(NULL == pEvent->pFailure);
pEvent = pEvent->pNext;
TEST(SUITE_INIT_FAILED == pEvent->type);
TEST(pSuite2 == pEvent->pSuite);
TEST(NULL == pEvent->pTest);
TEST(NULL == pEvent->pFailure);
pEvent = pEvent->pNext;
TEST(SUITE_COMPLETE == pEvent->type);
TEST(pSuite2 == pEvent->pSuite);
TEST(NULL == pEvent->pTest);
TEST(NULL != pEvent->pFailure);
pEvent = pEvent->pNext;
TEST(SUITE_START == pEvent->type);
TEST(pSuite3 == pEvent->pSuite);
TEST(NULL == pEvent->pTest);
TEST(NULL == pEvent->pFailure);
pEvent = pEvent->pNext;
TEST(TEST_START == pEvent->type);
TEST(pSuite3 == pEvent->pSuite);
TEST(pTest5 == pEvent->pTest);
TEST(NULL == pEvent->pFailure);
pEvent = pEvent->pNext;
TEST(TEST_COMPLETE == pEvent->type);
TEST(pSuite3 == pEvent->pSuite);
TEST(pTest5 == pEvent->pTest);
TEST(NULL != pEvent->pFailure);
pEvent = pEvent->pNext;
TEST(SUITE_CLEANUP_FAILED == pEvent->type);
TEST(pSuite3 == pEvent->pSuite);
TEST(NULL == pEvent->pTest);
TEST(NULL == pEvent->pFailure);
pEvent = pEvent->pNext;
TEST(SUITE_COMPLETE == pEvent->type);
TEST(pSuite3 == pEvent->pSuite);
TEST(NULL == pEvent->pTest);
TEST(NULL != pEvent->pFailure);
pEvent = pEvent->pNext;
TEST(ALL_TESTS_COMPLETE == pEvent->type);
TEST(NULL == pEvent->pSuite);
TEST(NULL == pEvent->pTest);
TEST(NULL != pEvent->pFailure);
if (4 == CU_get_number_of_failure_records()) {
TEST(NULL != pEvent->pFailure->pNext);
TEST(NULL != pEvent->pFailure->pNext->pNext);
TEST(NULL != pEvent->pFailure->pNext->pNext->pNext);
TEST(NULL == pEvent->pFailure->pNext->pNext->pNext->pNext);
}
TEST(pEvent->pFailure == CU_get_failure_list());
}
test_results(2,2,0,4,2,0,4,2,2,4);
/* clear handlers and run again */
CU_set_suite_start_handler(NULL);
CU_set_test_start_handler(NULL);
CU_set_test_complete_handler(NULL);
CU_set_suite_complete_handler(NULL);
CU_set_all_test_complete_handler(NULL);
CU_set_suite_init_failure_handler(NULL);
CU_set_suite_cleanup_failure_handler(NULL);
TEST(NULL == CU_get_suite_start_handler());
TEST(NULL == CU_get_test_start_handler());
TEST(NULL == CU_get_test_complete_handler());
TEST(NULL == CU_get_suite_complete_handler());
TEST(NULL == CU_get_all_test_complete_handler());
TEST(NULL == CU_get_suite_init_failure_handler());
TEST(NULL == CU_get_suite_cleanup_failure_handler());
clear_test_events();
CU_run_all_tests();
TEST(0 == f_nTestEvents);
TEST(NULL == f_pFirstEvent);
test_results(2,2,0,4,2,0,4,2,2,4);
CU_cleanup_registry();
clear_test_events();
}
static CU_BOOL f_exit_called = CU_FALSE;
/* intercept exit for testing of CUEA_ABORT action */
void test_exit(int status)
{
CU_UNREFERENCED_PARAMETER(status); /* not used */
f_exit_called = CU_TRUE;
}
/*-------------------------------------------------*/
static void test_CU_fail_on_inactive(void)
{
CU_pSuite pSuite1 = NULL;
CU_pSuite pSuite2 = NULL;
CU_pTest pTest1 = NULL;
CU_pTest pTest2 = NULL;
CU_pTest pTest3 = NULL;
CU_pTest pTest4 = NULL;
CU_set_error_action(CUEA_IGNORE);
CU_initialize_registry();
/* register some suites and tests */
CU_initialize_registry();
pSuite1 = CU_add_suite("suite1", NULL, NULL);
pTest1 = CU_add_test(pSuite1, "test1", test_succeed);
pTest2 = CU_add_test(pSuite1, "test2", test_fail);
pSuite2 = CU_add_suite("suite2", suite_fail, NULL);
pTest3 = CU_add_test(pSuite2, "test3", test_succeed);
pTest4 = CU_add_test(pSuite2, "test4", test_succeed);
/* test initial conditions */
TEST(CU_TRUE == CU_get_fail_on_inactive());
TEST(CU_TRUE == pSuite1->fActive);
TEST(CU_TRUE == pSuite2->fActive);
TEST(CU_TRUE == pTest1->fActive);
TEST(CU_TRUE == pTest2->fActive);
TEST(CU_TRUE == pTest3->fActive);
TEST(CU_TRUE == pTest4->fActive);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CU_TRUE == CU_get_fail_on_inactive());
TEST(CUE_SINIT_FAILED == CU_run_all_tests()); /* all suites/tests active */
test_results(1,1,0,2,1,0,2,1,1,2);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CU_FALSE == CU_get_fail_on_inactive());
TEST(CUE_SINIT_FAILED == CU_run_all_tests());
test_results(1,1,0,2,1,0,2,1,1,2);
CU_set_suite_active(pSuite1, CU_FALSE);
CU_set_suite_active(pSuite2, CU_FALSE);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_SUITE_INACTIVE == CU_run_all_tests()); /* all suites inactive */
test_results(0,0,2,0,0,0,0,0,0,2);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SUCCESS == CU_run_all_tests());
test_results(0,0,2,0,0,0,0,0,0,0);
CU_set_suite_active(pSuite1, CU_TRUE);
CU_set_suite_active(pSuite2, CU_TRUE);
CU_set_suite_active(pSuite2, CU_FALSE);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_SUITE_INACTIVE == CU_run_all_tests()); /* some suites inactive */
test_results(1,0,1,2,1,0,2,1,1,2);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SUCCESS == CU_run_all_tests());
test_results(1,0,1,2,1,0,2,1,1,1);
CU_set_suite_active(pSuite2, CU_TRUE);
CU_set_test_active(pTest1, CU_FALSE);
CU_set_test_active(pTest2, CU_FALSE);
CU_set_test_active(pTest3, CU_FALSE);
CU_set_test_active(pTest4, CU_FALSE);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_TEST_INACTIVE == CU_run_all_tests()); /* all tests inactive */
test_results(1,1,0,0,0,2,0,0,0,3);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SINIT_FAILED == CU_run_all_tests());
test_results(1,1,0,0,0,2,0,0,0,1);
CU_set_test_active(pTest1, CU_TRUE);
CU_set_test_active(pTest2, CU_TRUE);
CU_set_test_active(pTest3, CU_TRUE);
CU_set_test_active(pTest4, CU_TRUE);
CU_set_test_active(pTest2, CU_FALSE);
CU_set_test_active(pTest4, CU_FALSE);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_TEST_INACTIVE == CU_run_all_tests()); /* some tests inactive */
test_results(1,1,0,1,0,1,1,1,0,2);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SINIT_FAILED == CU_run_all_tests());
test_results(1,1,0,1,0,1,1,1,0,1);
CU_set_test_active(pTest2, CU_TRUE);
CU_set_test_active(pTest4, CU_TRUE);
CU_set_suite_active(pSuite2, CU_FALSE);
CU_set_test_active(pTest1, CU_FALSE);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_TEST_INACTIVE == CU_run_all_tests()); /* some suites & tests inactive */
test_results(1,0,1,1,1,1,1,0,1,3);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SUCCESS == CU_run_all_tests());
test_results(1,0,1,1,1,1,1,0,1,1);
CU_set_suite_active(pSuite2, CU_TRUE);
CU_set_test_active(pTest1, CU_TRUE);
/* clean up */
CU_cleanup_registry();
}
/*-------------------------------------------------*/
static void test_CU_run_all_tests(void)
{
CU_pSuite pSuite1 = NULL;
CU_pSuite pSuite2 = NULL;
CU_pSuite pSuite3 = NULL;
CU_pSuite pSuite4 = NULL;
CU_pTest pTest1 = NULL;
CU_pTest pTest2 = NULL;
CU_pTest pTest3 = NULL;
CU_pTest pTest4 = NULL;
CU_pTest pTest5 = NULL;
CU_pTest pTest6 = NULL;
CU_pTest pTest7 = NULL;
CU_pTest pTest8 = NULL;
CU_pTest pTest9 = NULL;
CU_pTest pTest10 = NULL;
/* error - uninitialized registry (CUEA_IGNORE) */
CU_cleanup_registry();
CU_set_error_action(CUEA_IGNORE);
TEST(CUE_NOREGISTRY == CU_run_all_tests());
TEST(CUE_NOREGISTRY == CU_get_error());
/* error - uninitialized registry (CUEA_FAIL) */
CU_cleanup_registry();
CU_set_error_action(CUEA_FAIL);
TEST(CUE_NOREGISTRY == CU_run_all_tests());
TEST(CUE_NOREGISTRY == CU_get_error());
/* error - uninitialized registry (CUEA_ABORT) */
CU_cleanup_registry();
CU_set_error_action(CUEA_ABORT);
f_exit_called = CU_FALSE;
CU_run_all_tests();
TEST(CU_TRUE == f_exit_called);
f_exit_called = CU_FALSE;
/* run with no suites or tests registered */
CU_initialize_registry();
CU_set_error_action(CUEA_IGNORE);
TEST(CUE_SUCCESS == CU_run_all_tests());
test_results(0,0,0,0,0,0,0,0,0,0);
/* register some suites and tests */
CU_initialize_registry();
pSuite1 = CU_add_suite("suite1", NULL, NULL);
pTest1 = CU_add_test(pSuite1, "test1", test_succeed);
pTest2 = CU_add_test(pSuite1, "test2", test_fail);
pTest3 = CU_add_test(pSuite1, "test1", test_succeed); /* duplicate test name OK */
pTest4 = CU_add_test(pSuite1, "test4", test_fail);
pTest5 = CU_add_test(pSuite1, "test1", test_succeed); /* duplicate test name OK */
pSuite2 = CU_add_suite("suite2", suite_fail, NULL);
pTest6 = CU_add_test(pSuite2, "test6", test_succeed);
pTest7 = CU_add_test(pSuite2, "test7", test_succeed);
pSuite3 = CU_add_suite("suite1", NULL, NULL); /* duplicate suite name OK */
pTest8 = CU_add_test(pSuite3, "test8", test_fail);
pTest9 = CU_add_test(pSuite3, "test9", test_succeed);
pSuite4 = CU_add_suite("suite4", NULL, suite_fail);
pTest10 = CU_add_test(pSuite4, "test10", test_succeed);
TEST_FATAL(4 == CU_get_registry()->uiNumberOfSuites);
TEST_FATAL(10 == CU_get_registry()->uiNumberOfTests);
/* run all tests (CUEA_IGNORE) */
CU_set_error_action(CUEA_IGNORE);
TEST(CUE_SINIT_FAILED == CU_run_all_tests()); /* all suites/tests active */
test_results(3,2,0,8,3,0,8,5,3,5);
CU_set_suite_active(pSuite1, CU_FALSE);
CU_set_suite_active(pSuite2, CU_FALSE);
CU_set_suite_active(pSuite3, CU_FALSE);
CU_set_suite_active(pSuite4, CU_FALSE);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SUCCESS == CU_run_all_tests()); /* suites inactive */
test_results(0,0,4,0,0,0,0,0,0,0);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_SUITE_INACTIVE == CU_run_all_tests());
test_results(0,0,4,0,0,0,0,0,0,4);
CU_set_suite_active(pSuite1, CU_FALSE);
CU_set_suite_active(pSuite2, CU_TRUE);
CU_set_suite_active(pSuite3, CU_TRUE);
CU_set_suite_active(pSuite4, CU_FALSE);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SINIT_FAILED == CU_run_all_tests()); /* some suites inactive */
test_results(1,1,2,2,1,0,2,1,1,2);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_SUITE_INACTIVE == CU_run_all_tests());
test_results(1,1,2,2,1,0,2,1,1,4);
CU_set_suite_active(pSuite1, CU_TRUE);
CU_set_suite_active(pSuite2, CU_TRUE);
CU_set_suite_active(pSuite3, CU_TRUE);
CU_set_suite_active(pSuite4, CU_TRUE);
CU_set_test_active(pTest1, CU_FALSE);
CU_set_test_active(pTest2, CU_FALSE);
CU_set_test_active(pTest3, CU_FALSE);
CU_set_test_active(pTest4, CU_FALSE);
CU_set_test_active(pTest5, CU_FALSE);
CU_set_test_active(pTest6, CU_FALSE);
CU_set_test_active(pTest7, CU_FALSE);
CU_set_test_active(pTest8, CU_FALSE);
CU_set_test_active(pTest9, CU_FALSE);
CU_set_test_active(pTest10, CU_FALSE);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SINIT_FAILED == CU_run_all_tests()); /* no tests active */
test_results(3,2,0,0,0,8,0,0,0,2);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_TEST_INACTIVE == CU_run_all_tests());
test_results(3,2,0,0,0,8,0,0,0,10);
CU_set_test_active(pTest1, CU_TRUE);
CU_set_test_active(pTest2, CU_FALSE);
CU_set_test_active(pTest3, CU_TRUE);
CU_set_test_active(pTest4, CU_FALSE);
CU_set_test_active(pTest5, CU_TRUE);
CU_set_test_active(pTest6, CU_FALSE);
CU_set_test_active(pTest7, CU_TRUE);
CU_set_test_active(pTest8, CU_FALSE);
CU_set_test_active(pTest9, CU_TRUE);
CU_set_test_active(pTest10, CU_FALSE);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SINIT_FAILED == CU_run_all_tests()); /* some tests active */
test_results(3,2,0,4,0,4,4,4,0,2);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_TEST_INACTIVE == CU_run_all_tests());
test_results(3,2,0,4,0,4,4,4,0,6);
CU_set_test_active(pTest1, CU_TRUE);
CU_set_test_active(pTest2, CU_TRUE);
CU_set_test_active(pTest3, CU_TRUE);
CU_set_test_active(pTest4, CU_TRUE);
CU_set_test_active(pTest5, CU_TRUE);
CU_set_test_active(pTest6, CU_TRUE);
CU_set_test_active(pTest7, CU_TRUE);
CU_set_test_active(pTest8, CU_TRUE);
CU_set_test_active(pTest9, CU_TRUE);
CU_set_test_active(pTest10, CU_TRUE);
CU_set_suite_initfunc(pSuite1, &suite_fail);
TEST(CUE_SINIT_FAILED == CU_run_all_tests()); /* change a suite init function */
CU_set_suite_initfunc(pSuite1, NULL);
test_results(2,3,0,3,1,0,3,2,1,4);
CU_set_suite_cleanupfunc(pSuite4, NULL);
TEST(CUE_SINIT_FAILED == CU_run_all_tests()); /* change a suite cleanup function */
CU_set_suite_cleanupfunc(pSuite4, &suite_fail);
test_results(3,1,0,8,3,0,8,5,3,4);
CU_set_test_func(pTest2, &test_succeed);
CU_set_test_func(pTest4, &test_succeed);
CU_set_test_func(pTest8, &test_succeed);
TEST(CUE_SINIT_FAILED == CU_run_all_tests()); /* change a test function */
CU_set_test_func(pTest2, &test_fail);
CU_set_test_func(pTest4, &test_fail);
CU_set_test_func(pTest8, &test_fail);
test_results(3,2,0,8,0,0,8,8,0,2);
/* run all tests (CUEA_FAIL) */
CU_set_error_action(CUEA_FAIL);
TEST(CUE_SINIT_FAILED == CU_run_all_tests()); /* all suites active */
test_results(1,1,0,5,2,0,5,3,2,3);
CU_set_suite_active(pSuite1, CU_TRUE);
CU_set_suite_active(pSuite2, CU_FALSE);
CU_set_suite_active(pSuite3, CU_FALSE);
CU_set_suite_active(pSuite4, CU_TRUE);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SCLEAN_FAILED == CU_run_all_tests()); /* some suites inactive */
test_results(2,1,2,6,2,0,6,4,2,3);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_SUITE_INACTIVE == CU_run_all_tests());
test_results(1,0,1,5,2,0,5,3,2,3);
CU_set_suite_active(pSuite1, CU_TRUE);
CU_set_suite_active(pSuite2, CU_TRUE);
CU_set_suite_active(pSuite3, CU_TRUE);
CU_set_suite_active(pSuite4, CU_TRUE);
CU_set_test_active(pTest1, CU_FALSE);
CU_set_test_active(pTest2, CU_FALSE);
CU_set_test_active(pTest3, CU_FALSE);
CU_set_test_active(pTest4, CU_FALSE);
CU_set_test_active(pTest5, CU_FALSE);
CU_set_test_active(pTest6, CU_FALSE);
CU_set_test_active(pTest7, CU_FALSE);
CU_set_test_active(pTest8, CU_FALSE);
CU_set_test_active(pTest9, CU_FALSE);
CU_set_test_active(pTest10, CU_FALSE);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SINIT_FAILED == CU_run_all_tests()); /* no tests active */
test_results(1,1,0,0,0,5,0,0,0,1);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_TEST_INACTIVE == CU_run_all_tests());
test_results(1,0,0,0,0,1,0,0,0,1);
CU_set_test_active(pTest1, CU_FALSE);
CU_set_test_active(pTest2, CU_TRUE);
CU_set_test_active(pTest3, CU_FALSE);
CU_set_test_active(pTest4, CU_TRUE);
CU_set_test_active(pTest5, CU_FALSE);
CU_set_test_active(pTest6, CU_TRUE);
CU_set_test_active(pTest7, CU_FALSE);
CU_set_test_active(pTest8, CU_TRUE);
CU_set_test_active(pTest9, CU_FALSE);
CU_set_test_active(pTest10, CU_TRUE);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SINIT_FAILED == CU_run_all_tests()); /* some tests active */
test_results(1,1,0,2,2,3,2,0,2,3);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_TEST_INACTIVE == CU_run_all_tests());
test_results(1,0,0,0,0,1,0,0,0,1);
CU_set_test_active(pTest1, CU_TRUE);
CU_set_test_active(pTest2, CU_TRUE);
CU_set_test_active(pTest3, CU_TRUE);
CU_set_test_active(pTest4, CU_TRUE);
CU_set_test_active(pTest5, CU_TRUE);
CU_set_test_active(pTest6, CU_TRUE);
CU_set_test_active(pTest7, CU_TRUE);
CU_set_test_active(pTest8, CU_TRUE);
CU_set_test_active(pTest9, CU_TRUE);
CU_set_test_active(pTest10, CU_TRUE);
CU_set_suite_initfunc(pSuite2, NULL);
TEST(CUE_SCLEAN_FAILED == CU_run_all_tests()); /* change a suite init function */
CU_set_suite_initfunc(pSuite2, &suite_fail);
test_results(4,1,0,10,3,0,10,7,3,4);
CU_set_suite_cleanupfunc(pSuite1, &suite_fail);
TEST(CUE_SCLEAN_FAILED == CU_run_all_tests()); /* change a suite cleanup function */
CU_set_suite_cleanupfunc(pSuite1, NULL);
test_results(1,1,0,5,2,0,5,3,2,3);
CU_set_test_func(pTest1, &test_fail);
CU_set_test_func(pTest3, &test_fail);
CU_set_test_func(pTest5, &test_fail);
CU_set_test_func(pTest9, &test_fail);
CU_set_test_func(pTest10, &test_fail);
TEST(CUE_SINIT_FAILED == CU_run_all_tests()); /* change a test function */
CU_set_test_func(pTest1, &test_succeed);
CU_set_test_func(pTest3, &test_succeed);
CU_set_test_func(pTest5, &test_succeed);
CU_set_test_func(pTest9, &test_succeed);
CU_set_test_func(pTest10, &test_succeed);
test_results(1,1,0,5,5,0,5,0,5,6);
/* run all tests (CUEA_ABORT) */
f_exit_called = CU_FALSE;
CU_set_error_action(CUEA_ABORT);
CU_set_suite_active(pSuite1, CU_TRUE);
CU_set_suite_active(pSuite2, CU_TRUE);
CU_set_suite_active(pSuite3, CU_TRUE);
CU_set_suite_active(pSuite4, CU_TRUE);
TEST(CUE_SINIT_FAILED == CU_run_all_tests()); /* all suites active */
TEST(CU_TRUE == f_exit_called);
test_results(1,1,0,5,2,0,5,3,2,3);
CU_set_suite_active(pSuite1, CU_FALSE);
CU_set_suite_active(pSuite2, CU_FALSE);
CU_set_suite_active(pSuite3, CU_FALSE);
CU_set_suite_active(pSuite4, CU_FALSE);
f_exit_called = CU_FALSE;
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SUCCESS == CU_run_all_tests()); /* no suites active, so no abort() */
TEST(CU_FALSE == f_exit_called);
test_results(0,0,4,0,0,0,0,0,0,0);
f_exit_called = CU_FALSE;
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_SUITE_INACTIVE == CU_run_all_tests());
TEST(CU_TRUE == f_exit_called);
test_results(0,0,1,0,0,0,0,0,0,1);
CU_set_suite_active(pSuite1, CU_TRUE);
CU_set_suite_active(pSuite2, CU_FALSE);
CU_set_suite_active(pSuite3, CU_TRUE);
CU_set_suite_active(pSuite4, CU_TRUE);
f_exit_called = CU_FALSE;
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SCLEAN_FAILED == CU_run_all_tests()); /* some suites active */
TEST(CU_TRUE == f_exit_called);
test_results(3,1,1,8,3,0,8,5,3,4);
f_exit_called = CU_FALSE;
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_SUITE_INACTIVE == CU_run_all_tests());
TEST(CU_TRUE == f_exit_called);
test_results(1,0,1,5,2,0,5,3,2,3);
CU_set_suite_active(pSuite1, CU_TRUE);
CU_set_suite_active(pSuite2, CU_TRUE);
CU_set_suite_active(pSuite3, CU_TRUE);
CU_set_suite_active(pSuite4, CU_TRUE);
CU_set_test_active(pTest1, CU_FALSE);
CU_set_test_active(pTest2, CU_FALSE);
CU_set_test_active(pTest3, CU_FALSE);
CU_set_test_active(pTest4, CU_FALSE);
CU_set_test_active(pTest5, CU_FALSE);
CU_set_test_active(pTest6, CU_FALSE);
CU_set_test_active(pTest7, CU_FALSE);
CU_set_test_active(pTest8, CU_FALSE);
CU_set_test_active(pTest9, CU_FALSE);
CU_set_test_active(pTest10, CU_FALSE);
f_exit_called = CU_FALSE;
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SINIT_FAILED == CU_run_all_tests()); /* no tests active */
TEST(CU_TRUE == f_exit_called);
test_results(1,1,0,0,0,5,0,0,0,1);
f_exit_called = CU_FALSE;
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_TEST_INACTIVE == CU_run_all_tests());
TEST(CU_TRUE == f_exit_called);
test_results(1,0,0,0,0,1,0,0,0,1);
CU_set_test_active(pTest1, CU_FALSE);
CU_set_test_active(pTest2, CU_TRUE);
CU_set_test_active(pTest3, CU_FALSE);
CU_set_test_active(pTest4, CU_TRUE);
CU_set_test_active(pTest5, CU_FALSE);
CU_set_test_active(pTest6, CU_TRUE);
CU_set_test_active(pTest7, CU_FALSE);
CU_set_test_active(pTest8, CU_TRUE);
CU_set_test_active(pTest9, CU_FALSE);
CU_set_test_active(pTest10, CU_TRUE);
f_exit_called = CU_FALSE;
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SINIT_FAILED == CU_run_all_tests()); /* some tests active */
TEST(CU_TRUE == f_exit_called);
test_results(1,1,0,2,2,3,2,0,2,3);
f_exit_called = CU_FALSE;
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_TEST_INACTIVE == CU_run_all_tests());
TEST(CU_TRUE == f_exit_called);
test_results(1,0,0,0,0,1,0,0,0,1);
CU_set_test_active(pTest1, CU_TRUE);
CU_set_test_active(pTest2, CU_TRUE);
CU_set_test_active(pTest3, CU_TRUE);
CU_set_test_active(pTest4, CU_TRUE);
CU_set_test_active(pTest5, CU_TRUE);
CU_set_test_active(pTest6, CU_TRUE);
CU_set_test_active(pTest7, CU_TRUE);
CU_set_test_active(pTest8, CU_TRUE);
CU_set_test_active(pTest9, CU_TRUE);
CU_set_test_active(pTest10, CU_TRUE);
f_exit_called = CU_FALSE;
CU_set_suite_initfunc(pSuite1, &suite_fail);
TEST(CUE_SINIT_FAILED == CU_run_all_tests()); /* change a suite init function */
CU_set_suite_initfunc(pSuite1, NULL);
TEST(CU_TRUE == f_exit_called);
test_results(0,1,0,0,0,0,0,0,0,1);
f_exit_called = CU_FALSE;
CU_set_suite_cleanupfunc(pSuite1, &suite_fail);
TEST(CUE_SCLEAN_FAILED == CU_run_all_tests()); /* change a suite cleanup function */
CU_set_suite_cleanupfunc(pSuite1, NULL);
TEST(CU_TRUE == f_exit_called);
test_results(1,1,0,5,2,0,5,3,2,3);
f_exit_called = CU_FALSE;
CU_set_test_func(pTest1, &test_fail);
CU_set_test_func(pTest3, &test_fail);
CU_set_test_func(pTest5, &test_fail);
CU_set_test_func(pTest9, &test_fail);
CU_set_test_func(pTest10, &test_fail);
TEST(CUE_SINIT_FAILED == CU_run_all_tests()); /* change a test function */
CU_set_test_func(pTest1, &test_succeed);
CU_set_test_func(pTest3, &test_succeed);
CU_set_test_func(pTest5, &test_succeed);
CU_set_test_func(pTest9, &test_succeed);
CU_set_test_func(pTest10, &test_succeed);
TEST(CU_TRUE == f_exit_called);
test_results(1,1,0,5,5,0,5,0,5,6);
/* clean up after testing */
CU_set_error_action(CUEA_IGNORE);
CU_cleanup_registry();
}
/*-------------------------------------------------*/
static void test_CU_run_suite(void)
{
CU_pSuite pSuite1 = NULL;
CU_pSuite pSuite2 = NULL;
CU_pSuite pSuite3 = NULL;
CU_pSuite pSuite4 = NULL;
CU_pSuite pSuite5 = NULL;
CU_pSuite pSuite6 = NULL;
CU_pTest pTest1 = NULL;
CU_pTest pTest2 = NULL;
CU_pTest pTest3 = NULL;
CU_pTest pTest4 = NULL;
CU_pTest pTest5 = NULL;
CU_pTest pTest6 = NULL;
CU_pTest pTest7 = NULL;
CU_pTest pTest8 = NULL;
CU_pTest pTest9 = NULL;
CU_pTest pTest10 = NULL;
CU_pTest pTest11 = NULL;
/* error - NULL suite (CUEA_IGNORE) */
CU_set_error_action(CUEA_IGNORE);
TEST(CUE_NOSUITE == CU_run_suite(NULL));
TEST(CUE_NOSUITE == CU_get_error());
/* error - NULL suite (CUEA_FAIL) */
CU_set_error_action(CUEA_FAIL);
TEST(CUE_NOSUITE == CU_run_suite(NULL));
TEST(CUE_NOSUITE == CU_get_error());
/* error - NULL suite (CUEA_ABORT) */
CU_set_error_action(CUEA_ABORT);
f_exit_called = CU_FALSE;
CU_run_suite(NULL);
TEST(CU_TRUE == f_exit_called);
f_exit_called = CU_FALSE;
/* register some suites and tests */
CU_initialize_registry();
pSuite1 = CU_add_suite("suite1", NULL, NULL);
pTest1 = CU_add_test(pSuite1, "test1", test_succeed);
pTest2 = CU_add_test(pSuite1, "test2", test_fail);
pTest3 = CU_add_test(pSuite1, "test3", test_succeed);
pTest4 = CU_add_test(pSuite1, "test4", test_fail);
pTest5 = CU_add_test(pSuite1, "test5", test_succeed);
pSuite2 = CU_add_suite("suite1", suite_fail, NULL); /* duplicate suite name OK */
pTest6 = CU_add_test(pSuite2, "test6", test_succeed);
pTest7 = CU_add_test(pSuite2, "test7", test_succeed);
pSuite3 = CU_add_suite("suite3", NULL, suite_fail);
pTest8 = CU_add_test(pSuite3, "test8", test_fail);
pTest9 = CU_add_test(pSuite3, "test8", test_succeed); /* duplicate test name OK */
pSuite4 = CU_add_suite("suite4", NULL, NULL);
pSuite5 = CU_add_suite_with_setup_and_teardown("suite5", NULL, NULL, suite_setup, suite_teardown);
pTest10 = CU_add_test(pSuite5, "test10", test_succeed_if_setup);
pSuite6 = CU_add_suite("suite6", NULL, NULL);
pTest11 = CU_add_test(pSuite6, "test11", test_fail_if_not_setup);
TEST_FATAL(6 == CU_get_registry()->uiNumberOfSuites);
TEST_FATAL(11 == CU_get_registry()->uiNumberOfTests);
/* run each suite (CUEA_IGNORE) */
CU_set_error_action(CUEA_IGNORE);
TEST(CUE_SUCCESS == CU_run_suite(pSuite1)); /* suites/tests active */
test_results(1,0,0,5,2,0,5,3,2,2);
TEST(CUE_SINIT_FAILED == CU_run_suite(pSuite2));
test_results(0,1,0,0,0,0,0,0,0,1);
TEST(CUE_SCLEAN_FAILED == CU_run_suite(pSuite3));
test_results(1,1,0,2,1,0,2,1,1,2);
TEST(CUE_SUCCESS == CU_run_suite(pSuite4));
test_results(1,0,0,0,0,0,0,0,0,0);
TEST(CUE_SUCCESS == CU_run_suite(pSuite5));
test_results(1,0,0,1,0,0,1,1,0,0);
TEST(CUE_SUCCESS == CU_run_suite(pSuite6));
test_results(1,0,0,1,1,0,1,0,1,1);
CU_set_suite_active(pSuite3, CU_FALSE);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SUCCESS == CU_run_suite(pSuite3)); /* suite inactive */
test_results(0,0,1,0,0,0,0,0,0,0);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_SUITE_INACTIVE == CU_run_suite(pSuite3));
test_results(0,0,1,0,0,0,0,0,0,1);
CU_set_suite_active(pSuite3, CU_TRUE);
CU_set_test_active(pTest1, CU_FALSE);
CU_set_test_active(pTest2, CU_FALSE);
CU_set_test_active(pTest3, CU_FALSE);
CU_set_test_active(pTest4, CU_FALSE);
CU_set_test_active(pTest5, CU_FALSE);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SUCCESS == CU_run_suite(pSuite1)); /* all tests inactive */
test_results(1,0,0,0,0,5,0,0,0,0);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_TEST_INACTIVE == CU_run_suite(pSuite1));
test_results(1,0,0,0,0,5,0,0,0,5);
CU_set_test_active(pTest1, CU_TRUE);
CU_set_test_active(pTest2, CU_FALSE);
CU_set_test_active(pTest3, CU_TRUE);
CU_set_test_active(pTest4, CU_FALSE);
CU_set_test_active(pTest5, CU_TRUE);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SUCCESS == CU_run_suite(pSuite1)); /* some tests inactive */
test_results(1,0,0,3,0,2,3,3,0,0);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_TEST_INACTIVE == CU_run_suite(pSuite1));
test_results(1,0,0,3,0,2,3,3,0,2);
CU_set_test_active(pTest2, CU_TRUE);
CU_set_test_active(pTest4, CU_TRUE);
CU_set_suite_initfunc(pSuite1, &suite_fail);
TEST(CUE_SINIT_FAILED == CU_run_suite(pSuite1)); /* change a suite init function */
CU_set_suite_initfunc(pSuite1, NULL);
test_results(0,1,0,0,0,0,0,0,0,1);
CU_set_suite_cleanupfunc(pSuite1, &suite_fail);
TEST(CUE_SCLEAN_FAILED == CU_run_suite(pSuite1)); /* change a suite cleanup function */
CU_set_suite_cleanupfunc(pSuite1, NULL);
test_results(1,1,0,5,2,0,5,3,2,3);
CU_set_test_func(pTest1, &test_fail);
CU_set_test_func(pTest3, &test_fail);
CU_set_test_func(pTest5, &test_fail);
TEST(CUE_SUCCESS == CU_run_suite(pSuite1)); /* change a test function */
CU_set_test_func(pTest1, &test_succeed);
CU_set_test_func(pTest3, &test_succeed);
CU_set_test_func(pTest5, &test_succeed);
test_results(1,0,0,5,5,0,5,0,5,5);
/* run each suite (CUEA_FAIL) */
CU_set_error_action(CUEA_FAIL);
TEST(CUE_SUCCESS == CU_run_suite(pSuite1)); /* suite active */
test_results(1,0,0,5,2,0,5,3,2,2);
TEST(CUE_SINIT_FAILED == CU_run_suite(pSuite2));
test_results(0,1,0,0,0,0,0,0,0,1);
TEST(CUE_SCLEAN_FAILED == CU_run_suite(pSuite3));
test_results(1,1,0,2,1,0,2,1,1,2);
TEST(CUE_SUCCESS == CU_run_suite(pSuite4));
test_results(1,0,0,0,0,0,0,0,0,0);
CU_set_suite_active(pSuite1, CU_FALSE);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SUCCESS == CU_run_suite(pSuite1)); /* suite inactive */
test_results(0,0,1,0,0,0,0,0,0,0);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_SUITE_INACTIVE == CU_run_suite(pSuite1));
test_results(0,0,1,0,0,0,0,0,0,1);
CU_set_suite_active(pSuite1, CU_TRUE);
CU_set_test_active(pTest8, CU_FALSE);
CU_set_test_active(pTest9, CU_FALSE);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SCLEAN_FAILED == CU_run_suite(pSuite3)); /* all tests inactive */
test_results(1,1,0,0,0,2,0,0,0,1);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_TEST_INACTIVE == CU_run_suite(pSuite3));
test_results(1,1,0,0,0,1,0,0,0,2);
CU_set_test_active(pTest8, CU_TRUE);
CU_set_test_active(pTest9, CU_FALSE);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SCLEAN_FAILED == CU_run_suite(pSuite3)); /* some tests inactive */
test_results(1,1,0,1,1,1,1,0,1,2);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_TEST_INACTIVE == CU_run_suite(pSuite3));
test_results(1,1,0,1,1,1,1,0,1,3);
CU_set_test_active(pTest9, CU_TRUE);
CU_set_suite_initfunc(pSuite2, NULL);
TEST(CUE_SUCCESS == CU_run_suite(pSuite2)); /* change a suite init function */
CU_set_suite_initfunc(pSuite2, &suite_fail);
test_results(1,0,0,2,0,0,2,2,0,0);
CU_set_suite_cleanupfunc(pSuite1, &suite_fail);
TEST(CUE_SCLEAN_FAILED == CU_run_suite(pSuite1)); /* change a suite cleanup function */
CU_set_suite_cleanupfunc(pSuite1, NULL);
test_results(1,1,0,5,2,0,5,3,2,3);
CU_set_test_func(pTest2, &test_succeed);
CU_set_test_func(pTest4, &test_succeed);
TEST(CUE_SUCCESS == CU_run_suite(pSuite1)); /* change a test function */
CU_set_test_func(pTest2, &test_fail);
CU_set_test_func(pTest4, &test_fail);
test_results(1,0,0,5,0,0,5,5,0,0);
/* run each suite (CUEA_ABORT) */
CU_set_error_action(CUEA_ABORT);
f_exit_called = CU_FALSE;
TEST(CUE_SUCCESS == CU_run_suite(pSuite1)); /* suite active */
TEST(CU_FALSE == f_exit_called);
test_results(1,0,0,5,2,0,5,3,2,2);
f_exit_called = CU_FALSE;
TEST(CUE_SINIT_FAILED == CU_run_suite(pSuite2));
TEST(CU_TRUE == f_exit_called);
f_exit_called = CU_FALSE;
test_results(0,1,0,0,0,0,0,0,0,1);
f_exit_called = CU_FALSE;
TEST(CUE_SCLEAN_FAILED == CU_run_suite(pSuite3));
TEST(CU_TRUE == f_exit_called);
test_results(1,1,0,2,1,0,2,1,1,2);
f_exit_called = CU_FALSE;
TEST(CUE_SUCCESS == CU_run_suite(pSuite4));
TEST(CU_FALSE == f_exit_called);
test_results(1,0,0,0,0,0,0,0,0,0);
CU_set_suite_active(pSuite2, CU_FALSE);
f_exit_called = CU_FALSE;
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SUCCESS == CU_run_suite(pSuite2)); /* suite inactive, but not a failure */
TEST(CU_FALSE == f_exit_called);
test_results(0,0,1,0,0,0,0,0,0,0);
f_exit_called = CU_FALSE;
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_SUITE_INACTIVE == CU_run_suite(pSuite2));
TEST(CU_TRUE == f_exit_called);
test_results(0,0,1,0,0,0,0,0,0,1);
CU_set_suite_active(pSuite2, CU_TRUE);
CU_set_test_active(pTest8, CU_FALSE);
CU_set_test_active(pTest9, CU_FALSE);
f_exit_called = CU_FALSE;
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SCLEAN_FAILED == CU_run_suite(pSuite3)); /* all tests inactive */
TEST(CU_TRUE == f_exit_called);
test_results(1,1,0,0,0,2,0,0,0,1);
f_exit_called = CU_FALSE;
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_TEST_INACTIVE == CU_run_suite(pSuite3));
TEST(CU_TRUE == f_exit_called);
test_results(1,1,0,0,0,1,0,0,0,2);
CU_set_test_active(pTest8, CU_FALSE);
CU_set_test_active(pTest9, CU_TRUE);
f_exit_called = CU_FALSE;
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SCLEAN_FAILED == CU_run_suite(pSuite3)); /* some tests inactive */
TEST(CU_TRUE == f_exit_called);
test_results(1,1,0,1,0,1,1,1,0,1);
f_exit_called = CU_FALSE;
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_TEST_INACTIVE == CU_run_suite(pSuite3));
TEST(CU_TRUE == f_exit_called);
test_results(1,1,0,0,0,1,0,0,0,2);
CU_set_test_active(pTest8, CU_TRUE);
f_exit_called = CU_FALSE;
CU_set_suite_initfunc(pSuite1, &suite_fail);
TEST(CUE_SINIT_FAILED == CU_run_suite(pSuite1)); /* change a suite init function */
CU_set_suite_initfunc(pSuite1, NULL);
TEST(CU_TRUE == f_exit_called);
test_results(0,1,0,0,0,0,0,0,0,1);
f_exit_called = CU_FALSE;
CU_set_suite_cleanupfunc(pSuite1, &suite_fail);
TEST(CUE_SCLEAN_FAILED == CU_run_suite(pSuite1)); /* change a suite cleanup function */
CU_set_suite_cleanupfunc(pSuite1, NULL);
TEST(CU_TRUE == f_exit_called);
test_results(1,1,0,5,2,0,5,3,2,3);
f_exit_called = CU_FALSE;
CU_set_test_func(pTest8, &test_succeed);
CU_set_test_func(pTest9, &test_fail);
TEST(CUE_SCLEAN_FAILED == CU_run_suite(pSuite3)); /* change a test function */
CU_set_test_func(pTest8, &test_fail);
CU_set_test_func(pTest9, &test_succeed);
TEST(CU_TRUE == f_exit_called);
test_results(1,1,0,2,1,0,2,1,1,2);
/* clean up after testing */
CU_set_error_action(CUEA_IGNORE);
CU_cleanup_registry();
}
/*-------------------------------------------------*/
static void test_CU_run_test(void)
{
CU_pSuite pSuite1 = NULL;
CU_pSuite pSuite2 = NULL;
CU_pSuite pSuite3 = NULL;
CU_pTest pTest1 = NULL;
CU_pTest pTest2 = NULL;
CU_pTest pTest3 = NULL;
CU_pTest pTest4 = NULL;
CU_pTest pTest5 = NULL;
CU_pTest pTest6 = NULL;
CU_pTest pTest7 = NULL;
CU_pTest pTest8 = NULL;
CU_pTest pTest9 = NULL;
/* register some suites and tests */
CU_initialize_registry();
pSuite1 = CU_add_suite("suite1", NULL, NULL);
pTest1 = CU_add_test(pSuite1, "test1", test_succeed);
pTest2 = CU_add_test(pSuite1, "test2", test_fail);
pTest3 = CU_add_test(pSuite1, "test3", test_succeed);
pTest4 = CU_add_test(pSuite1, "test4", test_fail);
pTest5 = CU_add_test(pSuite1, "test5", test_succeed);
pSuite2 = CU_add_suite("suite2", suite_fail, NULL);
pTest6 = CU_add_test(pSuite2, "test6", test_succeed);
pTest7 = CU_add_test(pSuite2, "test7", test_succeed);
pSuite3 = CU_add_suite("suite2", NULL, suite_fail); /* duplicate suite name OK */
pTest8 = CU_add_test(pSuite3, "test8", test_fail);
pTest9 = CU_add_test(pSuite3, "test8", test_succeed); /* duplicate test name OK */
TEST_FATAL(3 == CU_get_registry()->uiNumberOfSuites);
TEST_FATAL(9 == CU_get_registry()->uiNumberOfTests);
/* error - NULL suite (CUEA_IGNORE) */
CU_set_error_action(CUEA_IGNORE);
TEST(CUE_NOSUITE == CU_run_test(NULL, pTest1));
TEST(CUE_NOSUITE == CU_get_error());
/* error - NULL suite (CUEA_FAIL) */
CU_set_error_action(CUEA_FAIL);
TEST(CUE_NOSUITE == CU_run_test(NULL, pTest1));
TEST(CUE_NOSUITE == CU_get_error());
/* error - NULL test (CUEA_ABORT) */
CU_set_error_action(CUEA_ABORT);
f_exit_called = CU_FALSE;
CU_run_test(NULL, pTest1);
TEST(CU_TRUE == f_exit_called);
f_exit_called = CU_FALSE;
/* error - NULL test (CUEA_IGNORE) */
CU_set_error_action(CUEA_IGNORE);
TEST(CUE_NOTEST == CU_run_test(pSuite1, NULL));
TEST(CUE_NOTEST == CU_get_error());
/* error - NULL test (CUEA_FAIL) */
CU_set_error_action(CUEA_FAIL);
TEST(CUE_NOTEST == CU_run_test(pSuite1, NULL));
TEST(CUE_NOTEST == CU_get_error());
/* error - NULL test (CUEA_ABORT) */
CU_set_error_action(CUEA_ABORT);
f_exit_called = CU_FALSE;
CU_run_test(pSuite1, NULL);
TEST(CU_TRUE == f_exit_called);
f_exit_called = CU_FALSE;
/* error - test not in suite (CUEA_IGNORE) */
CU_set_error_action(CUEA_IGNORE);
TEST(CUE_TEST_NOT_IN_SUITE == CU_run_test(pSuite3, pTest1));
TEST(CUE_TEST_NOT_IN_SUITE == CU_get_error());
/* error - NULL test (CUEA_FAIL) */
CU_set_error_action(CUEA_FAIL);
TEST(CUE_TEST_NOT_IN_SUITE == CU_run_test(pSuite3, pTest1));
TEST(CUE_TEST_NOT_IN_SUITE == CU_get_error());
/* error - NULL test (CUEA_ABORT) */
CU_set_error_action(CUEA_ABORT);
f_exit_called = CU_FALSE;
CU_run_test(pSuite3, pTest1);
TEST(CU_TRUE == f_exit_called);
f_exit_called = CU_FALSE;
/* run each test (CUEA_IGNORE) */
CU_set_error_action(CUEA_IGNORE);
TEST(CUE_SUCCESS == CU_run_test(pSuite1, pTest1)); /* all suite/tests active */
test_results(0,0,0,1,0,0,1,1,0,0);
TEST(CUE_SUCCESS == CU_run_test(pSuite1, pTest2));
test_results(0,0,0,1,1,0,1,0,1,1);
TEST(CUE_SUCCESS == CU_run_test(pSuite1, pTest3));
test_results(0,0,0,1,0,0,1,1,0,0);
TEST(CUE_SUCCESS == CU_run_test(pSuite1, pTest4));
test_results(0,0,0,1,1,0,1,0,1,1);
TEST(CUE_SUCCESS == CU_run_test(pSuite1, pTest5));
test_results(0,0,0,1,0,0,1,1,0,0);
TEST(CUE_SINIT_FAILED == CU_run_test(pSuite2, pTest6));
test_results(0,1,0,0,0,0,0,0,0,1);
TEST(CUE_SINIT_FAILED == CU_run_test(pSuite2, pTest7));
test_results(0,1,0,0,0,0,0,0,0,1);
TEST(CUE_SCLEAN_FAILED == CU_run_test(pSuite3, pTest8));
test_results(0,1,0,1,1,0,1,0,1,2);
TEST(CUE_SCLEAN_FAILED == CU_run_test(pSuite3, pTest9));
test_results(0,1,0,1,0,0,1,1,0,1);
CU_set_suite_active(pSuite1, CU_FALSE);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SUITE_INACTIVE == CU_run_test(pSuite1, pTest1)); /* suite inactive */
test_results(0,0,1,0,0,0,0,0,0,0);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_SUITE_INACTIVE == CU_run_test(pSuite1, pTest1));
test_results(0,0,1,0,0,0,0,0,0,1);
CU_set_suite_active(pSuite1, CU_TRUE);
CU_set_test_active(pTest1, CU_FALSE);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_TEST_INACTIVE == CU_run_test(pSuite1, pTest1)); /* test inactive */
test_results(0,0,0,0,0,1,0,0,0,0);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_TEST_INACTIVE == CU_run_test(pSuite1, pTest1));
test_results(0,0,0,0,1,1,0,0,0,1);
CU_set_test_active(pTest1, CU_TRUE);
CU_set_suite_initfunc(pSuite1, &suite_fail);
TEST(CUE_SINIT_FAILED == CU_run_test(pSuite1, pTest1)); /* change a suite init function */
CU_set_suite_initfunc(pSuite1, NULL);
test_results(0,1,0,0,0,0,0,0,0,1);
CU_set_suite_cleanupfunc(pSuite1, &suite_fail);
TEST(CUE_SCLEAN_FAILED == CU_run_test(pSuite1, pTest1)); /* change a suite cleanup function */
CU_set_suite_cleanupfunc(pSuite1, NULL);
test_results(0,1,0,1,0,0,1,1,0,1);
CU_set_test_func(pTest8, &test_succeed);
TEST(CUE_SCLEAN_FAILED == CU_run_test(pSuite3, pTest8)); /* change a test function */
CU_set_test_func(pTest8, &test_fail);
test_results(0,1,0,1,0,0,1,1,0,1);
/* run each test (CUEA_FAIL) */
CU_set_error_action(CUEA_FAIL);
TEST(CUE_SUCCESS == CU_run_test(pSuite1, pTest1)); /* suite/test active */
test_results(0,0,0,1,0,0,1,1,0,0);
TEST(CUE_SUCCESS == CU_run_test(pSuite1, pTest2));
test_results(0,0,0,1,1,0,1,0,1,1);
TEST(CUE_SUCCESS == CU_run_test(pSuite1, pTest3));
test_results(0,0,0,1,0,0,1,1,0,0);
TEST(CUE_SUCCESS == CU_run_test(pSuite1, pTest4));
test_results(0,0,0,1,1,0,1,0,1,1);
TEST(CUE_SUCCESS == CU_run_test(pSuite1, pTest5));
test_results(0,0,0,1,0,0,1,1,0,0);
TEST(CUE_SINIT_FAILED == CU_run_test(pSuite2, pTest6));
test_results(0,1,0,0,0,0,0,0,0,1);
TEST(CUE_SINIT_FAILED == CU_run_test(pSuite2, pTest7));
test_results(0,1,0,0,0,0,0,0,0,1);
TEST(CUE_SCLEAN_FAILED == CU_run_test(pSuite3, pTest8));
test_results(0,1,0,1,1,0,1,0,1,2);
TEST(CUE_SCLEAN_FAILED == CU_run_test(pSuite3, pTest9));
test_results(0,1,0,1,0,0,1,1,0,1);
CU_set_suite_active(pSuite2, CU_FALSE);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SUITE_INACTIVE == CU_run_test(pSuite2, pTest7)); /* suite inactive */
test_results(0,0,1,0,0,0,0,0,0,0);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_SUITE_INACTIVE == CU_run_test(pSuite2, pTest7));
test_results(0,0,1,0,0,0,0,0,0,1);
CU_set_suite_active(pSuite2, CU_TRUE);
CU_set_test_active(pTest7, CU_FALSE);
CU_set_fail_on_inactive(CU_FALSE);
TEST(CUE_SINIT_FAILED == CU_run_test(pSuite2, pTest7)); /* test inactive */
test_results(0,1,0,0,0,0,0,0,0,1);
CU_set_fail_on_inactive(CU_TRUE);
TEST(CUE_SINIT_FAILED == CU_run_test(pSuite2, pTest7));
test_results(0,1,0,0,0,0,0,0,0,1);
CU_set_test_active(pTest7, CU_TRUE);
CU_set_suite_initfunc(pSuite2, NULL);
TEST(CUE_SUCCESS == CU_run_test(pSuite2, pTest6)); /* change a suite init function */
CU_set_suite_initfunc(pSuite2, &suite_fail);
test_results(0,0,0,1,0,0,1,1,0,0);
CU_set_suite_cleanupfunc(pSuite3, NULL);
TEST(CUE_SUCCESS == CU_run_test(pSuite3, pTest8)); /* change a suite cleanup function */
CU_set_suite_cleanupfunc(pSuite3, &suite_fail);
test_results(0,0,0,1,1,0,1,0,1,1);
CU_set_test_func(pTest8, &test_succeed);
TEST(CUE_SCLEAN_FAILED == CU_run_test(pSuite3, pTest8)); /* change a test function */
CU_set_test_func(pTest8, &test_fail);
test_results(0,1,0,1,0,0,1,1,0,1);
/* run each test (CUEA_ABORT) */
CU_set_error_action(CUEA_ABORT);
f_exit_called = CU_FALSE;
TEST(CUE_SUCCESS == CU_run_test(pSuite1, pTest1));
TEST(CU_FALSE == f_exit_called);
test_results(0,0,0,1,0,0,1,1,0,0);
f_exit_called = CU_FALSE;
TEST(CUE_SUCCESS == CU_run_test(pSuite1, pTest2));
TEST(CU_FALSE == f_exit_called);
test_results(0,0,0,1,1,0,1,0,1,1);
f_exit_called = CU_FALSE;
TEST(CUE_SUCCESS == CU_run_test(pSuite1, pTest3));
TEST(CU_FALSE == f_exit_called);
test_results(0,0,0,1,0,0,1,1,0,0);
f_exit_called = CU_FALSE;
TEST(CUE_SUCCESS == CU_run_test(pSuite1, pTest4));
TEST(CU_FALSE == f_exit_called);
test_results(0,0,0,1,1,0,1,0,1,1);
f_exit_called = CU_FALSE;
TEST(CUE_SUCCESS == CU_run_test(pSuite1, pTest5));
TEST(CU_FALSE == f_exit_called);
test_results(0,0,0,1,0,0,1,1,0,0);
f_exit_called = CU_FALSE;
TEST(CUE_SINIT_FAILED == CU_run_test(pSuite2, pTest6));
TEST(CU_TRUE == f_exit_called);
test_results(0,1,0,0,0,0,0,0,0,1);
f_exit_called = CU_FALSE;
TEST(CUE_SINIT_FAILED == CU_run_test(pSuite2, pTest7));
TEST(CU_TRUE == f_exit_called);
test_results(0,1,0,0,0,0,0,0,0,1);
f_exit_called = CU_FALSE;
TEST(CUE_SCLEAN_FAILED == CU_run_test(pSuite3, pTest8));
TEST(CU_TRUE == f_exit_called);
test_results(0,1,0,1,1,0,1,0,1,2);
f_exit_called = CU_FALSE;
TEST(CUE_SCLEAN_FAILED == CU_run_test(pSuite3, pTest9));
TEST(CU_TRUE == f_exit_called);
test_results(0,1,0,1,0,0,1,1,0,1);
CU_set_suite_active(pSuite2, CU_FALSE);
CU_set_fail_on_inactive(CU_FALSE);
f_exit_called = CU_FALSE;
TEST(CUE_SUITE_INACTIVE == CU_run_test(pSuite2, pTest6)); /* suite inactive */
TEST(CU_TRUE == f_exit_called);
test_results(0,0,1,0,0,0,0,0,0,0);
CU_set_fail_on_inactive(CU_TRUE);
f_exit_called = CU_FALSE;
TEST(CUE_SUITE_INACTIVE == CU_run_test(pSuite2, pTest6));
TEST(CU_TRUE == f_exit_called);
test_results(0,0,1,0,0,0,0,0,0,1);
CU_set_suite_active(pSuite2, CU_TRUE);
CU_set_test_active(pTest6, CU_FALSE);
CU_set_fail_on_inactive(CU_FALSE);
f_exit_called = CU_FALSE;
TEST(CUE_SINIT_FAILED == CU_run_test(pSuite2, pTest6)); /* test inactive */
TEST(CU_TRUE == f_exit_called);
test_results(0,1,0,0,0,0,0,0,0,1);
CU_set_fail_on_inactive(CU_TRUE);
f_exit_called = CU_FALSE;
TEST(CUE_SINIT_FAILED == CU_run_test(pSuite2, pTest6));
TEST(CU_TRUE == f_exit_called);
test_results(0,1,0,0,0,0,0,0,0,1);
CU_set_test_active(pTest6, CU_TRUE);
f_exit_called = CU_FALSE;
CU_set_suite_initfunc(pSuite2, NULL);
TEST(CUE_SUCCESS == CU_run_test(pSuite2, pTest6)); /* change a suite init function */
CU_set_suite_initfunc(pSuite2, &suite_fail);
TEST(CU_FALSE == f_exit_called);
test_results(0,0,0,1,0,0,1,1,0,0);
f_exit_called = CU_FALSE;
CU_set_suite_cleanupfunc(pSuite1, &suite_fail);
TEST(CUE_SCLEAN_FAILED == CU_run_test(pSuite1, pTest1)); /* change a suite cleanup function */
CU_set_suite_cleanupfunc(pSuite1, NULL);
TEST(CU_TRUE == f_exit_called);
test_results(0,1,0,1,0,0,1,1,0,1);
f_exit_called = CU_FALSE;
CU_set_test_func(pTest8, &test_succeed);
TEST(CUE_SCLEAN_FAILED == CU_run_test(pSuite3, pTest8)); /* change a test function */
CU_set_test_func(pTest8, &test_fail);
TEST(CU_TRUE == f_exit_called);
test_results(0,1,0,1,0,0,1,1,0,1);
/* clean up after testing */
CU_set_error_action(CUEA_IGNORE);
CU_cleanup_registry();
}
/*-------------------------------------------------*/
/* tests CU_assertImplementation()
* CU_get_failure_list()
* CU_clear_previous_results()
*/
static void test_CU_assertImplementation(void)
{
CU_Test dummy_test;
CU_Suite dummy_suite;
CU_pFailureRecord pFailure1 = NULL;
CU_pFailureRecord pFailure2 = NULL;
CU_pFailureRecord pFailure3 = NULL;
CU_pFailureRecord pFailure4 = NULL;
CU_pFailureRecord pFailure5 = NULL;
CU_pFailureRecord pFailure6 = NULL;
CU_clear_previous_results();
TEST(NULL == CU_get_failure_list());
TEST(0 == CU_get_number_of_asserts());
TEST(0 == CU_get_number_of_failures());
TEST(0 == CU_get_number_of_failure_records());
/* fool CU_assertImplementation into thinking test run is in progress */
f_pCurTest = &dummy_test;
f_pCurSuite = &dummy_suite;
/* asserted value is CU_TRUE*/
TEST(CU_TRUE == CU_assertImplementation(CU_TRUE, 100, "Nothing happened 0.", "dummy0.c", "dummy_func0", CU_FALSE));
TEST(NULL == CU_get_failure_list());
TEST(1 == CU_get_number_of_asserts());
TEST(0 == CU_get_number_of_failures());
TEST(0 == CU_get_number_of_failure_records());
TEST(CU_TRUE == CU_assertImplementation(CU_TRUE, 101, "Nothing happened 1.", "dummy1.c", "dummy_func1", CU_FALSE));
TEST(NULL == CU_get_failure_list());
TEST(2 == CU_get_number_of_asserts());
TEST(0 == CU_get_number_of_failures());
TEST(0 == CU_get_number_of_failure_records());
/* asserted value is CU_FALSE */
TEST(CU_FALSE == CU_assertImplementation(CU_FALSE, 102, "Something happened 2.", "dummy2.c", "dummy_func2", CU_FALSE));
TEST(NULL != CU_get_failure_list());
TEST(3 == CU_get_number_of_asserts());
TEST(1 == CU_get_number_of_failures());
TEST(1 == CU_get_number_of_failure_records());
TEST(CU_FALSE == CU_assertImplementation(CU_FALSE, 103, "Something happened 3.", "dummy3.c", "dummy_func3", CU_FALSE));
TEST(NULL != CU_get_failure_list());
TEST(4 == CU_get_number_of_asserts());
TEST(2 == CU_get_number_of_failures());
TEST(2 == CU_get_number_of_failure_records());
TEST(CU_FALSE == CU_assertImplementation(CU_FALSE, 104, "Something happened 4.", "dummy4.c", "dummy_func4", CU_FALSE));
TEST(NULL != CU_get_failure_list());
TEST(5 == CU_get_number_of_asserts());
TEST(3 == CU_get_number_of_failures());
TEST(3 == CU_get_number_of_failure_records());
if (3 == CU_get_number_of_failure_records()) {
pFailure1 = CU_get_failure_list();
TEST(102 == pFailure1->uiLineNumber);
TEST(!strcmp("dummy2.c", pFailure1->strFileName));
TEST(!strcmp("Something happened 2.", pFailure1->strCondition));
TEST(&dummy_test == pFailure1->pTest);
TEST(&dummy_suite == pFailure1->pSuite);
TEST(NULL != pFailure1->pNext);
TEST(NULL == pFailure1->pPrev);
pFailure2 = pFailure1->pNext;
TEST(103 == pFailure2->uiLineNumber);
TEST(!strcmp("dummy3.c", pFailure2->strFileName));
TEST(!strcmp("Something happened 3.", pFailure2->strCondition));
TEST(&dummy_test == pFailure2->pTest);
TEST(&dummy_suite == pFailure2->pSuite);
TEST(NULL != pFailure2->pNext);
TEST(pFailure1 == pFailure2->pPrev);
pFailure3 = pFailure2->pNext;
TEST(104 == pFailure3->uiLineNumber);
TEST(!strcmp("dummy4.c", pFailure3->strFileName));
TEST(!strcmp("Something happened 4.", pFailure3->strCondition));
TEST(&dummy_test == pFailure3->pTest);
TEST(&dummy_suite == pFailure3->pSuite);
TEST(NULL == pFailure3->pNext);
TEST(pFailure2 == pFailure3->pPrev);
}
else
FAIL("Unexpected number of failure records.");
/* confirm destruction of failure records */
pFailure4 = pFailure1;
pFailure5 = pFailure2;
pFailure6 = pFailure3;
TEST(0 != test_cunit_get_n_memevents(pFailure4));
TEST(test_cunit_get_n_allocations(pFailure4) != test_cunit_get_n_deallocations(pFailure4));
TEST(0 != test_cunit_get_n_memevents(pFailure5));
TEST(test_cunit_get_n_allocations(pFailure5) != test_cunit_get_n_deallocations(pFailure5));
TEST(0 != test_cunit_get_n_memevents(pFailure6));
TEST(test_cunit_get_n_allocations(pFailure6) != test_cunit_get_n_deallocations(pFailure6));
CU_clear_previous_results();
TEST(0 != test_cunit_get_n_memevents(pFailure4));
TEST(test_cunit_get_n_allocations(pFailure4) == test_cunit_get_n_deallocations(pFailure4));
TEST(0 != test_cunit_get_n_memevents(pFailure5));
TEST(test_cunit_get_n_allocations(pFailure5) == test_cunit_get_n_deallocations(pFailure5));
TEST(0 != test_cunit_get_n_memevents(pFailure6));
TEST(test_cunit_get_n_allocations(pFailure6) == test_cunit_get_n_deallocations(pFailure6));
TEST(0 == CU_get_number_of_asserts());
TEST(0 == CU_get_number_of_successes());
TEST(0 == CU_get_number_of_failures());
TEST(0 == CU_get_number_of_failure_records());
f_pCurTest = NULL;
f_pCurSuite = NULL;
}
/*-------------------------------------------------*/
static void test_add_failure(void)
{
CU_Test test1;
CU_Suite suite1;
CU_pFailureRecord pFailure1 = NULL;
CU_pFailureRecord pFailure2 = NULL;
CU_pFailureRecord pFailure3 = NULL;
CU_pFailureRecord pFailure4 = NULL;
CU_RunSummary run_summary = {"", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
/* test under memory exhaustion */
test_cunit_deactivate_malloc();
add_failure(&pFailure1, &run_summary, CUF_AssertFailed, 100, "condition 0", "file0.c", &suite1, &test1);
TEST(NULL == pFailure1);
TEST(0 == run_summary.nFailureRecords);
test_cunit_activate_malloc();
/* normal operation */
add_failure(&pFailure1, &run_summary, CUF_AssertFailed, 101, "condition 1", "file1.c", &suite1, &test1);
TEST(1 == run_summary.nFailureRecords);
if (TEST(NULL != pFailure1)) {
TEST(101 == pFailure1->uiLineNumber);
TEST(!strcmp("condition 1", pFailure1->strCondition));
TEST(!strcmp("file1.c", pFailure1->strFileName));
TEST(&test1 == pFailure1->pTest);
TEST(&suite1 == pFailure1->pSuite);
TEST(NULL == pFailure1->pNext);
TEST(NULL == pFailure1->pPrev);
TEST(pFailure1 == f_last_failure);
TEST(0 != test_cunit_get_n_memevents(pFailure1));
TEST(test_cunit_get_n_allocations(pFailure1) != test_cunit_get_n_deallocations(pFailure1));
}
add_failure(&pFailure1, &run_summary, CUF_AssertFailed, 102, "condition 2", "file2.c", NULL, &test1);
TEST(2 == run_summary.nFailureRecords);
if (TEST(NULL != pFailure1)) {
TEST(101 == pFailure1->uiLineNumber);
TEST(!strcmp("condition 1", pFailure1->strCondition));
TEST(!strcmp("file1.c", pFailure1->strFileName));
TEST(&test1 == pFailure1->pTest);
TEST(&suite1 == pFailure1->pSuite);
TEST(NULL != pFailure1->pNext);
TEST(NULL == pFailure1->pPrev);
TEST(pFailure1 != f_last_failure);
TEST(0 != test_cunit_get_n_memevents(pFailure1));
TEST(test_cunit_get_n_allocations(pFailure1) != test_cunit_get_n_deallocations(pFailure1));
if (TEST(NULL != (pFailure2 = pFailure1->pNext))) {
TEST(102 == pFailure2->uiLineNumber);
TEST(!strcmp("condition 2", pFailure2->strCondition));
TEST(!strcmp("file2.c", pFailure2->strFileName));
TEST(&test1 == pFailure2->pTest);
TEST(NULL == pFailure2->pSuite);
TEST(NULL == pFailure2->pNext);
TEST(pFailure1 == pFailure2->pPrev);
TEST(pFailure2 == f_last_failure);
TEST(0 != test_cunit_get_n_memevents(pFailure2));
TEST(test_cunit_get_n_allocations(pFailure2) != test_cunit_get_n_deallocations(pFailure2));
}
}
pFailure3 = pFailure1;
pFailure4 = pFailure2;
clear_previous_results(&run_summary, &pFailure1);
TEST(0 == run_summary.nFailureRecords);
TEST(0 != test_cunit_get_n_memevents(pFailure3));
TEST(test_cunit_get_n_allocations(pFailure3) == test_cunit_get_n_deallocations(pFailure3));
TEST(0 != test_cunit_get_n_memevents(pFailure4));
TEST(test_cunit_get_n_allocations(pFailure4) == test_cunit_get_n_deallocations(pFailure4));
}
/*-------------------------------------------------*/
void test_cunit_TestRun(void)
{
test_cunit_start_tests("TestRun.c");
test_message_handlers();
test_CU_fail_on_inactive();
test_CU_run_all_tests();
test_CU_run_suite();
test_CU_run_test();
test_CU_assertImplementation();
test_add_failure();
test_cunit_end_tests();
}
#endif /* CUNIT_BUILD_TESTS */
cunit-2.1-3-dfsg/CUnit/Sources/Framework/Util.c 0000664 0000000 0000000 00000041513 12607012350 0021242 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004-2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Generic (internal) utility functions used across CUnit.
* These were originally distributed across the other CUnit
* source files, but were consolidated here for consistency.
*
* 13/Oct/2001 Initial implementation (AK)
*
* 26/Jul/2003 Added a function to convert a string containing special
* characters into escaped character for XML/HTML usage. (AK)
*
* 16-Jul-2004 New interface, doxygen comments. (JDS)
*
* 17-Apr-2006 Added CU_translated_strlen() and CU_number_width().
* Fixed off-by-1 error in CU_translate_special_characters(),
* modifying implementation & results in some cases. User can
* now tell if conversion failed. (JDS)
*/
/** @file
* Utility functions (implementation).
*/
/** @addtogroup Framework
@{
*/
#include
#include
#include
#include
#include
#include "CUnit.h"
#include "TestDB.h"
#include "Util.h"
/*------------------------------------------------------------------------*/
/**
* Structure containing mappings of special characters to xml entity codes.
* special_char's in the CU_bindings array will be translated during calls
* to CU_translate_special_characters(). Add additional chars/replacements
* or modify existing ones to change the behavior upon translation.
*/
static const struct bindings {
const char special_char; /**< Special character. */
const char *replacement; /**< Entity code for special character. */
} CU_bindings [] = {
{'&', "&"},
{'>', ">"},
{'<', "<"}
};
/*------------------------------------------------------------------------*/
/**
* Checks whether a character is a special xml character.
* This function performs a lookup of the specified character in
* the CU_bindings structure. If it is a special character, its
* index into the CU_bindings array is returned. If not, -1 is returned.
*
* @param ch The character to check
* @return Index into CU_bindings if a special character, -1 otherwise.
*/
static int get_index(const char ch)
{
int length = sizeof(CU_bindings)/sizeof(CU_bindings[0]);
int counter;
for (counter = 0; counter < length && CU_bindings[counter].special_char != ch; ++counter) {
;
}
return (counter < length ? counter : -1);
}
size_t CU_translate_special_characters(const char *szSrc, char *szDest, size_t maxlen)
{
/* old implementation
size_t count = 0;
size_t src = 0;
size_t dest = 0;
size_t length = 0;
int conv_index;
assert(NULL != szSrc);
assert(NULL != szDest);
length = strlen(szSrc);
memset(szDest, 0, maxlen);
while ((dest < maxlen) && (src < length)) {
if ((-1 != (conv_index = get_index(szSrc[src]))) &&
((dest + strlen(CU_bindings[conv_index].replacement)) < maxlen)) {
strcat(szDest, CU_bindings[conv_index].replacement);
dest += strlen(CU_bindings[conv_index].replacement);
++count;
} else {
szDest[dest++] = szSrc[src];
}
++src;
}
return count;
*/
size_t count = 0;
size_t repl_len;
int conv_index;
char *dest_start = szDest;
assert(NULL != szSrc);
assert(NULL != szDest);
/* only process if destination buffer not 0-length */
if (maxlen > 0) {
while ((maxlen > 0) && (*szSrc != '\0')) {
conv_index = get_index(*szSrc);
if (-1 != conv_index) {
if (maxlen > (repl_len = strlen(CU_bindings[conv_index].replacement))) {
memcpy(szDest, CU_bindings[conv_index].replacement, repl_len);
szDest += repl_len;
maxlen -= repl_len;
++count;
} else {
maxlen = 0; /* ran out of room - abort conversion */
break;
}
} else {
*szDest++ = *szSrc;
--maxlen;
}
++szSrc;
}
if (0 == maxlen) {
*dest_start = '\0'; /* ran out of room - return empty string in szDest */
count = 0;
} else {
*szDest = '\0'; /* had room - make sure szDest has a terminating \0 */
}
}
return count;
}
/*------------------------------------------------------------------------*/
size_t CU_translated_strlen(const char* szSrc)
{
size_t count = 0;
int conv_index;
assert(NULL != szSrc);
while (*szSrc != '\0') {
if (-1 != (conv_index = get_index(*szSrc))) {
count += strlen(CU_bindings[conv_index].replacement);
} else {
++count;
}
++szSrc;
}
return count;
}
/*------------------------------------------------------------------------*/
int CU_compare_strings(const char* szSrc, const char* szDest)
{
assert(NULL != szSrc);
assert(NULL != szDest);
while (('\0' != *szSrc) && ('\0' != *szDest) && (toupper(*szSrc) == toupper(*szDest))) {
szSrc++;
szDest++;
}
return (int)(*szSrc - *szDest);
}
/*------------------------------------------------------------------------*/
void CU_trim(char* szString)
{
CU_trim_left(szString);
CU_trim_right(szString);
}
/*------------------------------------------------------------------------*/
void CU_trim_left(char* szString)
{
int nOffset = 0;
char* szSrc = szString;
char* szDest = szString;
assert(NULL != szString);
/* Scan for the spaces in the starting of string. */
for (; '\0' != *szSrc; szSrc++, nOffset++) {
if (!isspace(*szSrc)) {
break;
}
}
for(; (0 != nOffset) && ('\0' != (*szDest = *szSrc)); szSrc++, szDest++) {
;
}
}
/*------------------------------------------------------------------------*/
void CU_trim_right(char* szString)
{
size_t nLength;
char* szSrc = szString;
assert(NULL != szString);
nLength = strlen(szString);
/*
* Scan for specs in the end of string.
*/
for (; (0 != nLength) && isspace(*(szSrc + nLength - 1)); nLength--) {
;
}
*(szSrc + nLength) = '\0';
}
/*------------------------------------------------------------------------*/
size_t CU_number_width(int number)
{
char buf[33];
snprintf(buf, 33, "%d", number);
buf[32] = '\0';
return (strlen(buf));
}
/** @} */
#ifdef CUNIT_BUILD_TESTS
#include "test_cunit.h"
/* Keep BUF_LEN even or trouble ensues below... */
#define BUF_LEN 1000
#define MAX_LEN BUF_LEN/2
static void test_CU_translate_special_characters(void)
{
char dest_buf[BUF_LEN];
char *dest = dest_buf + MAX_LEN;
char ref_buf[BUF_LEN];
const int mask_char = 0x01; /* char written to buffer */
/* set up reference buffer for testing of translated strings */
memset(ref_buf, mask_char, BUF_LEN);
/* empty src */
memset(dest_buf, mask_char, BUF_LEN);
TEST(0 == CU_translate_special_characters("", dest, MAX_LEN));
TEST(!strncmp(dest_buf, ref_buf, MAX_LEN));
TEST(!strncmp(dest, "\0", 1));
TEST(!strncmp((dest+1), ref_buf, MAX_LEN-1));
/* 1 char src */
memset(dest_buf, mask_char, BUF_LEN);
TEST(0 == CU_translate_special_characters("#", dest, 0));
TEST(!strncmp(dest_buf, ref_buf, BUF_LEN));
memset(dest_buf, mask_char, BUF_LEN);
TEST(0 == CU_translate_special_characters("#", dest, 1));
TEST(!strncmp(dest_buf, ref_buf, MAX_LEN));
TEST(!strncmp(dest, "\0", 1));
TEST(!strncmp((dest+1), ref_buf, MAX_LEN-1));
memset(dest_buf, mask_char, BUF_LEN);
TEST(0 == CU_translate_special_characters("&", dest, 2));
TEST(!strncmp(dest_buf, ref_buf, MAX_LEN));
TEST(!strncmp(dest, "\0", 1));
TEST(!strncmp((dest+2), ref_buf, MAX_LEN-2));
memset(dest_buf, mask_char, BUF_LEN);
TEST(0 == CU_translate_special_characters("&", dest, 4));
TEST(!strncmp(dest_buf, ref_buf, MAX_LEN));
TEST(!strncmp(dest_buf, ref_buf, MAX_LEN));
TEST(!strncmp(dest, "\0", 1));
TEST(!strncmp((dest+4), ref_buf, MAX_LEN-4));
memset(dest_buf, mask_char, BUF_LEN);
TEST(0 == CU_translate_special_characters("&", dest, 5));
TEST(!strncmp(dest_buf, ref_buf, MAX_LEN));
TEST(!strncmp(dest, "\0", 1));
TEST(!strncmp((dest+5), ref_buf, MAX_LEN-5));
memset(dest_buf, mask_char, BUF_LEN);
TEST(1 == CU_translate_special_characters("&", dest, 6));
TEST(!strncmp(dest_buf, ref_buf, MAX_LEN));
TEST(!strncmp(dest, "&\0", 6));
TEST(!strncmp((dest+6), ref_buf, MAX_LEN-6));
/* maxlen=0 */
memset(dest_buf, mask_char, BUF_LEN);
strcpy(dest, "random initialized string");
TEST(0 == CU_translate_special_characters("some <", dest, 0));
TEST(!strncmp(dest_buf, ref_buf, MAX_LEN));
TEST(!strcmp(dest, "random initialized string"));
TEST(!strncmp(dest+strlen(dest)+1, ref_buf, MAX_LEN-strlen(dest)-1));
/* maxlen < len(converted szSrc) */
memset(dest_buf, mask_char, BUF_LEN);
TEST(0 == CU_translate_special_characters("some <", dest, 1));
TEST(!strncmp(dest_buf, ref_buf, MAX_LEN));
TEST(!strncmp(dest, "\0", 1));
TEST(!strncmp((dest+1), ref_buf, MAX_LEN-1));
memset(dest_buf, mask_char, BUF_LEN);
TEST(0 == CU_translate_special_characters("some <", dest, 2));
TEST(!strncmp(dest_buf, ref_buf, MAX_LEN));
TEST(!strncmp(dest, "\0", 1));
TEST(!strncmp((dest+2), ref_buf, MAX_LEN-2));
memset(dest_buf, mask_char, BUF_LEN);
TEST(0 == CU_translate_special_characters("some <", dest, 5));
TEST(!strncmp(dest_buf, ref_buf, MAX_LEN));
TEST(!strncmp(dest, "\0", 1));
TEST(!strncmp((dest+5), ref_buf, MAX_LEN-5));
memset(dest_buf, mask_char, BUF_LEN);
TEST(0 == CU_translate_special_characters("some <", dest, 10));
TEST(!strncmp(dest_buf, ref_buf, MAX_LEN));
TEST(!strncmp(dest, "\0", 1));
TEST(!strncmp((dest+10), ref_buf, MAX_LEN-10));
memset(dest_buf, mask_char, BUF_LEN);
TEST(0 == CU_translate_special_characters("some <", dest, 20));
TEST(!strncmp(dest_buf, ref_buf, MAX_LEN));
TEST(!strncmp(dest, "\0", 1));
TEST(!strncmp((dest+20), ref_buf, MAX_LEN-20));
memset(dest_buf, mask_char, BUF_LEN);
TEST(0 == CU_translate_special_characters("some <", dest, 24));
TEST(!strncmp(dest_buf, ref_buf, MAX_LEN));
TEST(!strncmp(dest, "\0", 1));
TEST(!strncmp((dest+24), ref_buf, MAX_LEN-24));
memset(dest_buf, mask_char, BUF_LEN);
TEST(0 == CU_translate_special_characters("some <", dest, 25));
TEST(!strncmp(dest_buf, ref_buf, MAX_LEN));
TEST(!strncmp(dest, "\0", 1));
TEST(!strncmp((dest+25), ref_buf, MAX_LEN-25));
memset(dest_buf, mask_char, BUF_LEN);
TEST(0 == CU_translate_special_characters("some <", dest, 37));
TEST(!strncmp(dest_buf, ref_buf, MAX_LEN));
TEST(!strncmp(dest, "\0", 1));
TEST(!strncmp((dest+37), ref_buf, MAX_LEN-37));
/* maxlen > len(converted szSrc) */
memset(dest_buf, mask_char, BUF_LEN);
TEST(4 == CU_translate_special_characters("some <", dest, 38));
TEST(!strncmp(dest_buf, ref_buf, MAX_LEN));
TEST(!strncmp(dest, "some <<string & another>\0", 38));
TEST(!strncmp((dest+38), ref_buf, MAX_LEN-38));
/* maxlen > len(converted szSrc) */
memset(dest_buf, mask_char, BUF_LEN);
TEST(4 == CU_translate_special_characters("some <", dest, MAX_LEN));
TEST(!strncmp(dest_buf, ref_buf, MAX_LEN));
TEST(!strncmp(dest, "some <<string & another>\0", 38));
/* no special characters */
memset(dest_buf, mask_char, BUF_LEN);
TEST(0 == CU_translate_special_characters("some string or another", dest, MAX_LEN));
TEST(!strncmp(dest_buf, ref_buf, MAX_LEN));
TEST(!strncmp(dest, "some string or another\0", 23));
/* only special characters */
memset(dest_buf, mask_char, BUF_LEN);
TEST(11 == CU_translate_special_characters("<><><<>>&&&", dest, MAX_LEN));
TEST(!strncmp(dest_buf, ref_buf, MAX_LEN));
TEST(!strcmp(dest, "<><><<>>&&&"));
}
static void test_CU_translated_strlen(void)
{
/* empty src */
TEST(0 == CU_translated_strlen(""));
/* 1 char src */
TEST(1 == CU_translated_strlen("#"));
TEST(5 == CU_translated_strlen("&"));
TEST(4 == CU_translated_strlen("<"));
TEST(4 == CU_translated_strlen(">"));
TEST(1 == CU_translated_strlen("?"));
/* 2 char src */
TEST(2 == CU_translated_strlen("#@"));
TEST(10 == CU_translated_strlen("&&"));
TEST(9 == CU_translated_strlen(">&"));
/* longer src */
TEST(37 == CU_translated_strlen("some <"));
TEST(22 == CU_translated_strlen("some string or another"));
TEST(47 == CU_translated_strlen("<><><<>>&&&"));
}
static void test_CU_compare_strings(void)
{
TEST(0 == CU_compare_strings("",""));
TEST(0 == CU_compare_strings("@","@"));
TEST(0 == CU_compare_strings("D","d"));
TEST(0 == CU_compare_strings("s1","s1"));
TEST(0 == CU_compare_strings("s1","S1"));
TEST(0 != CU_compare_strings("s1","s12"));
TEST(0 == CU_compare_strings("this is string 1","tHIS iS sTRING 1"));
TEST(0 == CU_compare_strings("i have \t a tab!","I have \t a tab!"));
TEST(0 != CU_compare_strings("not the same"," not the same"));
}
static void test_CU_trim(void)
{
char string[MAX_LEN];
strcpy(string, "");
CU_trim(string);
TEST(!strcmp("", string));
strcpy(string, " ");
CU_trim(string);
TEST(!strcmp("", string));
strcpy(string, " ");
CU_trim(string);
TEST(!strcmp("", string));
strcpy(string, " b");
CU_trim(string);
TEST(!strcmp("b", string));
strcpy(string, " B");
CU_trim(string);
TEST(!strcmp("B", string));
strcpy(string, "s ");
CU_trim(string);
TEST(!strcmp("s", string));
strcpy(string, "S ");
CU_trim(string);
TEST(!strcmp("S", string));
strcpy(string, " 5 ");
CU_trim(string);
TEST(!strcmp("5", string));
strcpy(string, "~ & ^ ( ^ ");
CU_trim(string);
TEST(!strcmp("~ & ^ ( ^", string));
strcpy(string, " ~ & ^ ( ^");
CU_trim(string);
TEST(!strcmp("~ & ^ ( ^", string));
strcpy(string, " ~ & ^ ( ^ ");
CU_trim(string);
TEST(!strcmp("~ & ^ ( ^", string));
}
static void test_CU_trim_left(void)
{
char string[MAX_LEN];
strcpy(string, "");
CU_trim_left(string);
TEST(!strcmp("", string));
strcpy(string, " ");
CU_trim_left(string);
TEST(!strcmp("", string));
strcpy(string, " ");
CU_trim_left(string);
TEST(!strcmp("", string));
strcpy(string, " b");
CU_trim_left(string);
TEST(!strcmp("b", string));
strcpy(string, " B");
CU_trim_left(string);
TEST(!strcmp("B", string));
strcpy(string, "s ");
CU_trim_left(string);
TEST(!strcmp("s ", string));
strcpy(string, "S ");
CU_trim_left(string);
TEST(!strcmp("S ", string));
strcpy(string, " 5 ");
CU_trim_left(string);
TEST(!strcmp("5 ", string));
strcpy(string, "~ & ^ ( ^ ");
CU_trim_left(string);
TEST(!strcmp("~ & ^ ( ^ ", string));
strcpy(string, " ~ & ^ ( ^");
CU_trim_left(string);
TEST(!strcmp("~ & ^ ( ^", string));
strcpy(string, " ~ & ^ ( ^ ");
CU_trim_left(string);
TEST(!strcmp("~ & ^ ( ^ ", string));
}
static void test_CU_trim_right(void)
{
char string[MAX_LEN];
strcpy(string, "");
CU_trim_right(string);
TEST(!strcmp("", string));
strcpy(string, " ");
CU_trim_right(string);
TEST(!strcmp("", string));
strcpy(string, " ");
CU_trim_right(string);
TEST(!strcmp("", string));
strcpy(string, " b");
CU_trim_right(string);
TEST(!strcmp(" b", string));
strcpy(string, " B");
CU_trim_right(string);
TEST(!strcmp(" B", string));
strcpy(string, "s ");
CU_trim_right(string);
TEST(!strcmp("s", string));
strcpy(string, "S ");
CU_trim_right(string);
TEST(!strcmp("S", string));
strcpy(string, " 5 ");
CU_trim_right(string);
TEST(!strcmp(" 5", string));
strcpy(string, "~ & ^ ( ^ ");
CU_trim_right(string);
TEST(!strcmp("~ & ^ ( ^", string));
strcpy(string, " ~ & ^ ( ^");
CU_trim_right(string);
TEST(!strcmp(" ~ & ^ ( ^", string));
strcpy(string, " ~ & ^ ( ^ ");
CU_trim_right(string);
TEST(!strcmp(" ~ & ^ ( ^", string));
}
static void test_CU_number_width(void)
{
TEST(1 == CU_number_width(0));
TEST(1 == CU_number_width(1));
TEST(2 == CU_number_width(-1));
TEST(4 == CU_number_width(2346));
TEST(7 == CU_number_width(-257265));
TEST(9 == CU_number_width(245723572));
TEST(9 == CU_number_width(-45622572));
}
void test_cunit_Util(void)
{
test_cunit_start_tests("Util.c");
test_CU_translate_special_characters();
test_CU_translated_strlen();
test_CU_compare_strings();
test_CU_trim();
test_CU_trim_left();
test_CU_trim_right();
test_CU_number_width();
test_cunit_end_tests();
}
#endif /* CUNIT_BUILD_TESTS */
cunit-2.1-3-dfsg/CUnit/Sources/Makefile.am 0000664 0000000 0000000 00000003506 12607012350 0020260 0 ustar 00root root 0000000 0000000 ## Process this file with automake to produce Makefile.in
BASIC_OBJECTS_SHARED = Basic/Basic.lo
AUTOMATED_OBJECTS_SHARED = Automated/Automated.lo
CONSOLE_OBJECTS_SHARED = Console/Console.lo
CURSES_OBJECTS_SHARED = Curses/Curses.lo
FRAMEWORK_OBJECTS_SHARED = \
Framework/CUError.lo \
Framework/MyMem.lo \
Framework/TestDB.lo \
Framework/TestRun.lo \
Framework/Util.lo
FRAMEWORK_OBJECT_FILES_SHARED = $(FRAMEWORK_OBJECTS_SHARED)
FRAMEWORK_COMPILE_DIRS = Framework
if ENABLE_AUTOMATED
AUTOMATED_OBJECT_FILES_SHARED = $(AUTOMATED_OBJECTS_SHARED)
AUTOMATED_COMPILE_DIRS = Automated
endif
if ENABLE_BASIC
BASIC_OBJECT_FILES_SHARED = $(BASIC_OBJECTS_SHARED)
BASIC_COMPILE_DIRS = Basic
endif
if ENABLE_CONSOLE
CONSOLE_OBJECT_FILES_SHARED = $(CONSOLE_OBJECTS_SHARED)
CONSOLE_COMPILE_DIRS = Console
endif
if ENABLE_CURSES
CURSES_OBJECT_FILES_SHARED = $(CURSES_OBJECTS_SHARED)
CURSES_COMPILE_DIRS = Curses
endif
if ENABLE_TEST
TEST_OBJECT_FILES = \
Framework/CUError_test.o \
Framework/MyMem_test.o \
Framework/TestDB_test.o \
Framework/TestRun_test.o \
Framework/Util_test.o
TEST_COMPILE_DIRS = Test
endif
COMPILE_DIRS = \
$(FRAMEWORK_COMPILE_DIRS) \
$(AUTOMATED_COMPILE_DIRS) \
$(BASIC_COMPILE_DIRS) \
$(CONSOLE_COMPILE_DIRS) \
$(CURSES_COMPILE_DIRS) \
. \
$(TEST_COMPILE_DIRS)
OBJECT_FILES_SHARED = \
$(FRAMEWORK_OBJECT_FILES_SHARED) \
$(AUTOMATED_OBJECT_FILES_SHARED) \
$(BASIC_OBJECT_FILES_SHARED) \
$(CONSOLE_OBJECT_FILES_SHARED) \
$(CURSES_OBJECT_FILES_SHARED)
TEST_OBJECTS = $(TEST_OBJECT_FILES)
SUBDIRS = $(COMPILE_DIRS)
lib_LTLIBRARIES = libcunit.la
libcunit_la_SOURCES =
libcunit_la_LIBADD = $(OBJECT_FILES_SHARED)
libcunit_la_LDFLAGS = -version-info @LIBTOOL_CURRENT@:@LIBTOOL_REVISION@:@LIBTOOL_AGE@
if ENABLE_TEST
noinst_LIBRARIES = libcunit_test.a
libcunit_test_a_SOURCES =
libcunit_test_a_LIBADD = $(TEST_OBJECTS)
endif
cunit-2.1-3-dfsg/CUnit/Sources/Makefile.in 0000664 0000000 0000000 00000062332 12607012350 0020273 0 ustar 00root root 0000000 0000000 # Makefile.in generated by automake 1.14 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = CUnit/Sources
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/mkinstalldirs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LIBRARIES = $(noinst_LIBRARIES)
ARFLAGS = cru
AM_V_AR = $(am__v_AR_@AM_V@)
am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
am__v_AR_0 = @echo " AR " $@;
am__v_AR_1 =
libcunit_test_a_AR = $(AR) $(ARFLAGS)
@ENABLE_TEST_TRUE@libcunit_test_a_DEPENDENCIES = $(TEST_OBJECTS)
am_libcunit_test_a_OBJECTS =
libcunit_test_a_OBJECTS = $(am_libcunit_test_a_OBJECTS)
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
am__installdirs = "$(DESTDIR)$(libdir)"
LTLIBRARIES = $(lib_LTLIBRARIES)
libcunit_la_DEPENDENCIES = $(OBJECT_FILES_SHARED)
am_libcunit_la_OBJECTS =
libcunit_la_OBJECTS = $(am_libcunit_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
libcunit_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(libcunit_la_LDFLAGS) $(LDFLAGS) -o $@
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_@AM_V@)
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
am__v_CC_0 = @echo " CC " $@;
am__v_CC_1 =
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(libcunit_test_a_SOURCES) $(libcunit_la_SOURCES)
DIST_SOURCES = $(libcunit_test_a_SOURCES) $(libcunit_la_SOURCES)
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
ctags-recursive dvi-recursive html-recursive info-recursive \
install-data-recursive install-dvi-recursive \
install-exec-recursive install-html-recursive \
install-info-recursive install-pdf-recursive \
install-ps-recursive install-recursive installcheck-recursive \
installdirs-recursive pdf-recursive ps-recursive \
tags-recursive uninstall-recursive
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
am__recursive_targets = \
$(RECURSIVE_TARGETS) \
$(RECURSIVE_CLEAN_TARGETS) \
$(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
distdir
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = Framework Automated Basic Console Curses . Test
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
sed_rest='s,^[^/]*/*,,'; \
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
sed_butlast='s,/*[^/]*$$,,'; \
while test -n "$$dir1"; do \
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
if test "$$first" != "."; then \
if test "$$first" = ".."; then \
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
else \
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
if test "$$first2" = "$$first"; then \
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
else \
dir2="../$$dir2"; \
fi; \
dir0="$$dir0"/"$$first"; \
fi; \
fi; \
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
done; \
reldir="$$dir2"
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_AUTOMATED = @BUILD_AUTOMATED@
BUILD_BASIC = @BUILD_BASIC@
BUILD_CONSOLE = @BUILD_CONSOLE@
BUILD_CURSES = @BUILD_CURSES@
BUILD_EXAMPLES = @BUILD_EXAMPLES@
BUILD_TEST = @BUILD_TEST@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CURSES_LIB = @CURSES_LIB@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_DEBUG = @ENABLE_DEBUG@
ENABLE_DEPRECATED = @ENABLE_DEPRECATED@
ENABLE_MEMTRACE = @ENABLE_MEMTRACE@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBTOOL_AGE = @LIBTOOL_AGE@
LIBTOOL_CURRENT = @LIBTOOL_CURRENT@
LIBTOOL_REVISION = @LIBTOOL_REVISION@
LIBTOOL_SUFFIX = @LIBTOOL_SUFFIX@
LIBTOOL_SUFFIX1 = @LIBTOOL_SUFFIX1@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
RELEASE = @RELEASE@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
VERSION_MAJOR = @VERSION_MAJOR@
VERSION_MINOR = @VERSION_MINOR@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
BASIC_OBJECTS_SHARED = Basic/Basic.lo
AUTOMATED_OBJECTS_SHARED = Automated/Automated.lo
CONSOLE_OBJECTS_SHARED = Console/Console.lo
CURSES_OBJECTS_SHARED = Curses/Curses.lo
FRAMEWORK_OBJECTS_SHARED = \
Framework/CUError.lo \
Framework/MyMem.lo \
Framework/TestDB.lo \
Framework/TestRun.lo \
Framework/Util.lo
FRAMEWORK_OBJECT_FILES_SHARED = $(FRAMEWORK_OBJECTS_SHARED)
FRAMEWORK_COMPILE_DIRS = Framework
@ENABLE_AUTOMATED_TRUE@AUTOMATED_OBJECT_FILES_SHARED = $(AUTOMATED_OBJECTS_SHARED)
@ENABLE_AUTOMATED_TRUE@AUTOMATED_COMPILE_DIRS = Automated
@ENABLE_BASIC_TRUE@BASIC_OBJECT_FILES_SHARED = $(BASIC_OBJECTS_SHARED)
@ENABLE_BASIC_TRUE@BASIC_COMPILE_DIRS = Basic
@ENABLE_CONSOLE_TRUE@CONSOLE_OBJECT_FILES_SHARED = $(CONSOLE_OBJECTS_SHARED)
@ENABLE_CONSOLE_TRUE@CONSOLE_COMPILE_DIRS = Console
@ENABLE_CURSES_TRUE@CURSES_OBJECT_FILES_SHARED = $(CURSES_OBJECTS_SHARED)
@ENABLE_CURSES_TRUE@CURSES_COMPILE_DIRS = Curses
@ENABLE_TEST_TRUE@TEST_OBJECT_FILES = \
@ENABLE_TEST_TRUE@ Framework/CUError_test.o \
@ENABLE_TEST_TRUE@ Framework/MyMem_test.o \
@ENABLE_TEST_TRUE@ Framework/TestDB_test.o \
@ENABLE_TEST_TRUE@ Framework/TestRun_test.o \
@ENABLE_TEST_TRUE@ Framework/Util_test.o
@ENABLE_TEST_TRUE@TEST_COMPILE_DIRS = Test
COMPILE_DIRS = \
$(FRAMEWORK_COMPILE_DIRS) \
$(AUTOMATED_COMPILE_DIRS) \
$(BASIC_COMPILE_DIRS) \
$(CONSOLE_COMPILE_DIRS) \
$(CURSES_COMPILE_DIRS) \
. \
$(TEST_COMPILE_DIRS)
OBJECT_FILES_SHARED = \
$(FRAMEWORK_OBJECT_FILES_SHARED) \
$(AUTOMATED_OBJECT_FILES_SHARED) \
$(BASIC_OBJECT_FILES_SHARED) \
$(CONSOLE_OBJECT_FILES_SHARED) \
$(CURSES_OBJECT_FILES_SHARED)
TEST_OBJECTS = $(TEST_OBJECT_FILES)
SUBDIRS = $(COMPILE_DIRS)
lib_LTLIBRARIES = libcunit.la
libcunit_la_SOURCES =
libcunit_la_LIBADD = $(OBJECT_FILES_SHARED)
libcunit_la_LDFLAGS = -version-info @LIBTOOL_CURRENT@:@LIBTOOL_REVISION@:@LIBTOOL_AGE@
@ENABLE_TEST_TRUE@noinst_LIBRARIES = libcunit_test.a
@ENABLE_TEST_TRUE@libcunit_test_a_SOURCES =
@ENABLE_TEST_TRUE@libcunit_test_a_LIBADD = $(TEST_OBJECTS)
all: all-recursive
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu CUnit/Sources/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu CUnit/Sources/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
libcunit_test.a: $(libcunit_test_a_OBJECTS) $(libcunit_test_a_DEPENDENCIES) $(EXTRA_libcunit_test_a_DEPENDENCIES)
$(AM_V_at)-rm -f libcunit_test.a
$(AM_V_AR)$(libcunit_test_a_AR) libcunit_test.a $(libcunit_test_a_OBJECTS) $(libcunit_test_a_LIBADD)
$(AM_V_at)$(RANLIB) libcunit_test.a
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@$(NORMAL_INSTALL)
@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
list2=; for p in $$list; do \
if test -f $$p; then \
list2="$$list2 $$p"; \
else :; fi; \
done; \
test -z "$$list2" || { \
echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
}
uninstall-libLTLIBRARIES:
@$(NORMAL_UNINSTALL)
@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
for p in $$list; do \
$(am__strip_dir) \
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
done
clean-libLTLIBRARIES:
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
@list='$(lib_LTLIBRARIES)'; \
locs=`for p in $$list; do echo $$p; done | \
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
sort -u`; \
test -z "$$locs" || { \
echo rm -f $${locs}; \
rm -f $${locs}; \
}
libcunit.la: $(libcunit_la_OBJECTS) $(libcunit_la_DEPENDENCIES) $(EXTRA_libcunit_la_DEPENDENCIES)
$(AM_V_CCLD)$(libcunit_la_LINK) -rpath $(libdir) $(libcunit_la_OBJECTS) $(libcunit_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
# This directory's subdirectories are mostly independent; you can cd
# into them and run 'make' without going through this Makefile.
# To change the values of 'make' variables: instead of editing Makefiles,
# (1) if the variable is set in 'config.status', edit 'config.status'
# (which will cause the Makefiles to be regenerated when you run 'make');
# (2) otherwise, pass the desired values on the 'make' command line.
$(am__recursive_targets):
@fail=; \
if $(am__make_keepgoing); then \
failcom='fail=yes'; \
else \
failcom='exit 1'; \
fi; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-recursive
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-recursive
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-recursive
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
$(am__make_dryrun) \
|| test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
dir1=$$subdir; dir2="$(top_distdir)"; \
$(am__relativize); \
new_top_distdir=$$reldir; \
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
($(am__cd) $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$new_top_distdir" \
distdir="$$new_distdir" \
am__remove_distdir=: \
am__skip_length_check=: \
am__skip_mode_fix=: \
distdir) \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-recursive
all-am: Makefile $(LIBRARIES) $(LTLIBRARIES)
installdirs: installdirs-recursive
installdirs-am:
for dir in "$(DESTDIR)$(libdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
clean-noinstLIBRARIES mostlyclean-am
distclean: distclean-recursive
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
html-am:
info: info-recursive
info-am:
install-data-am:
install-dvi: install-dvi-recursive
install-dvi-am:
install-exec-am: install-libLTLIBRARIES
install-html: install-html-recursive
install-html-am:
install-info: install-info-recursive
install-info-am:
install-man:
install-pdf: install-pdf-recursive
install-pdf-am:
install-ps: install-ps-recursive
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-libLTLIBRARIES
.MAKE: $(am__recursive_targets) install-am install-strip
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
check-am clean clean-generic clean-libLTLIBRARIES \
clean-libtool clean-noinstLIBRARIES cscopelist-am ctags \
ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-libLTLIBRARIES install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs installdirs-am \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
uninstall-libLTLIBRARIES
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
cunit-2.1-3-dfsg/CUnit/Sources/Test/ 0000775 0000000 0000000 00000000000 12607012350 0017137 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/CUnit/Sources/Test/.deps/ 0000775 0000000 0000000 00000000000 12607012350 0020150 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/CUnit/Sources/Test/.deps/test_cunit.Po 0000664 0000000 0000000 00000013505 12607012350 0022635 0 ustar 00root root 0000000 0000000 test_cunit.o: test_cunit.c \
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdarg.h \
/usr/include/stdio.h /usr/include/sys/cdefs.h \
/usr/include/sys/_symbol_aliasing.h \
/usr/include/sys/_posix_availability.h /usr/include/Availability.h \
/usr/include/AvailabilityInternal.h /usr/include/_types.h \
/usr/include/sys/_types.h /usr/include/machine/_types.h \
/usr/include/i386/_types.h /usr/include/sys/_types/_va_list.h \
/usr/include/sys/_types/_size_t.h /usr/include/sys/_types/_null.h \
/usr/include/sys/_types/_off_t.h /usr/include/sys/_types/_ssize_t.h \
/usr/include/secure/_stdio.h /usr/include/secure/_common.h \
/usr/include/stdlib.h /usr/include/sys/wait.h \
/usr/include/sys/_types/_pid_t.h /usr/include/sys/_types/_id_t.h \
/usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \
/usr/include/machine/signal.h /usr/include/i386/signal.h \
/usr/include/machine/_mcontext.h /usr/include/i386/_mcontext.h \
/usr/include/mach/i386/_structs.h \
/usr/include/sys/_types/_sigaltstack.h \
/usr/include/sys/_types/_ucontext.h \
/usr/include/sys/_types/_pthread_attr_t.h \
/usr/include/sys/_types/_sigset_t.h /usr/include/sys/_types/_uid_t.h \
/usr/include/sys/resource.h \
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h \
/usr/include/stdint.h /usr/include/sys/_types/_int8_t.h \
/usr/include/sys/_types/_int16_t.h /usr/include/sys/_types/_int32_t.h \
/usr/include/sys/_types/_int64_t.h /usr/include/_types/_uint8_t.h \
/usr/include/_types/_uint16_t.h /usr/include/_types/_uint32_t.h \
/usr/include/_types/_uint64_t.h /usr/include/sys/_types/_intptr_t.h \
/usr/include/sys/_types/_uintptr_t.h /usr/include/_types/_intmax_t.h \
/usr/include/_types/_uintmax_t.h /usr/include/sys/_types/_timeval.h \
/usr/include/machine/endian.h /usr/include/i386/endian.h \
/usr/include/sys/_endian.h /usr/include/libkern/_OSByteOrder.h \
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
/usr/include/sys/_types/_ct_rune_t.h /usr/include/sys/_types/_rune_t.h \
/usr/include/sys/_types/_wchar_t.h /usr/include/machine/types.h \
/usr/include/i386/types.h /usr/include/sys/_types/___offsetof.h \
/usr/include/sys/_types/_dev_t.h /usr/include/sys/_types/_mode_t.h \
/usr/include/string.h /usr/include/strings.h \
/usr/include/secure/_string.h /usr/include/time.h \
/usr/include/_structs.h /usr/include/sys/_structs.h \
/usr/include/sys/_types/_timespec.h /usr/include/sys/_types/_clock_t.h \
/usr/include/sys/_types/_time_t.h ../../../CUnit/Headers/CUnit.h \
/usr/include/math.h ../../../CUnit/Headers/CUError.h \
/usr/include/errno.h /usr/include/sys/errno.h \
../../../CUnit/Headers/TestDB.h /usr/include/setjmp.h \
../../../CUnit/Headers/TestRun.h ../../../CUnit/Headers/MyMem.h \
../../../CUnit/Headers/Util.h ../../../CUnit/Headers/CUnit_intl.h \
test_cunit.h
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdarg.h:
/usr/include/stdio.h:
/usr/include/sys/cdefs.h:
/usr/include/sys/_symbol_aliasing.h:
/usr/include/sys/_posix_availability.h:
/usr/include/Availability.h:
/usr/include/AvailabilityInternal.h:
/usr/include/_types.h:
/usr/include/sys/_types.h:
/usr/include/machine/_types.h:
/usr/include/i386/_types.h:
/usr/include/sys/_types/_va_list.h:
/usr/include/sys/_types/_size_t.h:
/usr/include/sys/_types/_null.h:
/usr/include/sys/_types/_off_t.h:
/usr/include/sys/_types/_ssize_t.h:
/usr/include/secure/_stdio.h:
/usr/include/secure/_common.h:
/usr/include/stdlib.h:
/usr/include/sys/wait.h:
/usr/include/sys/_types/_pid_t.h:
/usr/include/sys/_types/_id_t.h:
/usr/include/sys/signal.h:
/usr/include/sys/appleapiopts.h:
/usr/include/machine/signal.h:
/usr/include/i386/signal.h:
/usr/include/machine/_mcontext.h:
/usr/include/i386/_mcontext.h:
/usr/include/mach/i386/_structs.h:
/usr/include/sys/_types/_sigaltstack.h:
/usr/include/sys/_types/_ucontext.h:
/usr/include/sys/_types/_pthread_attr_t.h:
/usr/include/sys/_types/_sigset_t.h:
/usr/include/sys/_types/_uid_t.h:
/usr/include/sys/resource.h:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h:
/usr/include/stdint.h:
/usr/include/sys/_types/_int8_t.h:
/usr/include/sys/_types/_int16_t.h:
/usr/include/sys/_types/_int32_t.h:
/usr/include/sys/_types/_int64_t.h:
/usr/include/_types/_uint8_t.h:
/usr/include/_types/_uint16_t.h:
/usr/include/_types/_uint32_t.h:
/usr/include/_types/_uint64_t.h:
/usr/include/sys/_types/_intptr_t.h:
/usr/include/sys/_types/_uintptr_t.h:
/usr/include/_types/_intmax_t.h:
/usr/include/_types/_uintmax_t.h:
/usr/include/sys/_types/_timeval.h:
/usr/include/machine/endian.h:
/usr/include/i386/endian.h:
/usr/include/sys/_endian.h:
/usr/include/libkern/_OSByteOrder.h:
/usr/include/libkern/i386/_OSByteOrder.h:
/usr/include/alloca.h:
/usr/include/sys/_types/_ct_rune_t.h:
/usr/include/sys/_types/_rune_t.h:
/usr/include/sys/_types/_wchar_t.h:
/usr/include/machine/types.h:
/usr/include/i386/types.h:
/usr/include/sys/_types/___offsetof.h:
/usr/include/sys/_types/_dev_t.h:
/usr/include/sys/_types/_mode_t.h:
/usr/include/string.h:
/usr/include/strings.h:
/usr/include/secure/_string.h:
/usr/include/time.h:
/usr/include/_structs.h:
/usr/include/sys/_structs.h:
/usr/include/sys/_types/_timespec.h:
/usr/include/sys/_types/_clock_t.h:
/usr/include/sys/_types/_time_t.h:
../../../CUnit/Headers/CUnit.h:
/usr/include/math.h:
../../../CUnit/Headers/CUError.h:
/usr/include/errno.h:
/usr/include/sys/errno.h:
../../../CUnit/Headers/TestDB.h:
/usr/include/setjmp.h:
../../../CUnit/Headers/TestRun.h:
../../../CUnit/Headers/MyMem.h:
../../../CUnit/Headers/Util.h:
../../../CUnit/Headers/CUnit_intl.h:
test_cunit.h:
cunit-2.1-3-dfsg/CUnit/Sources/Test/Jamfile 0000664 0000000 0000000 00000005556 12607012350 0020444 0 ustar 00root root 0000000 0000000 #
# Jamfile to build CUnit - internal testing
# (see http://www.freetype.org/jam/index.html)
#
# Copyright (C) 2004-2006 Jerry St.Clair
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#---------------------------------------------------------------------------
SubDir TOP CUnit Sources Test ;
TEST_PROG = test_cunit ;
SubDirHdrs $(CUNIT_HDR_DIR) ;
SubDirCcFlags
-I$(TOP)$(SLASH)CUnit$(SLASH)Sources$(SLASH)Test
-DCUNIT_BUILD_TESTS
-DCUNIT_DO_NOT_DEFINE_UNLESS_BUILDING_TESTS
-DMEMTRACE ;
# set location for target, source, and temporary files
LOCATE_TARGET = $(BUILD_DIR)$(SLASH)CUnit$(SLASH)test ;
SEARCH_SOURCE +=
$(TOP)$(SLASH)CUnit
$(TOP)$(SLASH)CUnit$(SLASH)Headers
$(TOP)$(SLASH)CUnit$(SLASH)Sources$(SLASH)Framework
;
SOURCES =
test_cunit.c
CUError.c
MyMem.c
TestDB.c
TestRun.c
Util.c
;
if $(BUILD_AUTOMATED)
{
SEARCH_SOURCE += $(TOP)$(SLASH)CUnit$(SLASH)Sources$(SLASH)Automated ;
SOURCES += Automated.c ;
}
if $(BUILD_BASIC)
{
SEARCH_SOURCE += $(TOP)$(SLASH)CUnit$(SLASH)Sources$(SLASH)Basic ;
SOURCES += Basic.c ;
}
if $(BUILD_CONSOLE)
{
SEARCH_SOURCE += $(TOP)$(SLASH)CUnit$(SLASH)Sources$(SLASH)Console ;
SOURCES += Console.c ;
}
if $(BUILD_CURSES)
{
SEARCH_SOURCE += $(TOP)$(SLASH)CUnit$(SLASH)Sources$(SLASH)Curses ;
SOURCES += Curses.c ;
}
if $(BUILD_WINDOWS)
{
SEARCH_SOURCE += $(TOP)$(SLASH)CUnit$(SLASH)Sources$(SLASH)Win ;
SOURCES += Win.c ;
}
# extra symbolic targets for building test program
DEPENDS test : $(TEST_PROG)$(SUFEXE) ;
NOTFILE test ;
if $(BUILD_TEST)
{
Main $(TEST_PROG) : $(SOURCES) ;
MakeLocate $(TEST_PROG)$(SUFEXE) : $(BUILD_DIR) ;
LINKLIBS on $(TEST_PROG)$(SUFEXE) = $(SYS_LIBS) ;
if $(NT)
{
if ($(BCCROOT) || ($(TOOLSET) = BORLANDC))
{
# need to fix Borland to include library location
LINKFLAGS on $(TEST_PROG)$(SUFEXE) += -L$(STDLIBPATH) -tWC ;
}
else if $(MSVCNT) || $(TOOLSET) = VISUALC)
{
# VC won't allow use of local exit() without link flag
LINKFLAGS on $(TEST_PROG)$(SUFEXE) += /FORCE:MULTIPLE ;
}
}
if $(INSTALL_TEST_DIR)
{
InstallCUnitBin $(INSTALL_TEST_DIR) : $(TEST_PROG)$(SUFEXE) ;
}
}
cunit-2.1-3-dfsg/CUnit/Sources/Test/Makefile.am 0000664 0000000 0000000 00000000563 12607012350 0021177 0 ustar 00root root 0000000 0000000 ## Process this file with automake to produce Makefile.in
if ENABLE_TEST
AM_CPPFLAGS = -I$(top_srcdir)/CUnit/Headers
testdir=${datadir}/@PACKAGE@/Test
test_PROGRAMS = test_cunit
test_cunit_SOURCES = test_cunit.c
test_cunit_LDADD = ../libcunit_test.a
test_cunit_LDFLAGS = -L..
INCLUDES = -DMEMTRACE -DCUNIT_BUILD_TESTS -DCUNIT_DO_NOT_DEFINE_UNLESS_BUILDING_TESTS
endif
cunit-2.1-3-dfsg/CUnit/Sources/Test/Makefile.in 0000664 0000000 0000000 00000047276 12607012350 0021224 0 ustar 00root root 0000000 0000000 # Makefile.in generated by automake 1.14 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
@ENABLE_TEST_TRUE@test_PROGRAMS = test_cunit$(EXEEXT)
subdir = CUnit/Sources/Test
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(testdir)"
PROGRAMS = $(test_PROGRAMS)
am__test_cunit_SOURCES_DIST = test_cunit.c
@ENABLE_TEST_TRUE@am_test_cunit_OBJECTS = test_cunit.$(OBJEXT)
test_cunit_OBJECTS = $(am_test_cunit_OBJECTS)
@ENABLE_TEST_TRUE@test_cunit_DEPENDENCIES = ../libcunit_test.a
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
test_cunit_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(test_cunit_LDFLAGS) $(LDFLAGS) -o $@
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_@AM_V@)
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
am__v_CC_0 = @echo " CC " $@;
am__v_CC_1 =
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(test_cunit_SOURCES)
DIST_SOURCES = $(am__test_cunit_SOURCES_DIST)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_AUTOMATED = @BUILD_AUTOMATED@
BUILD_BASIC = @BUILD_BASIC@
BUILD_CONSOLE = @BUILD_CONSOLE@
BUILD_CURSES = @BUILD_CURSES@
BUILD_EXAMPLES = @BUILD_EXAMPLES@
BUILD_TEST = @BUILD_TEST@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CURSES_LIB = @CURSES_LIB@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_DEBUG = @ENABLE_DEBUG@
ENABLE_DEPRECATED = @ENABLE_DEPRECATED@
ENABLE_MEMTRACE = @ENABLE_MEMTRACE@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBTOOL_AGE = @LIBTOOL_AGE@
LIBTOOL_CURRENT = @LIBTOOL_CURRENT@
LIBTOOL_REVISION = @LIBTOOL_REVISION@
LIBTOOL_SUFFIX = @LIBTOOL_SUFFIX@
LIBTOOL_SUFFIX1 = @LIBTOOL_SUFFIX1@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
RELEASE = @RELEASE@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
VERSION_MAJOR = @VERSION_MAJOR@
VERSION_MINOR = @VERSION_MINOR@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
@ENABLE_TEST_TRUE@AM_CPPFLAGS = -I$(top_srcdir)/CUnit/Headers
@ENABLE_TEST_TRUE@testdir = ${datadir}/@PACKAGE@/Test
@ENABLE_TEST_TRUE@test_cunit_SOURCES = test_cunit.c
@ENABLE_TEST_TRUE@test_cunit_LDADD = ../libcunit_test.a
@ENABLE_TEST_TRUE@test_cunit_LDFLAGS = -L..
@ENABLE_TEST_TRUE@INCLUDES = -DMEMTRACE -DCUNIT_BUILD_TESTS -DCUNIT_DO_NOT_DEFINE_UNLESS_BUILDING_TESTS
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu CUnit/Sources/Test/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu CUnit/Sources/Test/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-testPROGRAMS: $(test_PROGRAMS)
@$(NORMAL_INSTALL)
@list='$(test_PROGRAMS)'; test -n "$(testdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(testdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(testdir)" || exit 1; \
fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p \
|| test -f $$p1 \
; then echo "$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n;h' \
-e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) files[d] = files[d] " " $$1; \
else { print "f", $$3 "/" $$4, $$1; } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(testdir)$$dir'"; \
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(testdir)$$dir" || exit $$?; \
} \
; done
uninstall-testPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(test_PROGRAMS)'; test -n "$(testdir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-e 's/$$/$(EXEEXT)/' \
`; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(testdir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(testdir)" && rm -f $$files
clean-testPROGRAMS:
@list='$(test_PROGRAMS)'; test -n "$$list" || exit 0; \
echo " rm -f" $$list; \
rm -f $$list || exit $$?; \
test -n "$(EXEEXT)" || exit 0; \
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
test_cunit$(EXEEXT): $(test_cunit_OBJECTS) $(test_cunit_DEPENDENCIES) $(EXTRA_test_cunit_DEPENDENCIES)
@rm -f test_cunit$(EXEEXT)
$(AM_V_CCLD)$(test_cunit_LINK) $(test_cunit_OBJECTS) $(test_cunit_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_cunit.Po@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-am
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-am
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS)
installdirs:
for dir in "$(DESTDIR)$(testdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool clean-testPROGRAMS \
mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-testPROGRAMS
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-testPROGRAMS
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
clean-libtool clean-testPROGRAMS cscopelist-am ctags ctags-am \
distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
install-ps install-ps-am install-strip install-testPROGRAMS \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am uninstall-testPROGRAMS
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
cunit-2.1-3-dfsg/CUnit/Sources/Test/test_cunit.c 0000664 0000000 0000000 00000007204 12607012350 0021467 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2004-2006 Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Support for unit tests of CUnit framework
*
* 12-Aug-2004 Initial implementation. (JDS)
*
* 02-May-2006 Added internationalization hooks. (JDS)
*/
/** @file
* CUnit internal testingfunctions (implementation).
*/
/** @addtogroup Internal
@{
*/
#include
#include
#include
#include
#include
#include "CUnit.h"
#include "MyMem.h"
#include "Util.h"
#include "CUnit_intl.h"
#include "test_cunit.h"
static unsigned int f_nTests = 0;
static unsigned int f_nFailures = 0;
static unsigned int f_nTests_stored = 0;
static unsigned int f_nFails_stored = 0;
static clock_t f_start_time;
static void test_cunit_initialize(void);
static void test_cunit_report_results(void);
int main()
{
/* No line buffering. */
setbuf(stdout, NULL);
test_cunit_initialize();
fprintf(stdout, "\n%s", _("Testing CUnit internals..."));
/* individual module test functions go here */
test_cunit_CUError();
test_cunit_MyMem();
test_cunit_TestDB();
test_cunit_TestRun();
test_cunit_Util();
test_cunit_report_results();
CU_cleanup_registry();
return 0;
}
void test_cunit_start_tests(const char* strName)
{
fprintf(stdout, _("\n testing %s ... "), strName);
f_nTests_stored = f_nTests;
f_nFails_stored = f_nFailures;
}
void test_cunit_end_tests(void)
{
fprintf(stdout, _("%d assertions, %d failures"),
f_nTests - f_nTests_stored,
f_nFailures - f_nFails_stored);
}
void test_cunit_add_test(void)
{
++f_nTests;
}
void test_cunit_add_failure(void)
{
++f_nFailures;
}
unsigned int test_cunit_test_count(void)
{
return f_nTests;
}
unsigned int test_cunit_failure_count(void)
{
return f_nFailures;
}
void test_cunit_initialize(void)
{
f_nTests = 0;
f_nFailures = 0;
f_start_time = clock();
}
void test_cunit_report_results(void)
{
fprintf(stdout,
"\n\n---------------------------"
"\n%s"
"\n---------------------------"
"\n %s%d"
"\n %s%d"
"\n %s%d"
"\n\n%s%8.3f%s\n",
_("CUnit Internal Test Results"),
_("Total Number of Assertions: "),
f_nTests,
_("Successes: "),
f_nTests-f_nFailures,
_("Failures: "),
f_nFailures,
_("Total test time = "),
((double)clock() - (double)f_start_time)/(double)CLOCKS_PER_SEC,
_(" seconds."));
}
CU_BOOL test_cunit_assert_impl(CU_BOOL value,
const char* condition,
const char* file,
unsigned int line)
{
test_cunit_add_test();
if (CU_FALSE == value) {
test_cunit_add_failure();
printf(_("\nTEST FAILED: File '%s', Line %d, Condition '%s.'\n"),
file, line, condition);
}
return value;
}
cunit-2.1-3-dfsg/CUnit/Sources/Test/test_cunit.h 0000664 0000000 0000000 00000007073 12607012350 0021500 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2004-2006 Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Unit test for CUnit framework
*
* 12-Aug-2004 Initial implementation. (JDS)
* 14-Apr-2006 Added PASS(). (JDS)
*/
/** @file
* Interface for CUnit internal testing functions.
* Because the CUnit framework cannot be modified during a test
* run, CUnit cannot be used directly to test itself. That is,
* individual functions could set up and initiate CUnit test runs,
* but the functions themselves cannot be run as CUnit test functions.
*
* The approach taken here is to set up a mimimal test framework to
* keep track of logical tests. The various unit test functions are
* then free to use the CUnit framework as needed.
*/
/** @addtogroup Internal
@{
*/
#ifndef CUNIT_TEST_CUNIT_H_SEEN
#define CUNIT_TEST_CUNIT_H_SEEN
#include "CUnit.h"
#ifdef CUNIT_BUILD_TESTS
#ifdef __cplusplus
extern "C" {
#endif
/** Notify the test system that a set of tests is starting.
* Optional - for reporting purposes only.
* @param strName Name to use to designate this set of tests.
*/
void test_cunit_start_tests(const char* strName);
/** Notify the test system that a set of tests is complete.
* Optional - for reporting purposes only.
*/
void test_cunit_end_tests(void);
void test_cunit_add_test(void); /**< Register running a test (assertion). */
void test_cunit_add_failure(void); /**< Register failure of a test. */
unsigned int test_cunit_test_count(void); /**< Retrieve the number of tests run. */
unsigned int test_cunit_failure_count(void); /**< Retrieve the number of failed tests. */
/** Implementation of test assertion. */
CU_BOOL test_cunit_assert_impl(CU_BOOL value,
const char* condition,
const char* file,
unsigned int line);
/** Test a logical condition.
* Use of this macro allows clients to register a tested
* assertion with automatic recordkeeping and reporting
* of failures and run counts. The return value is a CU_BOOL
* having the same value as the logical condition tested.
* As such, it may be used in logial expressions itself.
*/
#define TEST(x) test_cunit_assert_impl((x), #x, __FILE__, __LINE__)
/** Test a logical condition with return on failure.
* This macro is the same as the TEST() macro, except that it
* issues a return
statement on failure.
* It should not be used as a logical condition itself.
*/
#define TEST_FATAL(x) if (!test_cunit_assert_impl((x), #x, __FILE__, __LINE__)) return
/** Record a success. */
#define PASS() test_cunit_add_test()
/** Record a failure. */
#define FAIL(cond_str) test_cunit_assert_impl(CU_FALSE, cond_str, __FILE__, __LINE__)
#ifdef __cplusplus
}
#endif
#endif /* CUNIT_BUILD_TESTS */
#endif /* CUNIT_TEST_CUNIT_H_SEEN */
cunit-2.1-3-dfsg/CUnit/Sources/Win/ 0000775 0000000 0000000 00000000000 12607012350 0016755 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/CUnit/Sources/Win/Win.c 0000664 0000000 0000000 00000003135 12607012350 0017660 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004,2005,2006 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* >>> UNDER CONSTRUCTION <<<
*
* Contains implementation of windows interface.
*
* 2001 Initial implementation. (AK)
*
* 18-Jul-2004 New interface. (JDS)
*/
#include
#include "Win.h"
#include "resource.h"
#include "CUnit.h"
static LRESULT CALLBACK DialogMessageHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
CU_UNREFERENCED_PARAMETER(hDlg); /* not used at this point */
CU_UNREFERENCED_PARAMETER(message);
CU_UNREFERENCED_PARAMETER(lParam);
switch((int)wParam) {
default: break;
}
return 0;
}
void CU_win_run_tests(void)
{
HWND hWndDlg = CreateDialog(NULL, (LPCTSTR)IDD_MAIN, NULL, (DLGPROC)DialogMessageHandler);
(void) hWndDlg;
}
cunit-2.1-3-dfsg/CUnit/Sources/Win/Win.h 0000664 0000000 0000000 00000002741 12607012350 0017667 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2004 Jerry D. St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* >>> UNDER CONSTRUCTION <<<
*
* Contains function definitions for windows programs.
*
* Created By : Jerry St.Clair on 5-Jul-2004
* Last Modified : 18-Jul-2004
* Comment : This file was missing from the 1-1.1 distribtion, new interface
* EMail : jds2@users.sourceforge.net
*
*/
#ifndef CUNIT_WIN_H_SEEN
#define CUNIT_WIN_H_SEEN
#include "CUnit.h"
#ifdef __cplusplus
extern "C" {
#endif
CU_EXPORT extern void CU_win_run_tests(void);
#ifdef USE_DEPRECATED_CUNIT_NAMES
#define win_run_tests() CU_win_run_tests()
#endif /* USE_DEPRECATED_CUNIT_NAMES */
#ifdef __cplusplus
}
#endif
#endif /* CUNIT_WIN_H_SEEN */
cunit-2.1-3-dfsg/CUnit/Sources/Win/resource.h 0000664 0000000 0000000 00000000735 12607012350 0020762 0 ustar 00root root 0000000 0000000 /*{{NO_DEPENDENCIES}}
Microsoft Developer Studio generated include file.
Used by CUnit.rc
*/
#define IDD_DIALOG1 101
#define IDD_MAIN 101
/* Next default values for new objects */
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
cunit-2.1-3-dfsg/CUnit/Sources/wxWidget/ 0000775 0000000 0000000 00000000000 12607012350 0020022 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/CUnit/Sources/wxWidget/Makefile.am 0000664 0000000 0000000 00000000271 12607012350 0022056 0 ustar 00root root 0000000 0000000 ## Process this file with automake to produce Makefile.in
AM_CPPFLAGS = -I$(top_srcdir)/CUnit/Headers
noinst_LTLIBRARIES = libcunitconsole.la
libcunitconsole_la_SOURCES = \
Console.c
cunit-2.1-3-dfsg/CUnit/Sources/wxWidget/icon_suite_active.xpm 0000664 0000000 0000000 00000003447 12607012350 0024254 0 ustar 00root root 0000000 0000000 /* XPM */
static char * icon_suite_active_xpm[] = {
"32 32 41 1",
" c None",
". c #2D59A3",
"+ c #295193",
"@ c #6E96D8",
"# c #638ED5",
"$ c #2F5DA9",
"% c #305FAC",
"& c #3161B1",
"* c #3263B4",
"= c #3366B9",
"- c #3467BC",
"; c #356AC1",
"> c #9FB9E5",
", c #AAC1E8",
"' c #B3C8EB",
") c #B9CDED",
"! c #BED0EE",
"~ c #C6D6F0",
"{ c #CBD9F1",
"] c #D2DFF4",
"^ c #DAE5F6",
"/ c #E1E9F7",
"( c #E5EDF9",
"_ c #EAF0FA",
": c #EDF2FB",
"< c #F0F5FC",
"[ c #F5F8FD",
"} c #FAFCFE",
"| c #FDFEFF",
"1 c #98B5E4",
"2 c #90AFE2",
"3 c #AEC5EA",
"4 c #F7F9FD",
"5 c #89A9DF",
"6 c #7FA2DD",
"7 c #779DDB",
"8 c #5D89D3",
"9 c #5584D1",
"0 c #4A7CCE",
"a c #4075CC",
"b c #3A70CA",
" ",
" ",
" ",
" ",
" ",
" ",
" ......+ ",
" .@@@@@#$ ",
" .@@@@@@@. ",
" .$%%%&&*==-----;;;;. ",
" .>,')!~{]^/(_:<[}||. ",
" .1>,')!~{]^/(_:<[}|. ",
" .21>,3)!~{]^/(_:<[4. ",
" .521>,3)!~{]^/(_:<[. ",
" .6521>,3)!~{]^/(_:<. ",
" .76521>,3)!~{]^/(_:. ",
" .@76521>,3)!~{]^/(_. ",
" .#@76521>,3'!~{]^/(. ",
" .8#@76521>,3'!~{]^/. ",
" .98#@76521>,3'!~{]^. ",
" .098#@76521>,3'!~{]. ",
" .a098#@76521>,3'!~{. ",
" .ba098#@76521>,3'!~. ",
" ...................& ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};
cunit-2.1-3-dfsg/CUnit/Sources/wxWidget/icon_suite_active_open.xpm 0000664 0000000 0000000 00000003454 12607012350 0025273 0 ustar 00root root 0000000 0000000 /* XPM */
static char * icon_suite_active_open_xpm[] = {
"32 32 41 1",
" c None",
". c #274D8B",
"+ c #295193",
"@ c #6E96D8",
"# c #5D89D3",
"$ c #3569BF",
"% c #2D59A3",
"& c #2F5DA9",
"* c #5584D1",
"= c #305FAC",
"- c #779DDB",
"; c #7FA2DD",
"> c #85A7DF",
", c #89A9DF",
"' c #90AFE2",
") c #B3C8EB",
"! c #D2DFF4",
"~ c #DAE5F6",
"{ c #E1E9F7",
"] c #E5EDF9",
"^ c #EAF0FA",
"/ c #F0F5FC",
"( c #F5F8FD",
"_ c #FAFCFE",
": c #FDFEFF",
"< c #3161B1",
"[ c #98B5E4",
"} c #9FB9E5",
"| c #AAC1E8",
"1 c #B9CDED",
"2 c #BED0EE",
"3 c #C6D6F0",
"4 c #CEDCF2",
"5 c #4075CC",
"6 c #356AC1",
"7 c #638ED5",
"8 c #E7EEF9",
"9 c #3366B9",
"0 c #4A7CCE",
"a c #CBD9F1",
"b c #214279",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ......+ ",
" +@@@@@#. ",
" +@@@@@@$. ",
" +@@@@@@@%++++++++++& ",
" +@@@@@@@@@@@@@@@@@@& ",
" +@@@@@@@@@@@@@@@@@@& ",
" +@@*&&&&&&&&&&&&&&&&&&& ",
" +@@=#-;>,')!~{]^/((_::< ",
" +@@+[}|)1234!~{]^/((_1& ",
" +@56'[}|)1234!~{]^/((& ",
" +@=7,'[}|)1234!~{8^/(& ",
" +@+-;,'[}|)1234!~{8^4& ",
" +59@-;,'[}|)1234!~{8& ",
" +=07@-;,'[}|)1234!~{& ",
" ++*#7@-;,'[}|)1234!a& ",
" b=0*#7@-;,'[}|)1234& ",
" b$50*#7@-;,'[}|)123& ",
" b..................& ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};
cunit-2.1-3-dfsg/CUnit/Sources/wxWidget/icon_suite_inactive.xpm 0000664 0000000 0000000 00000002414 12607012350 0024574 0 ustar 00root root 0000000 0000000 /* XPM */
static char * icon_suite_inactive_xpm[] = {
"32 32 5 1",
" c None",
". c #000000",
"+ c #8DA0B9",
"@ c #8399B4",
"# c #800000",
" ",
" ",
" ",
" ",
" ",
" ",
" ....... ",
" .+++++@. ",
" .+++++++. ",
" .................... ",
" .##################. ",
" .##################. ",
" .##################. ",
" .##################. ",
" .##################. ",
" .##################. ",
" .##################. ",
" .##################. ",
" .##################. ",
" .##################. ",
" .##################. ",
" .##################. ",
" .##################. ",
" .................... ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};
cunit-2.1-3-dfsg/CUnit/Sources/wxWidget/icon_suite_inactive_open.xpm 0000664 0000000 0000000 00000002402 12607012350 0025612 0 ustar 00root root 0000000 0000000 /* XPM */
static char * icon_suite_inactive_open_xpm[] = {
"32 32 4 1",
" c None",
". c #000000",
"+ c #8DA0B9",
"@ c #800000",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ....... ",
" .+++++.. ",
" .++++++.. ",
" .+++++++............ ",
" .++++++++++++++++++. ",
" .++++++++++++++++++. ",
" .++.................... ",
" .++.@@@@@@@@@@@@@@@@@@. ",
" .++.@@@@@@@@@@@@@@@@@@. ",
" .+..@@@@@@@@@@@@@@@@@.. ",
" .+.@@@@@@@@@@@@@@@@@@. ",
" .+.@@@@@@@@@@@@@@@@@@. ",
" ...@@@@@@@@@@@@@@@@@.. ",
" ..@@@@@@@@@@@@@@@@@@. ",
" ..@@@@@@@@@@@@@@@@@@. ",
" ..@@@@@@@@@@@@@@@@@.. ",
" .@@@@@@@@@@@@@@@@@@. ",
" .................... ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};
cunit-2.1-3-dfsg/CUnit/Sources/wxWidget/icon_test_active.xpm 0000664 0000000 0000000 00000003446 12607012350 0024101 0 ustar 00root root 0000000 0000000 /* XPM */
static char * icon_test_active_xpm[] = {
"32 32 41 1",
" c None",
". c #4B82A8",
"+ c #74A1BD",
"@ c #6B97B6",
"# c #5896BE",
"$ c #538BB1",
"% c #4388B4",
"& c #4381AA",
"* c #D7E0E9",
"= c #7FA6C0",
"- c #D1E5F5",
"; c #CAE1F3",
"> c #C3DDF1",
", c #BCD9EF",
"' c #AFD1EC",
") c #A5CCEA",
"! c #97C4E7",
"~ c #85BBE2",
"{ c #71B2DE",
"] c #71A8D1",
"^ c #4B8EBF",
"/ c #E6EAF1",
"( c #DAEAF7",
"_ c #619BC4",
": c #F1F4F7",
"< c #DEEDF8",
"[ c #87ABC3",
"} c #E5F0F9",
"| c #76BAE2",
"1 c #63B3DE",
"2 c #54A6D8",
"3 c #E9F3FA",
"4 c #FAFCFE",
"5 c #EFF6FC",
"6 c #7AC4E5",
"7 c #8FB0C3",
"8 c #F4F9FD",
"9 c #B6D5EE",
"0 c #F7FBFD",
"a c #FDFDFE",
"b c #FFFFFF",
" ",
" ",
" ",
" ",
" ",
" .+++@@##$$%&* ",
" =-;>,')!!~{]^/ ",
" =(-;>,')!!~]!_: ",
" =<(-;>,')!!];!_: ",
" [}<||111121]3;!+ ",
" [3}<(-;>,')]43;![ ",
" [53}<(-;>,']]]]]& ",
" [556|||1111122!~$ ",
" 78553}<(-;>,9)!!$ ",
" 708553}<(-;>,9)!# ",
" 7006666|||11119)# ",
" 74008553}<(-;>,9@ ",
" 744008553}<(-;>,@ ",
" 7a46666666|||1;>+ ",
" 7aa44008553}<(-;+ ",
" 7baa44008553}<(-+ ",
" 7bb6666666666|<(= ",
" 7bbbaa44008553}<= ",
" 7bbbbaa44008553}= ",
" 7bbbbbaa44008553[ ",
" 7bbbbbbaa4400855[ ",
" 77777777777777[[7 ",
" ",
" ",
" ",
" ",
" "};
cunit-2.1-3-dfsg/CUnit/Sources/wxWidget/icon_test_active_suite_inactive.xpm 0000664 0000000 0000000 00000003446 12607012350 0027174 0 ustar 00root root 0000000 0000000 /* XPM */
static char * icon_test_active_suite_inactive_xpm[] = {
"32 32 40 1",
" c None",
". c #000000",
"+ c #4B82A8",
"@ c #74A1BD",
"# c #6B97B6",
"$ c #5896BE",
"% c #538BB1",
"& c #4388B4",
"* c #4381AA",
"= c #D7E0E9",
"- c #7FA6C0",
"; c #D1E5F5",
"> c #CAE1F3",
", c #C3DDF1",
"' c #BCD9EF",
") c #AFD1EC",
"! c #A5CCEA",
"~ c #97C4E7",
"{ c #85BBE2",
"] c #71B2DE",
"^ c #71A8D1",
"/ c #4B8EBF",
"( c #E6EAF1",
"_ c #DAEAF7",
": c #619BC4",
"< c #F1F4F7",
"[ c #76BAE2",
"} c #63B3DE",
"| c #54A6D8",
"1 c #E9F3FA",
"2 c #87ABC3",
"3 c #FAFCFE",
"4 c #EFF6FC",
"5 c #8FB0C3",
"6 c #F4F9FD",
"7 c #F7FBFD",
"8 c #B6D5EE",
"9 c #7AC4E5",
"0 c #FDFDFE",
"a c #FFFFFF",
" ",
" ",
" ",
" ",
" . . ",
" ... +@@@##$$%%&*= ... ",
" ...-;>,')!~~{]^/( ... ",
" ..._;>,')!~~{^~:< ... ",
" ..._;>,')!~~^>~:... ",
" ...[[}}}}|}^1>... ",
" 2..._;>,')!^3...2 ",
" 24..._;>,')^...^* ",
" 244...[}}}}...~{% ",
" 5644..._;>...!~~% ",
" 57644..._...'8!~$ ",
" 577999.....}}}8!$ ",
" 5377644..._;>,'8# ",
" 533776....._;>,'# ",
" 50399...9...[}>,@ ",
" 5003...644..._;>@ ",
" 5a0...77644..._;@ ",
" 5a...9999999..._- ",
" 5...003377644...- ",
" ...aa003377644... ",
" ...aaaa003377644... ",
" ...aaaaaa003377644... ",
" ...55555555555555225... ",
" ... ... ",
" . . ",
" ",
" ",
" "};
cunit-2.1-3-dfsg/CUnit/Sources/wxWidget/icon_test_inactive.xpm 0000664 0000000 0000000 00000002642 12607012350 0024425 0 ustar 00root root 0000000 0000000 /* XPM */
static char * icon_test_inactive_xpm[] = {
"32 32 15 1",
" c None",
". c #000000",
"+ c #C00000",
"@ c #4B8EBF",
"# c #97C4E7",
"$ c #619BC4",
"% c #CAE1F3",
"& c #76BAE2",
"* c #63B3DE",
"= c #54A6D8",
"- c #E9F3FA",
"; c #74A1BD",
"> c #FAFCFE",
", c #87ABC3",
"' c #7AC4E5",
" ",
" ",
" ",
" ",
" ",
" ............. ",
" .++++++++++.@. ",
" .++++++++++.#$. ",
" .++++++++++.%#$. ",
" .++&&****=*.-%#; ",
" .++++++++++.>-%#, ",
" .++++++++++...... ",
" .++'&&&*****==++. ",
" .+++++++++++++++. ",
" .+++++++++++++++. ",
" .++''''&&&****++. ",
" .+++++++++++++++. ",
" .+++++++++++++++. ",
" .++'''''''&&&*++. ",
" .+++++++++++++++. ",
" .+++++++++++++++. ",
" .++''''''''''&++. ",
" .+++++++++++++++. ",
" .+++++++++++++++. ",
" .+++++++++++++++. ",
" .+++++++++++++++. ",
" ................. ",
" ",
" ",
" ",
" ",
" "};
cunit-2.1-3-dfsg/CUnit/Sources/wxWidget/icon_test_inactive_suite_inactive.xpm 0000664 0000000 0000000 00000002623 12607012350 0027517 0 ustar 00root root 0000000 0000000 /* XPM */
static char * icon_test_inactive_suite_inactive_xpm[] = {
"32 32 13 1",
" c None",
". c #000000",
"+ c #C00000",
"@ c #4B8EBF",
"# c #97C4E7",
"$ c #619BC4",
"% c #CAE1F3",
"& c #76BAE2",
"* c #63B3DE",
"= c #54A6D8",
"- c #E9F3FA",
"; c #87ABC3",
"> c #7AC4E5",
" ",
" ",
" ",
" . . ",
" ... ... ",
" ................ ... ",
" ...++++++++++.@. ... ",
" ...+++++++++.#$.... ",
" ...++++++++.%#... ",
" ....&****=*.-... ",
" .+...++++++....#; ",
" .++...+++++...... ",
" .++>...***...=++. ",
" .++++...+...++++. ",
" .+++++.....+++++. ",
" .++>>>>...****++. ",
" .+++++.....+++++. ",
" .++++...+...++++. ",
" .++>...>>>...*++. ",
" .++...+++++...++. ",
" .+...+++++++...+. ",
" ....>>>>>>>>>.... ",
" ...+++++++++++... ",
" ...+++++++++++++... ",
" ...+++++++++++++++... ",
" ....+++++++++++++++.... ",
" ... ................. ... ",
" . . ",
" ",
" ",
" ",
" "};
cunit-2.1-3-dfsg/CUnit/Sources/wxWidget/wxWidget.cpp 0000664 0000000 0000000 00000160217 12607012350 0022337 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2006 Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Implementation of the wxWidgets Test Interface.
*
* May 2006 Initial implementation (JDS)
*/
/** @file
* wxWidgets gui test interface (implementation).
*/
/** @addtogroup wxWidgets
@{
*/
// For compilers that support precompilation, includes "wx.h".
#include
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
// Include your minimal set of headers here, or wx.h
#include
#endif
#include
#include
#include
#include
#include
#include "icon_suite_active.xpm"
#include "icon_suite_active_open.xpm"
#include "icon_suite_inactive.xpm"
#include "icon_suite_inactive_open.xpm"
#include "icon_test_active.xpm"
#include "icon_test_inactive.xpm"
#include "icon_test_active_suite_inactive.xpm"
#include "icon_test_inactive_suite_inactive.xpm"
#include "CUnit.h"
#include "TestDB.h"
#include "Util.h"
#include "TestRun.h"
#include "MyMem.h"
#include "wxWidget.h"
#include "CUnit_intl.h" // include after wx.h to customize gettext macros set in wx.h
//* New application type for the CUnit wxWidgets interface.
class CUnitApp: public wxApp
{
public:
virtual bool OnInit(); //< Initializes the application.
};
//* Main window for the CUnit wxWidgets interface
class TopFrame: public wxFrame
{
public:
TopFrame(const wxString& title, const wxPoint& pos, const wxSize& size);
void SetActiveTopFrame(TopFrame *frame);
enum {
TreeCtrlIcon_SuiteActive,
TreeCtrlIcon_SuiteActiveOpen,
TreeCtrlIcon_SuiteInactive,
TreeCtrlIcon_SuiteInactiveOpen,
TreeCtrlIcon_TestActive,
TreeCtrlIcon_TestInactive,
TreeCtrlIcon_TestActiveSuiteInactive,
TreeCtrlIcon_TestInactiveSuiteInactive,
};
// callback functions for running tests
static void SuiteStartMessageHandler(const CU_pSuite pSuite);
static void TestStartMessageHandler(const CU_pTest pTest, const CU_pSuite pSuite);
static void TestCompleteMessageHandler(const CU_pTest pTest,
const CU_pSuite pSuite,
const CU_pFailureRecord pFailure);
static void SuiteCompleteMessageHandler(const CU_pSuite pSuite,
const CU_pFailureRecord pFailure);
protected:
void ClearPreviousStats(void);
wxTreeItemId FindSuite(CU_pSuite pSuite);
wxTreeItemId FindTest(CU_pSuite pSuite, CU_pTest pTest);
void ActivateSuiteInfo(void);
void DeactivateSuiteInfo(void);
void ActivateTestInfo(void);
void DeactivateTestInfo(void);
void ActivateRunResultInfo(void);
void DeactivateRunResultInfo(void);
void WriteFailureRecords(wxTextCtrl *textctrl,
unsigned int nFailures,
CU_pFailureRecord pFailure,
bool reset = false);
// event procedures
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
void OnTreeSelectionChanged(wxTreeEvent &event);
void OnTreeExpandAll(wxCommandEvent& event);
void OnTreeCollapseAll(wxCommandEvent& event);
void OnActivateSelected(wxCommandEvent& event);
void OnDeactivateSelected(wxCommandEvent& event);
void OnActivateAllSuites(wxCommandEvent& event);
void OnDeactivateAllSuites(wxCommandEvent& event);
void OnActivateAll(wxCommandEvent& event);
void OnDeactivateAll(wxCommandEvent& event);
void OnOptionColorizeTreeItems(wxCommandEvent& event);
void OnOptionFailOnInactive(wxCommandEvent& event);
void OnRunAll(wxCommandEvent& event);
void OnCloseWindow(wxCloseEvent& event);
void OnSuiteActiveCheckbox(wxCommandEvent& event);
void OnTestActiveCheckbox(wxCommandEvent& event);
void OnTreeSelChanged(wxTreeEvent& event);
private:
// controls needing persistent hooks
wxTreeCtrl *m_treectrl; //< wxTreeCtrl holding suite & test references.
wxStaticBox *m_suite_info_box;
wxStaticText *m_suite_name_label;
wxTextCtrl *m_suite_name_text;
wxStaticText *m_suite_init_label;
wxStaticText *m_suite_init_text;
wxStaticText *m_suite_clean_label;
wxStaticText *m_suite_clean_text;
wxCheckBox *m_suite_active_box;
wxStaticBox *m_test_info_box;
wxStaticText *m_test_name_label;
wxTextCtrl *m_test_name_text;
wxCheckBox *m_test_active_box;
wxStaticBox *m_result_box;
wxStaticText *m_result_ntests_label;
wxTextCtrl *m_result_ntests_text;
wxStaticText *m_result_nasserts_label;
wxTextCtrl *m_result_nasserts_text;
wxStaticText *m_result_nfailures_label;
wxTextCtrl *m_result_nfailures_text;
wxStaticBox *m_failure_listing_box;
wxTextCtrl *m_failure_listing_text;
wxSizer *m_page2sizer;
wxStaticText *m_run_summary_text;
wxTextCtrl *m_all_failure_listing_text;
bool m_suite_info_active;
bool m_test_info_active;
bool m_result_info_active;
bool m_failure_info_active;
static TopFrame *m_ActiveTopFrame; //< The active TopFrame, used in test run event handlers.
CU_RunSummary m_RunSummary_suite; //< For storing intermediate test run results.
CU_RunSummary m_RunSummary_test; //< For storing intermediate test run results.
bool m_option_colorize_tree_items; //< Flag for menu option.
bool m_option_fail_on_inactive; //< Flag for menu option.
bool m_test_run_complete; //< Flag for whether a test run has been completed
DECLARE_EVENT_TABLE()
};
IMPLEMENT_APP(CUnitApp)
enum
{
menu_FileExit = 1,
menu_ViewExpandAll,
menu_ViewCollapseAll,
menu_ViewColorizeTreeItems,
menu_OptionActivate,
menu_OptionActivateSelected,
menu_OptionActivateAllSuites,
menu_OptionActivateAll,
menu_OptionDeactivate,
menu_OptionDeactivateSelected,
menu_OptionDeactivateAllSuites,
menu_OptionDeactivateAll,
menu_OptionFailOnInactive,
menu_RunRunAll,
menu_HelpAbout,
checkbox_SuiteActive,
checkbox_TestActive,
tree_Listing,
};
BEGIN_EVENT_TABLE(TopFrame, wxFrame)
EVT_MENU(menu_FileExit, TopFrame::OnQuit)
EVT_MENU(menu_ViewExpandAll, TopFrame::OnTreeExpandAll)
EVT_MENU(menu_ViewCollapseAll, TopFrame::OnTreeCollapseAll)
EVT_MENU(menu_OptionActivateSelected, TopFrame::OnActivateSelected)
EVT_MENU(menu_OptionActivateAllSuites, TopFrame::OnActivateAllSuites)
EVT_MENU(menu_OptionActivateAll, TopFrame::OnActivateAll)
EVT_MENU(menu_OptionDeactivateSelected, TopFrame::OnDeactivateSelected)
EVT_MENU(menu_OptionDeactivateAllSuites, TopFrame::OnDeactivateAllSuites)
EVT_MENU(menu_OptionDeactivateAll, TopFrame::OnDeactivateAll)
EVT_MENU(menu_ViewColorizeTreeItems, TopFrame::OnOptionColorizeTreeItems)
EVT_MENU(menu_OptionFailOnInactive, TopFrame::OnOptionFailOnInactive)
EVT_MENU(menu_RunRunAll, TopFrame::OnRunAll)
EVT_MENU(menu_HelpAbout, TopFrame::OnAbout)
EVT_CLOSE( TopFrame::OnCloseWindow)
EVT_CHECKBOX(checkbox_SuiteActive, TopFrame::OnSuiteActiveCheckbox)
EVT_CHECKBOX(checkbox_TestActive, TopFrame::OnTestActiveCheckbox)
EVT_TREE_SEL_CHANGED(tree_Listing, TopFrame::OnTreeSelectionChanged)
END_EVENT_TABLE()
// wxTreeItemData descendent to hold a run data for a CU_pSuite or CU_pTest
// The pointer is only held and is never deleted by this class.
// This is just a data container, so make all members public.
class TreeCUnitRunData : public wxTreeItemData
{
public:
TreeCUnitRunData(void)
: nAsserts(0), nFailures(0), pFirstFailure(NULL) {}
unsigned long nAsserts;
unsigned long nFailures;
CU_pFailureRecord pFirstFailure;
};
// wxTreeItemData descendent to hold a CU_pSuite pointer
// The pointer is only held and is never deleted by this class.
// This is just a data container, so make all members public.
class TreeSuiteData : public TreeCUnitRunData
{
public:
TreeSuiteData(CU_pSuite pSuite)
: pSuite(pSuite), nTestsRun(0) {}
CU_pSuite pSuite;
unsigned long nTestsRun;
};
// wxTreeItemData descendent to hold a CU_pTest pointer
// The pointer is only held and is never deleted by this class.
// This is just a data container, so make all members public.
class TreeTestData : public TreeCUnitRunData
{
public:
TreeTestData(CU_pTest pTest)
: pTest(pTest) {}
CU_pTest pTest;
};
// Test whether an item is a suite (only has parent, not grandparent)
static bool isSuite(wxTreeCtrl *tree, wxTreeItemId &item)
{
bool result = false;
wxTreeItemId parent = tree->GetItemParent(item);
if ((true == parent.IsOk()) &&
(false == tree->GetItemParent(parent).IsOk())) {
result = true;
}
return result;
}
// Test whether an item is a test (has both parent and grandparent)
static bool isTest(wxTreeCtrl *tree, wxTreeItemId &item)
{
bool result = false;
wxTreeItemId parent = tree->GetItemParent(item);
if ((true == parent.IsOk()) &&
(true == tree->GetItemParent(parent).IsOk())) {
result = true;
}
return result;
}
// Format a suite tree item
static void FormatTreeItem_Suite(wxTreeCtrl *tree, wxTreeItemId &item, bool isActive)
{
assert(true == isSuite(tree, item));
if (true == isActive) {
tree->SetItemTextColour(item, wxColour("BLACK"));
tree->SetItemImage(item,
((true == tree->IsExpanded(item))
? TopFrame::TreeCtrlIcon_SuiteActiveOpen
: TopFrame::TreeCtrlIcon_SuiteActive),
wxTreeItemIcon_Normal);
}
else {
tree->SetItemTextColour(item, wxColour("FIREBRICK"));
tree->SetItemImage(item,
((true == tree->IsExpanded(item))
? TopFrame::TreeCtrlIcon_SuiteInactiveOpen
: TopFrame::TreeCtrlIcon_SuiteInactive),
wxTreeItemIcon_Normal);
}
}
// Format a test tree item
static void FormatTreeItem_Test(wxTreeCtrl *tree,
wxTreeItemId &item,
bool isActiveTest,
bool isActiveSuite)
{
if (true == isActiveTest) {
tree->SetItemTextColour(item, wxColour("BLACK"));
tree->SetItemImage(item,
((true == isActiveSuite)
? TopFrame::TreeCtrlIcon_TestActive
: TopFrame::TreeCtrlIcon_TestActiveSuiteInactive),
wxTreeItemIcon_Normal);
}
else {
tree->SetItemTextColour(item, wxColour("FIREBRICK"));
tree->SetItemImage(item,
((true == isActiveSuite)
? TopFrame::TreeCtrlIcon_TestInactive
: TopFrame::TreeCtrlIcon_TestInactiveSuiteInactive),
wxTreeItemIcon_Normal);
}
}
//* Base class for functors operating on a wxTreeCtrl element
struct TreeItemFunctorBase
{
//* Function returning true on success, false on failure
virtual bool func(wxTreeCtrl *WXUNUSED(tree), wxTreeItemId &WXUNUSED(item)) = 0;
};
//* Apply a functor to each suite in a wxTreeCtrl
static void ForEachSuite(wxTreeCtrl *tree, TreeItemFunctorBase &functor)
{
assert(NULL != tree);
wxTreeItemId item = tree->GetRootItem();
wxTreeItemIdValue cookie;
item = tree->GetFirstChild(item, cookie);
while (true == item.IsOk()) {
functor.func(tree, item);
item = tree->GetNextSibling(item);
}
}
//* Apply a functor to each test in the specified suite item in a wxTreeCtrl
static void ForEachTestInSuite(wxTreeCtrl *tree,
wxTreeItemId &suite_item,
TreeItemFunctorBase &test_functor)
{
assert(NULL != tree);
if (true == isSuite(tree, suite_item)) {
wxTreeItemIdValue cookie;
wxTreeItemId test_item = tree->GetFirstChild(suite_item, cookie);
while (true == test_item.IsOk()) {
test_functor.func(tree, test_item);
test_item = tree->GetNextChild(suite_item, cookie);
}
}
}
//* Apply a functor to each item in a wxTreeCtrl
static void ForEachSuiteAndTest(wxTreeCtrl *tree,
TreeItemFunctorBase &suite_functor,
TreeItemFunctorBase &test_functor)
{
assert(NULL != tree);
wxTreeItemId suite_item = tree->GetRootItem(); // note - not a suite yet, but will be
wxTreeItemIdValue cookie;
suite_item = tree->GetFirstChild(suite_item, cookie);
while (true == suite_item.IsOk()) {
suite_functor.func(tree, suite_item);
wxTreeItemId test_item = tree->GetFirstChild(suite_item, cookie);
while (true == test_item.IsOk()) {
test_functor.func(tree, test_item);
test_item = tree->GetNextChild(suite_item, cookie);
}
suite_item = tree->GetNextSibling(suite_item);
}
}
// Tree item functor - expands node
struct TreeItemFunctor_Expand : public TreeItemFunctorBase
{
virtual bool func(wxTreeCtrl *tree, wxTreeItemId &item)
{
assert(NULL != tree);
tree->Expand(item);
return true;
}
};
static TreeItemFunctor_Expand f_expand_item_functor;
// Tree item functor - collapses node
struct TreeItemFunctor_Collapse : public TreeItemFunctorBase
{
virtual bool func(wxTreeCtrl *tree, wxTreeItemId &item)
{
assert(NULL != tree);
tree->Collapse(item);
return true;
}
};
static TreeItemFunctor_Collapse f_collapse_item_functor;
// Tree item functor - activates a node if it is a suite
struct TreeItemFunctor_ActivateSuite : public TreeItemFunctorBase
{
virtual bool func(wxTreeCtrl *tree, wxTreeItemId &item)
{
TreeSuiteData *data = dynamic_cast(tree->GetItemData(item));
if (NULL != data) {
// activate the suite
data->pSuite->fActive = CU_TRUE;
// format the suite item in the tree
FormatTreeItem_Suite(tree, item, true);
// format each test item in the suite
wxTreeItemIdValue cookie;
wxTreeItemId test_item = tree->GetFirstChild(item, cookie);
while (true == test_item.IsOk()) {
TreeTestData *data = dynamic_cast(tree->GetItemData(test_item));
FormatTreeItem_Test(tree, test_item,
((NULL != data) ? (CU_TRUE == data->pTest->fActive) : true),
true);
test_item = tree->GetNextChild(item, cookie);
}
return true;
}
else {
return false;
}
}
};
static TreeItemFunctor_ActivateSuite f_activate_suite_item_functor;
// Tree item functor - deactivates a node if it is a suite
struct TreeItemFunctor_DeactivateSuite : public TreeItemFunctorBase
{
virtual bool func(wxTreeCtrl *tree, wxTreeItemId &item)
{
TreeSuiteData *data = dynamic_cast(tree->GetItemData(item));
if (NULL != data) {
// deactivate the suite
data->pSuite->fActive = CU_FALSE;
// format the suite item in the tree
FormatTreeItem_Suite(tree, item, false);
// format each test item in the suite
wxTreeItemIdValue cookie;
wxTreeItemId test_item = tree->GetFirstChild(item, cookie);
while (true == test_item.IsOk()) {
TreeTestData *data = dynamic_cast(tree->GetItemData(test_item));
FormatTreeItem_Test(tree, test_item,
((NULL != data) ? (CU_TRUE == data->pTest->fActive) : true),
false);
test_item = tree->GetNextChild(item, cookie);
}
return true;
}
else {
return false;
}
}
};
static TreeItemFunctor_DeactivateSuite f_deactivate_suite_item_functor;
// Tree item functor - activates a node if it is a test
struct TreeItemFunctor_ActivateTest : public TreeItemFunctorBase
{
virtual bool func(wxTreeCtrl *tree, wxTreeItemId &item)
{
TreeTestData *data = dynamic_cast(tree->GetItemData(item));
if (NULL != data) {
// activate the test
data->pTest->fActive = CU_TRUE;
// format the test item in the tree
TreeSuiteData *suitedata = dynamic_cast(tree->GetItemData(tree->GetItemParent(item)));
FormatTreeItem_Test(tree, item, true,
((NULL != suitedata) ? (CU_TRUE == suitedata->pSuite->fActive) : true));
return true;
}
else {
return false;
}
}
};
static TreeItemFunctor_ActivateTest f_activate_test_item_functor;
// Tree item functor - deactivates a node if it is a test
struct TreeItemFunctor_DeactivateTest : public TreeItemFunctorBase
{
virtual bool func(wxTreeCtrl *tree, wxTreeItemId &item)
{
TreeTestData *data = dynamic_cast(tree->GetItemData(item));
if (NULL != data) {
// deactivate the test
data->pTest->fActive = CU_FALSE;
// format the test item in the tree
TreeSuiteData *suitedata = dynamic_cast(tree->GetItemData(tree->GetItemParent(item)));
FormatTreeItem_Test(tree, item, false,
((NULL != suitedata) ? (CU_TRUE == suitedata->pSuite->fActive) : true));
return true;
}
else {
return false;
}
}
};
static TreeItemFunctor_DeactivateTest f_deactivate_test_item_functor;
// Tree item functor - clears the run stats for a node if it is a suite
struct TreeItemFunctor_ClearSuiteStats : public TreeItemFunctorBase
{
virtual bool func(wxTreeCtrl *tree, wxTreeItemId &item)
{
TreeSuiteData *data = dynamic_cast(tree->GetItemData(item));
if (NULL != data) {
data->nTestsRun = 0;
data->nAsserts = 0;
data->nFailures = 0;
data->pFirstFailure = NULL;
return true;
}
else {
return false;
}
}
};
static TreeItemFunctor_ClearSuiteStats f_clear_suite_stats_functor;
// Tree item functor - clears the run stats for a node if it is a test
struct TreeItemFunctor_ClearTestStats : public TreeItemFunctorBase
{
virtual bool func(wxTreeCtrl *tree, wxTreeItemId &item)
{
TreeTestData *data = dynamic_cast(tree->GetItemData(item));
if (NULL != data) {
data->nAsserts = 0;
data->nFailures = 0;
data->pFirstFailure = NULL;
return true;
}
else {
return false;
}
}
};
static TreeItemFunctor_ClearTestStats f_clear_test_stats_functor;
// Tree item functor - colorize the background color based on failure status
struct TreeItemFunctor_ColorizeItemBackground : public TreeItemFunctorBase
{
virtual bool func(wxTreeCtrl *tree, wxTreeItemId &item)
{
TreeCUnitRunData *data = dynamic_cast(tree->GetItemData(item));
assert(NULL != data);
tree->SetItemBackgroundColour(item, wxColour((data->nFailures > 0) ? "RED" : "GREEN"));
return true;
}
};
static TreeItemFunctor_ColorizeItemBackground f_colorize_item_background;
// Tree item functor - resets the background color to white
struct TreeItemFunctor_ResetItemBackgroundColor : public TreeItemFunctorBase
{
virtual bool func(wxTreeCtrl *tree, wxTreeItemId &item)
{
tree->SetItemBackgroundColour(item, wxColour("WHITE"));
return true;
}
};
static TreeItemFunctor_ResetItemBackgroundColor f_reset_item_background_color;
bool CUnitApp::OnInit()
{
TopFrame *frame = new TopFrame(_("CUnit Testing - wxWidgets Interface"),
wxPoint(50,50),
wxSize(450,340));
frame->CenterOnScreen();
frame->Show(true);
SetTopWindow(frame);
return true;
}
TopFrame *TopFrame::m_ActiveTopFrame = NULL;
void TopFrame::ClearPreviousStats(void)
{
CU_RunSummary initialized_summary = {0,0,0,0,0,0,0,0,0};
ForEachSuiteAndTest(m_treectrl, f_clear_suite_stats_functor, f_clear_test_stats_functor);
if (true == m_option_colorize_tree_items) {
ForEachSuiteAndTest(m_treectrl, f_reset_item_background_color, f_reset_item_background_color);
}
m_RunSummary_suite = initialized_summary;
m_RunSummary_test = initialized_summary;
}
void TopFrame::SetActiveTopFrame(TopFrame *frame)
{
m_ActiveTopFrame = frame;
}
wxTreeItemId TopFrame::FindSuite(CU_pSuite pSuite)
{
TreeSuiteData *data;
wxTreeItemIdValue cookie;
wxTreeItemId suite_item;
suite_item = m_treectrl->GetFirstChild(m_treectrl->GetRootItem(), cookie);
while (true == suite_item.IsOk()) {
data = dynamic_cast(m_treectrl->GetItemData(suite_item));
if (data->pSuite == pSuite) {
break;
}
suite_item = m_treectrl->GetNextSibling(suite_item);
}
return suite_item;
}
wxTreeItemId TopFrame::FindTest(CU_pSuite pSuite, CU_pTest pTest)
{
TreeTestData *data;
wxTreeItemIdValue cookie;
wxTreeItemId suite_item;
wxTreeItemId test_item;
suite_item = FindSuite(pSuite);
if (!suite_item.IsOk()) {
return suite_item;
}
test_item = m_treectrl->GetFirstChild(suite_item, cookie);
while (true == test_item.IsOk()) {
data = dynamic_cast(m_treectrl->GetItemData(test_item));
if (data->pTest == pTest) {
break;
}
test_item = m_treectrl->GetNextChild(suite_item, cookie);
}
return test_item;
}
void TopFrame::DeactivateSuiteInfo(void)
{
if (true == m_suite_info_active) {
m_suite_info_box->SetForegroundColour("LIGHT GRAY");
m_suite_info_box->Refresh();
m_suite_name_label->SetForegroundColour("LIGHT GRAY");
m_suite_name_label->Refresh();
m_suite_name_text->SetForegroundColour("LIGHT GRAY");
m_suite_name_text->Refresh();
m_suite_name_text->SetValue(_("n/a"));
m_suite_init_label->SetForegroundColour("LIGHT GRAY");
m_suite_init_label->Refresh();
m_suite_init_text->SetForegroundColour("LIGHT GRAY");
m_suite_init_text->Refresh();
m_suite_init_text->SetLabel(_("n/a"));
m_suite_clean_label->SetForegroundColour("LIGHT GRAY");
m_suite_clean_label->Refresh();
m_suite_clean_text->SetForegroundColour("LIGHT GRAY");
m_suite_clean_text->Refresh();
m_suite_clean_text->SetLabel(_("n/a"));
m_suite_active_box->SetForegroundColour("LIGHT GRAY");
m_suite_active_box->Refresh();
m_suite_active_box->Set3StateValue(wxCHK_UNDETERMINED);
m_suite_info_active = false;
}
}
void TopFrame::ActivateSuiteInfo(void)
{
if (false == m_suite_info_active) {
m_suite_info_box->SetForegroundColour("BLACK");
m_suite_info_box->Refresh();
m_suite_name_label->SetForegroundColour("BLACK");
m_suite_name_label->Refresh();
m_suite_name_text->SetForegroundColour("BLACKY");
m_suite_name_text->Refresh();
m_suite_init_label->SetForegroundColour("BLACK");
m_suite_init_label->Refresh();
m_suite_init_text->SetForegroundColour("BLACK");
m_suite_init_text->Refresh();
m_suite_clean_label->SetForegroundColour("BLACK");
m_suite_clean_label->Refresh();
m_suite_clean_text->SetForegroundColour("BLACK");
m_suite_clean_text->Refresh();
m_suite_active_box->SetForegroundColour("BLACK");
m_suite_active_box->Refresh();
m_suite_info_active = true;
}
}
void TopFrame::DeactivateTestInfo(void)
{
if (true == m_test_info_active) {
m_test_info_box->SetForegroundColour("LIGHT GRAY");
m_test_info_box->Refresh();
m_test_name_label->SetForegroundColour("LIGHT GRAY");
m_test_name_label->Refresh();
m_test_name_text->SetForegroundColour("LIGHT GRAY");
m_test_name_text->Refresh();
m_test_name_text->SetLabel(_("n/a"));
m_test_active_box->SetForegroundColour("LIGHT GRAY");
m_test_active_box->Refresh();
m_test_info_active = false;
}
}
void TopFrame::ActivateTestInfo(void)
{
if (false == m_test_info_active) {
m_test_info_box->SetForegroundColour("BLACK");
m_test_info_box->Refresh();
m_test_name_label->SetForegroundColour("BLACK");
m_test_name_label->Refresh();
m_test_name_text->SetForegroundColour("BLACK");
m_test_name_text->Refresh();
m_test_active_box->SetForegroundColour("BLACK");
m_test_active_box->Refresh();
m_test_active_box->Set3StateValue(wxCHK_UNDETERMINED);
m_test_info_active = true;
}
}
void TopFrame::DeactivateRunResultInfo(void)
{
if (true == m_result_info_active) {
m_result_box->SetForegroundColour("LIGHT GRAY");
m_result_box->Refresh();
m_result_ntests_label->SetForegroundColour("LIGHT GRAY");
m_result_ntests_label->Refresh();
m_result_ntests_text->SetForegroundColour("LIGHT GRAY");
m_result_ntests_text->Refresh();
m_result_ntests_text->SetValue(_("n/a"));
m_result_nasserts_label->SetForegroundColour("LIGHT GRAY");
m_result_nasserts_label->Refresh();
m_result_nasserts_text->SetForegroundColour("LIGHT GRAY");
m_result_nasserts_text->Refresh();
m_result_nasserts_text->SetValue(_("n/a"));
m_result_nfailures_label->SetForegroundColour("LIGHT GRAY");
m_result_nfailures_label->Refresh();
m_result_nfailures_text->SetForegroundColour("LIGHT GRAY");
m_result_nfailures_text->Refresh();
m_result_nfailures_text->SetValue(_("n/a"));
m_result_info_active = false;
}
if (true == m_failure_info_active) {
m_failure_listing_box->SetForegroundColour("LIGHT GRAY");
m_failure_listing_box->Refresh();
m_failure_info_active = false;
}
}
void TopFrame::ActivateRunResultInfo(void)
{
if (false == m_result_info_active) {
m_result_box->SetForegroundColour("BLACK");
m_result_box->Refresh();
m_result_ntests_label->SetForegroundColour("BLACK");
m_result_ntests_label->Refresh();
m_result_ntests_text->SetForegroundColour("BLACK");
m_result_ntests_text->Refresh();
m_result_nasserts_label->SetForegroundColour("BLACK");
m_result_nasserts_label->Refresh();
m_result_nasserts_text->SetForegroundColour("BLACK");
m_result_nasserts_text->Refresh();
m_result_nfailures_label->SetForegroundColour("BLACK");
m_result_nfailures_label->Refresh();
m_result_nfailures_text->SetForegroundColour("BLACK");
m_result_nfailures_text->Refresh();
m_result_info_active = true;
}
if (false == m_failure_info_active) {
m_failure_listing_box->SetForegroundColour("BLACK");
m_failure_listing_box->Refresh();
m_failure_info_active = true;
}
}
void TopFrame::WriteFailureRecords(wxTextCtrl *textctrl,
unsigned int nFailures,
CU_pFailureRecord pFailure,
bool reset)
{
static long failure_number = 0;
assert(NULL != textctrl);
if (true == reset) {
textctrl->Clear();
failure_number = 0;
}
for (unsigned int i=0 ; istrCondition) ? pFailure->strCondition : _(""))
<< "\n" << _("Suite: ")
<< (((NULL != pFailure->pSuite) &&
(NULL != pFailure->pSuite->pName)) ? pFailure->pSuite->pName : "")
<< "\n" << _("Test: ")
<< (((NULL != pFailure->pTest) &&
(NULL != pFailure->pTest->pName)) ? pFailure->pTest->pName : "")
<< "\n" << _("Source: ")
<< ((NULL != pFailure->strFileName) ? pFailure->strFileName : "")
<< "::" << (long)(pFailure->uiLineNumber) << "\n\n";
pFailure = pFailure->pNext;
}
}
textctrl->ShowPosition(0);
}
TopFrame::TopFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
: wxFrame((wxFrame *)NULL, -1, title, pos, size, wxDEFAULT_FRAME_STYLE),
m_option_colorize_tree_items(true),
m_option_fail_on_inactive(true),
m_test_run_complete(false),
m_suite_info_active(true), // set true so will be properly deactivated during function
m_test_info_active(true),
m_result_info_active(true),
m_failure_info_active(true)
{
wxBusyCursor wait;
// INITIALIZE THE MENU SYSTEM
// File menu
wxMenu *menuFile = new wxMenu;
menuFile->Append(menu_FileExit, _("E&xit"), _("Exit the program"));
// View menu
wxMenu *menuView = new wxMenu;
menuView->Append(menu_ViewExpandAll, _("Ex&pand all\tCtrl+P"), _("Expand all suite nodes"));
menuView->Append(menu_ViewCollapseAll, _("C&ollapse all\tCtrl+O"), _("Collapse all suite nodes"));
menuView->AppendSeparator();
menuView->AppendCheckItem(menu_ViewColorizeTreeItems,
_("Use &color"),
_("Change background colors to indicate run results."));
menuView->Check(menu_ViewColorizeTreeItems, true);
// Option menu
wxMenu *menuOption = new wxMenu;
menuOption->AppendCheckItem(menu_OptionFailOnInactive,
_("Fail on &Inactive"),
_("Generate failure events when an inactive suite or test is run."));
menuOption->Check(menu_OptionFailOnInactive, true);
menuOption->AppendSeparator();
wxMenu *menuOptionActivate = new wxMenu;
menuOptionActivate->Append(menu_OptionActivateSelected, _("&Item\tCtrl+A"), _("Activate the selected item"));
menuOptionActivate->Append(menu_OptionActivateAllSuites, _("&Suites"), _("Activate all suites"));
menuOptionActivate->Append(menu_OptionActivateAll, _("&All\tCtrl+Shift+A"), _("Activate all suites and tests"));
wxMenu *menuOptionDeactivate = new wxMenu;
menuOptionDeactivate->Append(menu_OptionDeactivateSelected, _("&Item\tCtrl+D"), _("Deactivate the selected item"));
menuOptionDeactivate->Append(menu_OptionDeactivateAllSuites, _("&Suites"), _("Deactivate all suites"));
menuOptionDeactivate->Append(menu_OptionDeactivateAll, _("&All\tCtrl+Shift+D"), _("Deactivate all suites and tests"));
menuOption->Append(menu_OptionActivateSelected, _("&Activate"), menuOptionActivate);
menuOption->Append(menu_OptionDeactivateSelected, _("&Deactivate"), menuOptionDeactivate);
// Run menu
wxMenu *menuRun = new wxMenu;
menuRun->Append(menu_RunRunAll, _("&Run all\tCtrl+r"), _("Run all registered suites"));
// Help menu
wxMenu *menuHelp = new wxMenu;
menuHelp->AppendSeparator();
menuHelp->Append(menu_HelpAbout, _("&About..."), _("About CUnit"));
// Apply menu bar to frame
wxMenuBar *menuBar = new wxMenuBar;
menuBar->Append(menuFile, _("&File"));
menuBar->Append(menuView, _("&View"));
menuBar->Append(menuOption, _("&Option"));
menuBar->Append(menuRun, _("&Run"));
menuBar->Append(menuHelp, _("&Help"));
SetMenuBar( menuBar );
// CREATE && INITIALIZE THE STATUS BAR
CreateStatusBar();
SetStatusText(_("Welcome to CUnit!"));
// CREATE & INITIALIZE IMAGE LIST FOR LISTING ICONS
wxImageList *images = new wxImageList(16, 16, true);
// should correspond to TreeCtrlIcon_xxx enum
images->Add(wxBitmap(wxBitmap(wxIcon(icon_suite_active_xpm)).ConvertToImage().Rescale(16, 16)));
images->Add(wxBitmap(wxBitmap(wxIcon(icon_suite_active_open_xpm)).ConvertToImage().Rescale(16, 16)));
images->Add(wxBitmap(wxBitmap(wxIcon(icon_suite_inactive_xpm)).ConvertToImage().Rescale(16, 16)));
images->Add(wxBitmap(wxBitmap(wxIcon(icon_suite_inactive_open_xpm)).ConvertToImage().Rescale(16, 16)));
images->Add(wxBitmap(wxBitmap(wxIcon(icon_test_active_xpm)).ConvertToImage().Rescale(16, 16)));
images->Add(wxBitmap(wxBitmap(wxIcon(icon_test_inactive_xpm)).ConvertToImage().Rescale(16, 16)));
images->Add(wxBitmap(wxBitmap(wxIcon(icon_test_active_suite_inactive_xpm)).ConvertToImage().Rescale(16, 16)));
images->Add(wxBitmap(wxBitmap(wxIcon(icon_test_inactive_suite_inactive_xpm)).ConvertToImage().Rescale(16, 16)));
// CREATE CONTROLS
wxSizer *topsizer = new wxBoxSizer(wxHORIZONTAL);
// create tree for suite & test listing and add to sizer
m_treectrl = new wxTreeCtrl(this,
tree_Listing,
wxDefaultPosition,
wxDefaultSize,
wxTR_DEFAULT_STYLE | wxTR_HIDE_ROOT );
m_treectrl->AssignImageList(images);
topsizer->Add(m_treectrl, 2, wxEXPAND | wxALL, 10);
// create a sizer to manage page 1 of the notebook
wxBoxSizer *page1sizer = new wxBoxSizer(wxVERTICAL);
wxNotebook *notebook = new wxNotebook(this, -1);
wxPanel *panelinfo = new wxPanel(notebook, -1);
this->SetBackgroundColour(notebook->GetBackgroundColour());
// create controls for suite information
m_suite_info_box = new wxStaticBox(panelinfo, -1, _("Suite Information"));
wxSizer *suiteinfosizer = new wxStaticBoxSizer(m_suite_info_box, wxVERTICAL);
wxSizer *bsizerH = new wxBoxSizer(wxHORIZONTAL);
m_suite_name_label = new wxStaticText(panelinfo, -1, _("Name:"),
wxDefaultPosition,
wxSize(75,-1),
wxALIGN_RIGHT);
bsizerH->Add(m_suite_name_label, 0, wxEXPAND | wxALL, 2);
m_suite_name_text = new wxTextCtrl(panelinfo, -1, _("n/a"),
wxDefaultPosition,
wxDefaultSize,
wxNO_BORDER | wxTE_READONLY);
m_suite_name_text->SetBackgroundColour(panelinfo->GetBackgroundColour());
bsizerH->Add(m_suite_name_text, 1, wxEXPAND | wxALL, 2);
suiteinfosizer->Add(bsizerH, 0, wxEXPAND | wxALL, 1);
bsizerH = new wxBoxSizer(wxHORIZONTAL);
m_suite_init_label = new wxStaticText(panelinfo, -1, _("Init Func?"),
wxDefaultPosition,
wxSize(75,-1),
wxALIGN_RIGHT);
bsizerH->Add(m_suite_init_label, 0, wxEXPAND | wxALL, 2);
m_suite_init_text = new wxStaticText(panelinfo, -1, _("n/a"),
wxDefaultPosition,
wxDefaultSize,
wxST_NO_AUTORESIZE);
bsizerH->Add(m_suite_init_text, 1, wxEXPAND | wxALL, 2);
suiteinfosizer->Add(bsizerH, 0, wxEXPAND | wxALL, 1);
bsizerH = new wxBoxSizer(wxHORIZONTAL);
m_suite_clean_label = new wxStaticText(panelinfo, -1, _("Cleanup Func?"),
wxDefaultPosition,
wxSize(75,-1),
wxALIGN_RIGHT);
bsizerH->Add(m_suite_clean_label, 0, wxEXPAND | wxALL, 2);
m_suite_clean_text = new wxStaticText(panelinfo, -1, _("n/a"),
wxDefaultPosition,
wxDefaultSize,
wxST_NO_AUTORESIZE);
bsizerH->Add(m_suite_clean_text, 1, wxEXPAND | wxALL, 2);
suiteinfosizer->Add(bsizerH, 0, wxEXPAND | wxALL, 1);
bsizerH = new wxBoxSizer(wxHORIZONTAL);
bsizerH->Add(25, 5, 0, wxGROW | wxALL, 2); // spacer
m_suite_active_box = new wxCheckBox(panelinfo,
checkbox_SuiteActive,
_("Active?"),
wxDefaultPosition,
wxDefaultSize,
wxCHK_3STATE | wxALIGN_RIGHT);
bsizerH->Add(m_suite_active_box, 0, wxALIGN_LEFT | wxEXPAND | wxALL, 1);
suiteinfosizer->Add(bsizerH, 0, wxEXPAND | wxALL, 1);
page1sizer->Add(suiteinfosizer, 0, wxEXPAND | wxALL, 1);
// create controls for test information
m_test_info_box = new wxStaticBox(panelinfo, -1, _("Test Information"));
wxSizer *testinfosizer = new wxStaticBoxSizer(m_test_info_box, wxVERTICAL);
bsizerH = new wxBoxSizer(wxHORIZONTAL);
m_test_name_label = new wxStaticText(panelinfo, -1, _("Name:"),
wxDefaultPosition,
wxSize(75,-1),
wxALIGN_RIGHT);
bsizerH->Add(m_test_name_label, 0, wxEXPAND | wxALL, 2);
m_test_name_text = new wxTextCtrl(panelinfo, -1, _("n/a"),
wxDefaultPosition,
wxDefaultSize,
wxNO_BORDER | wxTE_READONLY);
m_test_name_text->SetBackgroundColour(panelinfo->GetBackgroundColour());
bsizerH->Add(m_test_name_text, 1, wxEXPAND | wxALL, 2);
testinfosizer->Add(bsizerH, 0, wxEXPAND | wxALL, 1);
bsizerH = new wxBoxSizer(wxHORIZONTAL);
bsizerH->Add(25, 5, 0, wxGROW | wxALL, 1); // spacer
m_test_active_box = new wxCheckBox(panelinfo,
checkbox_TestActive,
_("Active?"),
wxDefaultPosition,
wxDefaultSize,
wxCHK_3STATE | wxALIGN_RIGHT);
bsizerH->Add(m_test_active_box, 0, wxALIGN_LEFT | wxEXPAND | wxALL, 1);
testinfosizer->Add(bsizerH, 0, wxEXPAND | wxALL, 1);
page1sizer->Add(testinfosizer, 0, wxEXPAND | wxALL, 1);
// create controls for run result information
m_result_box = new wxStaticBox(panelinfo, -1, _("Run Result Information"));
wxSizer *resultinfosizer = new wxStaticBoxSizer(m_result_box, wxVERTICAL);
bsizerH = new wxBoxSizer(wxHORIZONTAL);
m_result_ntests_label = new wxStaticText(panelinfo, -1, _("# Tests:"),
wxDefaultPosition,
wxSize(75,-1),
wxALIGN_RIGHT);
bsizerH->Add(m_result_ntests_label, 0, wxEXPAND | wxALL, 2);
m_result_ntests_text = new wxTextCtrl(panelinfo, -1, _("n/a"),
wxDefaultPosition,
wxDefaultSize,
wxNO_BORDER | wxTE_READONLY);
m_result_ntests_text->SetBackgroundColour(panelinfo->GetBackgroundColour());
bsizerH->Add(m_result_ntests_text, 1, wxEXPAND | wxALL, 2);
resultinfosizer->Add(bsizerH, 0, wxEXPAND | wxALL, 1);
bsizerH = new wxBoxSizer(wxHORIZONTAL);
m_result_nasserts_label = new wxStaticText(panelinfo, -1, _("# Asserts:"),
wxDefaultPosition,
wxSize(75,-1),
wxALIGN_RIGHT);
bsizerH->Add(m_result_nasserts_label, 0, wxEXPAND | wxALL, 2);
m_result_nasserts_text = new wxTextCtrl(panelinfo, -1, _("n/a"),
wxDefaultPosition,
wxDefaultSize,
wxNO_BORDER | wxTE_READONLY);
m_result_nasserts_text->SetBackgroundColour(panelinfo->GetBackgroundColour());
bsizerH->Add(m_result_nasserts_text, 1, wxEXPAND | wxALL, 2);
resultinfosizer->Add(bsizerH, 0, wxEXPAND | wxALL, 1);
bsizerH = new wxBoxSizer(wxHORIZONTAL);
m_result_nfailures_label = new wxStaticText(panelinfo, -1, _("# Failures:"),
wxDefaultPosition,
wxSize(75,-1),
wxALIGN_RIGHT);
bsizerH->Add(m_result_nfailures_label, 0, wxEXPAND | wxALL, 2);
m_result_nfailures_text = new wxTextCtrl(panelinfo, -1, _("n/a"),
wxDefaultPosition,
wxDefaultSize,
wxNO_BORDER | wxTE_READONLY);
m_result_nfailures_text->SetBackgroundColour(panelinfo->GetBackgroundColour());
bsizerH->Add(m_result_nfailures_text, 1, wxEXPAND | wxALL, 2);
resultinfosizer->Add(bsizerH, 0, wxEXPAND | wxALL, 1);
page1sizer->Add(resultinfosizer, 0, wxEXPAND | wxALL, 1);
// create controls for failure listing
m_failure_listing_box = new wxStaticBox(panelinfo, -1, _("Failure Listing"));
wxSizer *failurelistingsizer = new wxStaticBoxSizer(m_failure_listing_box, wxVERTICAL);
m_failure_listing_text = new wxTextCtrl(panelinfo, -1, "",
wxDefaultPosition,
wxDefaultSize,
wxTE_MULTILINE | wxTE_READONLY);
failurelistingsizer->Add(m_failure_listing_text, 1, wxEXPAND | wxALL, 1);
page1sizer->Add(failurelistingsizer, 1, wxEXPAND | wxALL, 1);
// add panelinfo to notebook
panelinfo->SetSizer(page1sizer);
notebook->AddPage(panelinfo, _("Info"), true);
// create a sizer to manage page 2 of the notebook
m_page2sizer = new wxBoxSizer(wxVERTICAL);
wxPanel *panelrunsummary = new wxPanel(notebook, -1);
// create controls to display run summary & failure listing
m_run_summary_text = new wxStaticText(panelrunsummary, -1, "",
wxDefaultPosition,
wxSize(75,-1),
wxALIGN_LEFT);
m_run_summary_text->SetFont(wxFont(notebook->GetFont().GetPointSize(),
wxFONTFAMILY_MODERN,
wxFONTSTYLE_NORMAL,
wxFONTWEIGHT_NORMAL));
m_page2sizer->Add(m_run_summary_text, 0, wxEXPAND | wxALL, 20);
wxSizer *allfailurelistingsizer = new wxStaticBoxSizer(wxVERTICAL, panelrunsummary, _("Failure Listing"));
m_all_failure_listing_text = new wxTextCtrl(panelrunsummary, -1, "",
wxDefaultPosition,
wxDefaultSize,
wxTE_MULTILINE | wxTE_READONLY);
allfailurelistingsizer->Add(m_all_failure_listing_text, 1, wxEXPAND | wxALL, 1);
m_page2sizer->Add(allfailurelistingsizer, 1, wxEXPAND | wxALL, 1);
// add panelrunsummary to notebook
panelrunsummary->SetSizer(m_page2sizer);
notebook->AddPage(panelrunsummary, _("Run Summary"), false);
// add notebook to topsizer
topsizer->Add(notebook, 3, wxEXPAND | wxALL, 10);
SetSizer(topsizer); // use the sizer for layout
topsizer->SetSizeHints(this); // set size hints to honour minimum size
DeactivateSuiteInfo();
DeactivateTestInfo();
DeactivateRunResultInfo();
// CREATE TESTS AND FILL IN TREE LISTING
if (CU_TRUE == create_tests()) {
CU_pTestRegistry pRegistry = CU_get_registry();
assert(NULL != pRegistry);
wxTreeItemId root_item = m_treectrl->AddRoot(_("Test Registry"));
CU_pSuite pSuite = pRegistry->pSuite;
while (NULL != pSuite) {
wxTreeItemId suite_item = m_treectrl->AppendItem(root_item,
pSuite->pName,
-1,
-1,
new TreeSuiteData(pSuite));
FormatTreeItem_Suite(m_treectrl, suite_item, (CU_TRUE == pSuite->fActive));
CU_pTest pTest = pSuite->pTest;
while (NULL != pTest) {
wxTreeItemId test_item = m_treectrl->AppendItem(suite_item,
pTest->pName,
-1,
-1,
new TreeTestData(pTest));
FormatTreeItem_Test(m_treectrl,
test_item,
(CU_TRUE == pTest->fActive),
(CU_TRUE == pSuite->fActive));
pTest = pTest->pNext;
}
pSuite = pSuite->pNext;
}
}
else {
wxMessageBox(_("Tests creation failed!"),
_("Test Creation Report"),
wxOK | wxICON_EXCLAMATION);
}
// MAKE SURE CUNIT OPTIONS COORDINATED WITH INTERFACE
CU_set_fail_on_inactive((true == m_option_fail_on_inactive) ? CU_TRUE : CU_FALSE);
}
void TopFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
Close(true);
}
void TopFrame::OnCloseWindow(wxCloseEvent& WXUNUSED(event))
{
if (CU_FALSE == destroy_tests()) {
wxMessageBox(_("Tests destruction failed!"),
_("Test Destruction Report"),
wxOK | wxICON_EXCLAMATION);
}
this->Destroy();
}
void TopFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{
static wxString msg;
if (msg.Len() == 0) {
msg << _("CUnit - A Unit Testing Framework for C") << "\n"
<< _("http://cunit.sourceforge.net/") << "\n\n"
<< _("Copyright (c) 2001-2006 Anil Kumar, Jerry St.Clair") << "\n\n"
<< _("Made with wxWidgets:") << "\n"
<< _("http://www.wxwidgets.org");
}
wxMessageBox(msg, _("About CUnit"), wxOK | wxICON_INFORMATION);
}
void TopFrame::OnTreeExpandAll(wxCommandEvent& WXUNUSED(event))
{
ForEachSuite(m_treectrl, f_expand_item_functor);
}
void TopFrame::OnTreeCollapseAll(wxCommandEvent& WXUNUSED(event))
{
ForEachSuite(m_treectrl, f_collapse_item_functor);
}
void TopFrame::OnTreeSelectionChanged(wxTreeEvent& event)
{
wxTreeItemId suite_item = event.GetItem();
wxTreeItemId test_item;
if (false == suite_item.IsOk()) {
DeactivateSuiteInfo();
DeactivateTestInfo();
DeactivateRunResultInfo();
return;
}
// Action depends on whether the item selected is a suite or test
if (isTest(m_treectrl, suite_item)) {
test_item = suite_item;
suite_item = m_treectrl->GetItemParent(test_item);
}
// fill in suite info
TreeSuiteData *data = dynamic_cast(m_treectrl->GetItemData(suite_item));
CU_pSuite pSuite = data->pSuite;
ActivateSuiteInfo();
m_suite_name_text->SetValue(pSuite->pName);
m_suite_init_text->SetLabel(wxString(((NULL != pSuite->pInitializeFunc) ? _("Yes") : _("No"))));
m_suite_clean_text->SetLabel(wxString(((NULL != pSuite->pCleanupFunc) ? _("Yes") : _("No"))));
m_suite_active_box->SetValue((CU_FALSE == pSuite->fActive) ? false : true);
if (false == m_test_run_complete) {
DeactivateRunResultInfo();
}
else {
ActivateRunResultInfo();
}
if (true == test_item.IsOk()) {
// selected item is a test - fill in test info
TreeTestData *data = dynamic_cast(m_treectrl->GetItemData(test_item));
CU_pTest pTest = data->pTest;
ActivateTestInfo();
// update test information
m_test_name_text->SetValue(pTest->pName);
m_test_active_box->SetValue((CU_FALSE == pTest->fActive) ? false : true);
// update run result information
if (true == m_test_run_complete) {
m_result_ntests_label->SetForegroundColour("LIGHT GRAY");
m_result_ntests_label->Refresh();
m_result_ntests_text->SetForegroundColour("LIGHT GRAY");
m_result_ntests_text->Refresh();
m_result_ntests_text->SetValue(_("n/a"));
wxString text;
text << data->nAsserts;
m_result_nasserts_text->SetValue(text);
text.Clear();
text << data->nFailures;
m_result_nfailures_text->SetValue(text);
if (0 == data->nFailures) {
m_failure_listing_text->SetValue("No failures.");
}
else {
WriteFailureRecords(m_failure_listing_text, data->nFailures, data->pFirstFailure, true);
}
}
}
else {
// a suite is selected - inactivate test information
DeactivateTestInfo();
// update result information for the suite
if (true == m_test_run_complete) {
m_result_ntests_label->SetForegroundColour("BLACK");
m_result_ntests_label->Refresh();
m_result_ntests_text->SetForegroundColour("BLACK");
m_result_ntests_text->Refresh();
wxString text;
text << data->nTestsRun;
m_result_ntests_text->SetValue(text);
text.Clear();
text << data->nAsserts;
m_result_nasserts_text->SetValue(text);
text.Clear();
text << data->nFailures;
m_result_nfailures_text->SetValue(text);
if (0 == data->nFailures) {
m_failure_listing_text->SetValue("No failures.");
}
else {
WriteFailureRecords(m_failure_listing_text, data->nFailures, data->pFirstFailure, true);
}
}
}
}
void TopFrame::OnActivateSelected(wxCommandEvent& WXUNUSED(event))
{
wxTreeItemId item = m_treectrl->GetSelection();
if (item.IsOk()) {
if (isSuite(m_treectrl, item)) {
f_activate_suite_item_functor.func(m_treectrl, item);
}
else {
f_activate_test_item_functor.func(m_treectrl, item);
}
m_treectrl->SelectItem(item); // re-select item to make sure display is updated
}
}
void TopFrame::OnDeactivateSelected(wxCommandEvent& WXUNUSED(event))
{
wxTreeItemId item = m_treectrl->GetSelection();
if (item.IsOk()) {
if (isSuite(m_treectrl, item)) {
f_deactivate_suite_item_functor.func(m_treectrl, item);
}
else {
f_deactivate_test_item_functor.func(m_treectrl, item);
}
m_treectrl->SelectItem(item); // re-select item to make sure display is updated
}
}
void TopFrame::OnActivateAllSuites(wxCommandEvent& WXUNUSED(event))
{
ForEachSuite(m_treectrl, f_activate_suite_item_functor);
m_treectrl->SelectItem(m_treectrl->GetSelection()); // make sure display is updated
}
void TopFrame::OnDeactivateAllSuites(wxCommandEvent& WXUNUSED(event))
{
ForEachSuite(m_treectrl, f_deactivate_suite_item_functor);
m_treectrl->SelectItem(m_treectrl->GetSelection()); // make sure display is updated
}
void TopFrame::OnActivateAll(wxCommandEvent& WXUNUSED(event))
{
ForEachSuiteAndTest(m_treectrl,
f_activate_suite_item_functor,
f_activate_test_item_functor);
m_treectrl->SelectItem(m_treectrl->GetSelection()); // make sure display is updated
}
void TopFrame::OnDeactivateAll(wxCommandEvent& WXUNUSED(event))
{
ForEachSuiteAndTest(m_treectrl,
f_deactivate_suite_item_functor,
f_deactivate_test_item_functor);
m_treectrl->SelectItem(m_treectrl->GetSelection()); // make sure display is updated
}
void TopFrame::OnRunAll(wxCommandEvent& WXUNUSED(event))
{
// set up CUnit test run message handlers
CU_set_suite_start_handler(&TopFrame::SuiteStartMessageHandler);
CU_set_test_start_handler(&TopFrame::TestStartMessageHandler);
CU_set_test_complete_handler(&TopFrame::TestCompleteMessageHandler);
CU_set_suite_complete_handler(&TopFrame::SuiteCompleteMessageHandler);
// this is the active TopFrame to be updated with run results
m_ActiveTopFrame = this;
// clear previous stats and run tests
ClearPreviousStats();
CU_run_all_tests();
m_test_run_complete = true;
m_treectrl->SelectItem(m_treectrl->GetSelection()); // trigger updating the results info
// fill in run summary results
char *summary_cstring = CU_get_run_results_string();
wxString summary_string(summary_cstring);
summary_string << "\n" << _("Failure count = ") << CU_get_number_of_failure_records();
CU_FREE(summary_cstring);
m_run_summary_text->SetLabel(summary_string);
if (0 == CU_get_number_of_failure_records()) {
m_all_failure_listing_text->SetValue("No failures.");
}
else {
WriteFailureRecords(m_all_failure_listing_text,
CU_get_number_of_failure_records(),
CU_get_failure_list(),
true);
}
m_page2sizer->Layout();
}
void TopFrame::OnOptionColorizeTreeItems(wxCommandEvent& event)
{
if (event.IsChecked() && (false == m_option_colorize_tree_items)) {
m_option_colorize_tree_items = true;
if (m_test_run_complete) {
ForEachSuiteAndTest(m_treectrl, f_colorize_item_background, f_colorize_item_background);
}
}
else if (!event.IsChecked() && (true == m_option_colorize_tree_items)) {
m_option_colorize_tree_items = false;
if (m_test_run_complete) {
ForEachSuiteAndTest(m_treectrl, f_reset_item_background_color, f_reset_item_background_color);
}
}
}
void TopFrame::OnOptionFailOnInactive(wxCommandEvent& event)
{
if (event.IsChecked() && (false == m_option_fail_on_inactive)) {
m_option_fail_on_inactive = true;
CU_set_fail_on_inactive(CU_TRUE);
}
else if (!event.IsChecked() && (true == m_option_colorize_tree_items)) {
m_option_fail_on_inactive = false;
CU_set_fail_on_inactive(CU_FALSE);
}
}
void TopFrame::OnSuiteActiveCheckbox(wxCommandEvent& event)
{
wxTreeItemId suite_item = m_treectrl->GetSelection();
if ((true == m_suite_info_active) && (true == suite_item.IsOk())) {
// If a test is selected, act on it's suite
if (isTest(m_treectrl, suite_item)) {
suite_item = m_treectrl->GetItemParent(suite_item);
}
CU_pSuite pSuite = dynamic_cast(m_treectrl->GetItemData(suite_item))->pSuite;
pSuite->fActive = (true == event.IsChecked()) ? CU_TRUE : CU_FALSE;
}
else {
m_suite_active_box->Set3StateValue(wxCHK_UNDETERMINED);
}
}
void TopFrame::OnTestActiveCheckbox(wxCommandEvent& event)
{
wxTreeItemId test_item = m_treectrl->GetSelection();
if ((true == m_test_info_active) && (true == test_item.IsOk())) {
CU_pTest pTest = dynamic_cast(m_treectrl->GetItemData(test_item))->pTest;
pTest->fActive = (true == event.IsChecked()) ? CU_TRUE : CU_FALSE;
}
else {
m_test_active_box->Set3StateValue(wxCHK_UNDETERMINED);
}
}
void TopFrame::SuiteStartMessageHandler(const CU_pSuite pSuite)
{
CU_UNREFERENCED_PARAMETER(pSuite);
assert(NULL != m_ActiveTopFrame);
m_ActiveTopFrame->m_RunSummary_suite = *(CU_get_run_summary());
}
void TopFrame::TestStartMessageHandler(const CU_pTest pTest, const CU_pSuite pSuite)
{
CU_UNREFERENCED_PARAMETER(pTest);
CU_UNREFERENCED_PARAMETER(pSuite);
assert(NULL != m_ActiveTopFrame);
m_ActiveTopFrame->m_RunSummary_test = *(CU_get_run_summary());
}
void TopFrame::TestCompleteMessageHandler(const CU_pTest pTest,
const CU_pSuite pSuite,
const CU_pFailureRecord pFailure)
{
assert(NULL != m_ActiveTopFrame);
wxTreeItemId test_item = m_ActiveTopFrame->FindTest(pSuite, pTest);
if (test_item.IsOk()) {
TopFrame *frame = m_ActiveTopFrame;
wxTreeCtrl *tree = frame->m_treectrl;
TreeTestData *data = dynamic_cast(tree->GetItemData(test_item));
data->nAsserts = CU_get_number_of_asserts() - frame->m_RunSummary_test.nAsserts;
data->nFailures = CU_get_number_of_failure_records() - frame->m_RunSummary_test.nFailureRecords;
data->pFirstFailure = pFailure;
if (true == frame->m_option_colorize_tree_items) {
f_colorize_item_background.func(tree, test_item);
}
}
}
void TopFrame::SuiteCompleteMessageHandler(const CU_pSuite pSuite,
const CU_pFailureRecord pFailure)
{
assert(NULL != m_ActiveTopFrame);
wxTreeItemId suite_item = m_ActiveTopFrame->FindSuite(pSuite);
if (suite_item.IsOk()) {
TopFrame *frame = m_ActiveTopFrame;
wxTreeCtrl *tree = frame->m_treectrl;
TreeSuiteData *data = dynamic_cast(tree->GetItemData(suite_item));
data->nTestsRun = CU_get_number_of_tests_run() - frame->m_RunSummary_suite.nTestsRun;
data->nAsserts = CU_get_number_of_asserts() - frame->m_RunSummary_suite.nAsserts;
data->nFailures = CU_get_number_of_failure_records() - frame->m_RunSummary_suite.nFailureRecords;
data->pFirstFailure = pFailure;
if (true == frame->m_option_colorize_tree_items) {
f_colorize_item_background.func(tree, suite_item);
}
}
}
/*
void TopFrame::OnButtonOk(wxCommandEvent& WXUNUSED(event))
{
wxString report;
wxTreeItemId item = m_treectrl->GetSelection();
if (isSuite(m_treectrl, item)) {
TreeSuiteData *data = dynamic_cast(m_treectrl->GetItemData(item));
report << "Suite run summany:\n\n"
<< "Suite name: " << data->pSuite->pName << "\n"
<< "# Tests run: " << data->nTestsRun << "\n"
<< "# Asserts: " << data->nAsserts << "\n"
<< "# Failures: " << data->nFailures;
}
else if (isTest(m_treectrl, item)) {
TreeTestData *data = dynamic_cast(m_treectrl->GetItemData(item));
report << "Test run summany:\n\n"
<< "Test name: " << data->pTest->pName << "\n"
<< "# Asserts: " << data->nAsserts << "\n"
<< "# Failures: " << data->nFailures;
}
wxMessageBox(report, "Run summary for selected node", wxOK);
}
void TopFrame::OnButtonCancel(wxCommandEvent& WXUNUSED(event))
{
}
*/
/** @} */
cunit-2.1-3-dfsg/ChangeLog 0000664 0000000 0000000 00000033066 12607012350 0015335 0 ustar 00root root 0000000 0000000 * Wed Apr 23 2014 Anil Kumar
- Ability to build with a non-source directory build root
- Fixed files included in the download source file
* Tue Oct 14 2010 Martin Gerhardy
- release 2.1.1
* Wed Oct 13 2010 Martin Gerhardy
- fixed bug #2976958
- fixed other const related warnings
* Wed May 10 2006 Jerry St.Clair
- modified dtd and xsl files to support inactive suites/tests.
- instrumented entire framework/interfaces for gettext
(not activated yet, just instrumented source).
* Sun Apr 30 2006 Jerry St.Clair
- Added ability to deactivate suite/tests dynamically.
- Removed constraint that suite/test names be unique.
- Added lookup functions to TestDB.[ch]
- Changed test run behavior so suite is run even if it has
no tests - user may expect init & cleanup functions to
be run as long as suite is active.
- Modified console: suites/tests selected by number,
inactive tests/suites reported, added help function,
added option menu.
- Modified curses: suites/tests selected by number,
inactive tests/suites reported, added help function,
added option menu.
- Modified automated: inactive suites/tests reported.
- Modified docs and internal unit tests for these changes.
- Moved doxygen comments for public functions to headers.
This will make them more accessible to clients without
having to generate doxygen docs.
* Wed Mar 22 2006 Jerry St.Clair
- release 2.1.0
* Sat Mar 17 2006 Jerry St.Clair
- Finalized upgrade of configure.in, Makefile.am.
- Upgraded Jamfile set to build shared library on Linux.
- Minor changes to repository management strategy.
* Mon Feb 13 2006 Anil Kumar (anilsaharan@users.sourceforge.net)
- Modified XSL for bgcolor properties and other tags
* Sun Jan 28 2006 Jerry St.Clair
- Upgraded source based on splint analysis.
- Added VC8 project file set.
- Changed defaults of some options in configure.in.
- Added variables to configure.in and upgraded Jamrules.in conversion.
- Updated copyright & change log information in source files.
* Wed Aug 03 2005 Anil Kumar
- Applied patch (1239181) for building shared library targets.
- Applied patch (1250604) for enable options in configure.in.
- Modified Makefile.am in various directories for conditional
building based on the configuration options selection. Added
new selections for the Basic and Console also.
* Sun May 08 2005 Jerry St.Clair
- Added 'CU_' prefix to BOOL, TRUE, FALSE in Headers/CUnit.h.
- Added jam system option to build dll's on Windows.
* Sun May 01 2005 Jerry St.Clair
- Added callback for suite cleanup failure to TestRun.
- Added processing of suite failure to interfaces.
- Added output of version number from interfaces.
* Sun Apr 24 2005 Jerry St.Clair
- Streamlined jam build system.
- jam now builds in compiler- and debug-specific subdirectories.
- Bug fixes:
- minor errors in doc/managing_tests.html. (cunit-Bugs-1161520)
- fixed CU_ADD_TEST() macro definition in TestDB.h.
(cunit-Bugs-1161527)
- changed header Curses.h to CUCurses.h to avoid conflict
with system curses.h on Windows. (cunit-Bugs-1185382)
- removed const qualifier from CU_get_failure_list() and
and CU_get_run_summary() return values. (cunit-Bugs-1106644)
* Sun Jan 08 2005 Jerry St.Clair
- Bug fix: failures reported incorrectly in Basic interface
from basic.c::basic_test_complete_message_handler()
(bug report cunit-Bugs-1093861).
* Sat Oct 02 2004 Jerry St.Clair
- Bug fix: update pReg after registry intialization in
TestDB.c::test_CU_add_test().
* Sun Sep 26 2004 Jerry St.Clair
- Bug fixes found in internal unit testing.
- Update Linux build files.
- Add Visual Studio 2003/VC7 solution & project files.
* Sun Sep 19 2004 Jerry St.Clair
- Changed test message handlers to pass test and suite (not
just their names). This is for future use.
- Clarified behavior of CU_translate_special_characters() when
szDest is too small to hold converted string (found in testing!).
- Split out suite and test creation into distinct functions
create_suite() & create_test() in TestDB.c.
- Moved CU_get_suite_by_name() & CU_get_test_by_name() to TestDB.
- Removed need for registry to be initialized for CU_run_suite() and
CU_run_test() in TestRun.c (registry no longer holds result info,
so this dependence is no longer needed).
- Provided functions to turn on & off memory allocation in MyMem.c
for use in internal testing.
- Initial implementation of internal CUnit testing.
- Implement modified registration system (based on Cheung/Aurema code).
* Wed Sep 01 2004 Jerry St.Clair
- Implemented setjmp/longjmp mechanism for aborting test runs.
- Add assertion to CU_assertImplementation() to trap calls
outside a registered test function during a test run.
- Added CU_PASS and CU_FAIL to assertions in CUnit.h.
* Sat Aug 28 2004 Jerry St.Clair
- Html documentation implemented.
- Jamfile and Makefile.am included for html doc installation.
* Sat Aug 21 2004 Jerry St.Clair
- initial implementation of jds-v2-expt experimental version
containing the following changes.
Wed 18-Aug-2004 Jerry St.Clair
- Updated manpages, consolidating all docs in CUnit.3.
- Jamfiles now only install lib, headers, man, and docs.
- Initial shot at having configure generate custom Jamrules
from Jamrules.in.
- Library & examples now build on Linux (Mandrake 9.1).
Wed 11-Aug-2004 Jerry St.Clair
- Added new Basic interface and example.
Sun 8-Aug-2004 Jerry St.Clair
- Bug had been introduced when test functions were allowed to have
more than one assertion failure (in v1.1-1 a failed assertion would
always return, so max failure = 1). The automated result file
was not writing any failure records except the last one. Fixed
by changing the behavior of TestRun::run_single_test so that it
now sends a pointer to the 1st failure record belonging to the
test in question. The handler then only has to walk the rest
of the linked list to visit all failures for its test.
- Consolidated all test result handling in TestRun. This included
moving the failure list head out of CU_TestRegistry into a static
variable in TestRun.c and moving assertImplementation into TestRun.c.
- Created a structure (CU_RunSummary) and static variable in TestRun.c
to hold the run counts and head of the failure record list.
- Added tracking of assertions in addition to tests and suites. The
counts are now reported in Automated, Console, and Curses.
- Added function for retrieval of the entire run summary at once.
- Consolidated example test functions in a single function called
by each of the example interface programs. Modified Jamfiles.
- Made all curses constants & functions static.
Fri 30-Jul-2004 Jerry St.Clair
- Created new function CU_list_all_to_file() in Automated.c
to allow users & other modules to generate a test list file.
Consolidated automated_list_all_tests() and
automated_list_group_tests() into this new function.
- Changed default output file root to "CUnitTest" and name endings
for xml files to "-Listing.xml" and "-Results.xml". This makes
the names more generic and descriptive.
- CU_automated_run_tests no longer automatically generates a
listing file. Users should generate a listing explicitly
when needed.
- Added assertion to protect against file writes when the
file pointer is NULL.
- xml bug fixes based on xml validation report (
must come before in Automated.c; wrong
top element in document type declaration, incorrect element
ordering in in MyMem.c).
Tue 27-Jul-2004 Jerry St.Clair
- fixed bugs in converted curses.c, MyMem.c
- removed f_bCleanupResultSet from TestRun.c, since presence of
results to be cleaned is indicated by non-null pRegistry->pResult.
Sun 18-Jul-2004 Jerry St.Clair
- Provided a set of jam build files
(ftjam preferred - http://www.freetype.org/jam/index.html)
which build on Linux and Windows (Borland and VC++7).
- Converted all public names to CU_ prefixed names to minimize potential
for name clashes with client code.
- Provided support for old interface names when needed.
- Modified terminology: 'Test Group' = 'Suite', 'Test Case' = 'Test'.
Changed function & variable names, comments, DTD, and xml output to reflect
the new terminology.
- Eliminated global variables (except in deprecated interface).
- Fixed direct references to 'global' test registry (mostly in TestDB.c)
in cases where a specified pRegistry is meant to be used.
- Changed CU_set_registry() so that existing registry is not destroyed. The
functions running suites in the interface modules (automated, console,
curses) take a pRegistry argument which was being ignored. These functions
now set the registry (if it is different from the active one) and
restore it after the tests are complete.
- Added functions for creating and destroying a test registry independent
of the CUnit internal system. Convenience, mostly for testing.
- Added assertions preventing modification of the test registry during a test run.
- Moved add_failure prototype to TestRun.h since implemented in TestRun.c.
- Changed 'Errno.h' to 'CUError.h' to avoid confusion with standard header.
- Error codes made an enum CU_ErrorCode. Changed signatures of functions
returning an error code accordingly.
- Moved all error-related code to new source file 'CUError.c'.
- Made all local functions & callbacks static to minimize global names.
- Modified assertions so that standard assertions do not include a 'return'
statement. Provided new assertions with '_FATAL' suffix to allow user
to request this when test function should return on a failure.
- Modified XSL for list to more compact format.
- Restructured memory tracking code so reallocations and multiple deletions tracked.
- CU_dump_memory_usage now takes an argument specifying the filename for the
memory dump output. The original version always overwrote the same output
file, making tracking multiple dumps difficult. A default filename is used
if a NULL or empty char* is specified.
- Modified DTD and XSL for memory dump output to reflect new structure.
- Initial doxygen comments added to code, and 'Doxyfile' configuration file
added to base directory.
- Restructured code to be more top-down (still have multiple returns in
a couple of cases).
- Provided default file name to automated interface in case user doesn't specify one.
- Modified Automated::CU_set_output_filename to avoid buffer overrun for large szFileName.
- Converted Examples to new interface. Old examples renamed 'xxx_v1.c' and
building of the old examples under the deprecated interface added to Jam files.
- Modified makefile.am set to reflect above changes (not working yet).
* Sat Jul 26 2003 Anil Kumar
- Applied a patch for correct XML output for first/last group display.
* Mon Mar 17 2003 Anil Kumar
- Added Macro's for different kind of comparisons.
* Tue Jul 23 2002 Anil Kumar
- Changed HTML to XML Format file generation for Automated Tests.
* Tue Jun 25 2002 Anil Kumar
- Added Memory Tracing Functions to check if there is any unreleased Memory.
* Sat Apr 07 2002 Anil Kumar
- Added #ifdef conditions to include extern "C" linkage directive in the header files.
- Corrected Makefile.am for Headers Directory.
* Sun Mar 24 2002 Anil Kumar
- Added interface for automated run test. It generates HTML file.
* Sun Feb 03 2002 Anil Kumar
- Made modifications for moving RPM Creation in the root directory.
- Cleaned up configure.in for checks not required and added some additonal header and library checks.
- Made separate options for gzip, tar, zip and rpm creation in root directory.
- Fixed Workspace file for Windows Build.
* Sun Dec 23 2001 Anil Kumar
- Made modifications for change in Directory Structure and Linking Options.
- Included GPL Headers in all the files.
* Sun Nov 25 2001 Anil Kumar
- Added Curses based interface to the Package.
- Modified some options for the Console Based Interface.
* Sun Oct 28 2001 Anil Kumar
- Integrated RPM creation in the package configuration.
* Sun Oct 21 2001 Anil Kumar
- Added a few Error Codes and respective description.
- Added code for handling duplicate group/test name.
cunit-2.1-3-dfsg/Doxyfile 0000664 0000000 0000000 00000020020 12607012350 0015253 0 ustar 00root root 0000000 0000000 # Doxyfile 1.3.9.1
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = "CUnit Programmers Reference"
PROJECT_NUMBER = 2.0-2
OUTPUT_DIRECTORY = ./doc
CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English
USE_WINDOWS_ENCODING = NO
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ABBREVIATE_BRIEF =
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = NO
STRIP_FROM_PATH =
STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = YES
MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP = YES
INHERIT_DOCS = YES
DISTRIBUTE_GROUP_DOC = NO
TAB_SIZE = 8
ALIASES =
OPTIMIZE_OUTPUT_FOR_C = YES
OPTIMIZE_OUTPUT_JAVA = NO
SUBGROUPING = YES
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
EXTRACT_ALL = NO
EXTRACT_PRIVATE = YES
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = NO
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO
HIDE_IN_BODY_DOCS = NO
INTERNAL_DOCS = NO
CASE_SENSE_NAMES = YES
HIDE_SCOPE_NAMES = NO
SHOW_INCLUDE_FILES = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
SORT_BRIEF_DOCS = NO
SORT_BY_SCOPE_NAME = NO
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = YES
SHOW_DIRECTORIES = YES
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
QUIET = NO
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = ./CUnit
FILE_PATTERNS = *.c \
*.h
RECURSIVE = YES
EXCLUDE = ./CUnit/Sources/Win
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = NO
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
VERBATIM_HEADERS = YES
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = NO
COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = YES
HTML_OUTPUT = html
HTML_FILE_EXTENSION = .html
HTML_HEADER =
HTML_FOOTER =
HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
CHM_FILE =
HHC_LOCATION =
GENERATE_CHI = NO
BINARY_TOC = NO
TOC_EXPAND = NO
DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = NO
TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
GENERATE_LATEX = NO
LATEX_OUTPUT = latex
LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
COMPACT_LATEX = NO
PAPER_TYPE = a4wide
EXTRA_PACKAGES =
LATEX_HEADER =
PDF_HYPERLINKS = NO
USE_PDFLATEX = NO
LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
GENERATE_RTF = NO
RTF_OUTPUT = rtf
COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
GENERATE_MAN = NO
MAN_OUTPUT = man
MAN_EXTENSION = .3
MAN_LINKS = NO
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = NO
XML_OUTPUT = xml
XML_SCHEMA =
XML_DTD =
XML_PROGRAMLISTING = YES
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# configuration options related to the Perl module output
#---------------------------------------------------------------------------
GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO
PERLMOD_PRETTY = YES
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED = USE_DEPRECATED_CUNIT_NAMES
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::additions related to external references
#---------------------------------------------------------------------------
TAGFILES =
GENERATE_TAGFILE =
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO
CLASS_GRAPH = NO
COLLABORATION_GRAPH = YES
UML_LOOK = NO
TEMPLATE_RELATIONS = NO
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES
CALL_GRAPH = NO
GRAPHICAL_HIERARCHY = YES
DOT_IMAGE_FORMAT = png
DOT_PATH =
DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 1024
MAX_DOT_GRAPH_HEIGHT = 1024
MAX_DOT_GRAPH_DEPTH = 0
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
# Configuration::additions related to the search engine
#---------------------------------------------------------------------------
SEARCHENGINE = NO
cunit-2.1-3-dfsg/Examples/ 0000775 0000000 0000000 00000000000 12607012350 0015331 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/Examples/.deps/ 0000775 0000000 0000000 00000000000 12607012350 0016342 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/Examples/.deps/ExampleTests.Po 0000664 0000000 0000000 00000012361 12607012350 0021263 0 ustar 00root root 0000000 0000000 ExampleTests.o: ExampleTests.c /usr/include/stdio.h \
/usr/include/sys/cdefs.h /usr/include/sys/_symbol_aliasing.h \
/usr/include/sys/_posix_availability.h /usr/include/Availability.h \
/usr/include/AvailabilityInternal.h /usr/include/_types.h \
/usr/include/sys/_types.h /usr/include/machine/_types.h \
/usr/include/i386/_types.h /usr/include/sys/_types/_va_list.h \
/usr/include/sys/_types/_size_t.h /usr/include/sys/_types/_null.h \
/usr/include/sys/_types/_off_t.h /usr/include/sys/_types/_ssize_t.h \
/usr/include/secure/_stdio.h /usr/include/secure/_common.h \
/usr/include/stdlib.h /usr/include/sys/wait.h \
/usr/include/sys/_types/_pid_t.h /usr/include/sys/_types/_id_t.h \
/usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \
/usr/include/machine/signal.h /usr/include/i386/signal.h \
/usr/include/machine/_mcontext.h /usr/include/i386/_mcontext.h \
/usr/include/mach/i386/_structs.h \
/usr/include/sys/_types/_sigaltstack.h \
/usr/include/sys/_types/_ucontext.h \
/usr/include/sys/_types/_pthread_attr_t.h \
/usr/include/sys/_types/_sigset_t.h /usr/include/sys/_types/_uid_t.h \
/usr/include/sys/resource.h \
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h \
/usr/include/stdint.h /usr/include/sys/_types/_int8_t.h \
/usr/include/sys/_types/_int16_t.h /usr/include/sys/_types/_int32_t.h \
/usr/include/sys/_types/_int64_t.h /usr/include/_types/_uint8_t.h \
/usr/include/_types/_uint16_t.h /usr/include/_types/_uint32_t.h \
/usr/include/_types/_uint64_t.h /usr/include/sys/_types/_intptr_t.h \
/usr/include/sys/_types/_uintptr_t.h /usr/include/_types/_intmax_t.h \
/usr/include/_types/_uintmax_t.h /usr/include/sys/_types/_timeval.h \
/usr/include/machine/endian.h /usr/include/i386/endian.h \
/usr/include/sys/_endian.h /usr/include/libkern/_OSByteOrder.h \
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
/usr/include/sys/_types/_ct_rune_t.h /usr/include/sys/_types/_rune_t.h \
/usr/include/sys/_types/_wchar_t.h /usr/include/machine/types.h \
/usr/include/i386/types.h /usr/include/sys/_types/___offsetof.h \
/usr/include/sys/_types/_dev_t.h /usr/include/sys/_types/_mode_t.h \
/usr/include/string.h /usr/include/strings.h \
/usr/include/secure/_string.h /usr/include/assert.h \
/Users/aks/code/os/cunit/cunit/CUnit/Headers/CUnit.h \
/usr/include/math.h \
/Users/aks/code/os/cunit/cunit/CUnit/Headers/CUError.h \
/usr/include/errno.h /usr/include/sys/errno.h \
/Users/aks/code/os/cunit/cunit/CUnit/Headers/TestDB.h \
/usr/include/setjmp.h \
/Users/aks/code/os/cunit/cunit/CUnit/Headers/TestRun.h ExampleTests.h
/usr/include/stdio.h:
/usr/include/sys/cdefs.h:
/usr/include/sys/_symbol_aliasing.h:
/usr/include/sys/_posix_availability.h:
/usr/include/Availability.h:
/usr/include/AvailabilityInternal.h:
/usr/include/_types.h:
/usr/include/sys/_types.h:
/usr/include/machine/_types.h:
/usr/include/i386/_types.h:
/usr/include/sys/_types/_va_list.h:
/usr/include/sys/_types/_size_t.h:
/usr/include/sys/_types/_null.h:
/usr/include/sys/_types/_off_t.h:
/usr/include/sys/_types/_ssize_t.h:
/usr/include/secure/_stdio.h:
/usr/include/secure/_common.h:
/usr/include/stdlib.h:
/usr/include/sys/wait.h:
/usr/include/sys/_types/_pid_t.h:
/usr/include/sys/_types/_id_t.h:
/usr/include/sys/signal.h:
/usr/include/sys/appleapiopts.h:
/usr/include/machine/signal.h:
/usr/include/i386/signal.h:
/usr/include/machine/_mcontext.h:
/usr/include/i386/_mcontext.h:
/usr/include/mach/i386/_structs.h:
/usr/include/sys/_types/_sigaltstack.h:
/usr/include/sys/_types/_ucontext.h:
/usr/include/sys/_types/_pthread_attr_t.h:
/usr/include/sys/_types/_sigset_t.h:
/usr/include/sys/_types/_uid_t.h:
/usr/include/sys/resource.h:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h:
/usr/include/stdint.h:
/usr/include/sys/_types/_int8_t.h:
/usr/include/sys/_types/_int16_t.h:
/usr/include/sys/_types/_int32_t.h:
/usr/include/sys/_types/_int64_t.h:
/usr/include/_types/_uint8_t.h:
/usr/include/_types/_uint16_t.h:
/usr/include/_types/_uint32_t.h:
/usr/include/_types/_uint64_t.h:
/usr/include/sys/_types/_intptr_t.h:
/usr/include/sys/_types/_uintptr_t.h:
/usr/include/_types/_intmax_t.h:
/usr/include/_types/_uintmax_t.h:
/usr/include/sys/_types/_timeval.h:
/usr/include/machine/endian.h:
/usr/include/i386/endian.h:
/usr/include/sys/_endian.h:
/usr/include/libkern/_OSByteOrder.h:
/usr/include/libkern/i386/_OSByteOrder.h:
/usr/include/alloca.h:
/usr/include/sys/_types/_ct_rune_t.h:
/usr/include/sys/_types/_rune_t.h:
/usr/include/sys/_types/_wchar_t.h:
/usr/include/machine/types.h:
/usr/include/i386/types.h:
/usr/include/sys/_types/___offsetof.h:
/usr/include/sys/_types/_dev_t.h:
/usr/include/sys/_types/_mode_t.h:
/usr/include/string.h:
/usr/include/strings.h:
/usr/include/secure/_string.h:
/usr/include/assert.h:
/Users/aks/code/os/cunit/cunit/CUnit/Headers/CUnit.h:
/usr/include/math.h:
/Users/aks/code/os/cunit/cunit/CUnit/Headers/CUError.h:
/usr/include/errno.h:
/usr/include/sys/errno.h:
/Users/aks/code/os/cunit/cunit/CUnit/Headers/TestDB.h:
/usr/include/setjmp.h:
/Users/aks/code/os/cunit/cunit/CUnit/Headers/TestRun.h:
ExampleTests.h:
cunit-2.1-3-dfsg/Examples/AutomatedTest/ 0000775 0000000 0000000 00000000000 12607012350 0020114 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/Examples/AutomatedTest/.deps/ 0000775 0000000 0000000 00000000000 12607012350 0021125 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/Examples/AutomatedTest/.deps/AutomatedTest.Po 0000664 0000000 0000000 00000012507 12607012350 0024215 0 ustar 00root root 0000000 0000000 AutomatedTest.o: AutomatedTest.c /usr/include/stdio.h \
/usr/include/sys/cdefs.h /usr/include/sys/_symbol_aliasing.h \
/usr/include/sys/_posix_availability.h /usr/include/Availability.h \
/usr/include/AvailabilityInternal.h /usr/include/_types.h \
/usr/include/sys/_types.h /usr/include/machine/_types.h \
/usr/include/i386/_types.h /usr/include/sys/_types/_va_list.h \
/usr/include/sys/_types/_size_t.h /usr/include/sys/_types/_null.h \
/usr/include/sys/_types/_off_t.h /usr/include/sys/_types/_ssize_t.h \
/usr/include/secure/_stdio.h /usr/include/secure/_common.h \
/usr/include/stdlib.h /usr/include/sys/wait.h \
/usr/include/sys/_types/_pid_t.h /usr/include/sys/_types/_id_t.h \
/usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \
/usr/include/machine/signal.h /usr/include/i386/signal.h \
/usr/include/machine/_mcontext.h /usr/include/i386/_mcontext.h \
/usr/include/mach/i386/_structs.h \
/usr/include/sys/_types/_sigaltstack.h \
/usr/include/sys/_types/_ucontext.h \
/usr/include/sys/_types/_pthread_attr_t.h \
/usr/include/sys/_types/_sigset_t.h /usr/include/sys/_types/_uid_t.h \
/usr/include/sys/resource.h \
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h \
/usr/include/stdint.h /usr/include/sys/_types/_int8_t.h \
/usr/include/sys/_types/_int16_t.h /usr/include/sys/_types/_int32_t.h \
/usr/include/sys/_types/_int64_t.h /usr/include/_types/_uint8_t.h \
/usr/include/_types/_uint16_t.h /usr/include/_types/_uint32_t.h \
/usr/include/_types/_uint64_t.h /usr/include/sys/_types/_intptr_t.h \
/usr/include/sys/_types/_uintptr_t.h /usr/include/_types/_intmax_t.h \
/usr/include/_types/_uintmax_t.h /usr/include/sys/_types/_timeval.h \
/usr/include/machine/endian.h /usr/include/i386/endian.h \
/usr/include/sys/_endian.h /usr/include/libkern/_OSByteOrder.h \
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
/usr/include/sys/_types/_ct_rune_t.h /usr/include/sys/_types/_rune_t.h \
/usr/include/sys/_types/_wchar_t.h /usr/include/machine/types.h \
/usr/include/i386/types.h /usr/include/sys/_types/___offsetof.h \
/usr/include/sys/_types/_dev_t.h /usr/include/sys/_types/_mode_t.h \
/usr/include/string.h /usr/include/strings.h \
/usr/include/secure/_string.h \
/Users/aks/code/os/cunit/cunit/CUnit/Headers/Automated.h \
/Users/aks/code/os/cunit/cunit/CUnit/Headers/CUnit.h \
/usr/include/math.h \
/Users/aks/code/os/cunit/cunit/CUnit/Headers/CUError.h \
/usr/include/errno.h /usr/include/sys/errno.h \
/Users/aks/code/os/cunit/cunit/CUnit/Headers/TestDB.h \
/usr/include/setjmp.h \
/Users/aks/code/os/cunit/cunit/CUnit/Headers/TestRun.h \
../ExampleTests.h
/usr/include/stdio.h:
/usr/include/sys/cdefs.h:
/usr/include/sys/_symbol_aliasing.h:
/usr/include/sys/_posix_availability.h:
/usr/include/Availability.h:
/usr/include/AvailabilityInternal.h:
/usr/include/_types.h:
/usr/include/sys/_types.h:
/usr/include/machine/_types.h:
/usr/include/i386/_types.h:
/usr/include/sys/_types/_va_list.h:
/usr/include/sys/_types/_size_t.h:
/usr/include/sys/_types/_null.h:
/usr/include/sys/_types/_off_t.h:
/usr/include/sys/_types/_ssize_t.h:
/usr/include/secure/_stdio.h:
/usr/include/secure/_common.h:
/usr/include/stdlib.h:
/usr/include/sys/wait.h:
/usr/include/sys/_types/_pid_t.h:
/usr/include/sys/_types/_id_t.h:
/usr/include/sys/signal.h:
/usr/include/sys/appleapiopts.h:
/usr/include/machine/signal.h:
/usr/include/i386/signal.h:
/usr/include/machine/_mcontext.h:
/usr/include/i386/_mcontext.h:
/usr/include/mach/i386/_structs.h:
/usr/include/sys/_types/_sigaltstack.h:
/usr/include/sys/_types/_ucontext.h:
/usr/include/sys/_types/_pthread_attr_t.h:
/usr/include/sys/_types/_sigset_t.h:
/usr/include/sys/_types/_uid_t.h:
/usr/include/sys/resource.h:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h:
/usr/include/stdint.h:
/usr/include/sys/_types/_int8_t.h:
/usr/include/sys/_types/_int16_t.h:
/usr/include/sys/_types/_int32_t.h:
/usr/include/sys/_types/_int64_t.h:
/usr/include/_types/_uint8_t.h:
/usr/include/_types/_uint16_t.h:
/usr/include/_types/_uint32_t.h:
/usr/include/_types/_uint64_t.h:
/usr/include/sys/_types/_intptr_t.h:
/usr/include/sys/_types/_uintptr_t.h:
/usr/include/_types/_intmax_t.h:
/usr/include/_types/_uintmax_t.h:
/usr/include/sys/_types/_timeval.h:
/usr/include/machine/endian.h:
/usr/include/i386/endian.h:
/usr/include/sys/_endian.h:
/usr/include/libkern/_OSByteOrder.h:
/usr/include/libkern/i386/_OSByteOrder.h:
/usr/include/alloca.h:
/usr/include/sys/_types/_ct_rune_t.h:
/usr/include/sys/_types/_rune_t.h:
/usr/include/sys/_types/_wchar_t.h:
/usr/include/machine/types.h:
/usr/include/i386/types.h:
/usr/include/sys/_types/___offsetof.h:
/usr/include/sys/_types/_dev_t.h:
/usr/include/sys/_types/_mode_t.h:
/usr/include/string.h:
/usr/include/strings.h:
/usr/include/secure/_string.h:
/Users/aks/code/os/cunit/cunit/CUnit/Headers/Automated.h:
/Users/aks/code/os/cunit/cunit/CUnit/Headers/CUnit.h:
/usr/include/math.h:
/Users/aks/code/os/cunit/cunit/CUnit/Headers/CUError.h:
/usr/include/errno.h:
/usr/include/sys/errno.h:
/Users/aks/code/os/cunit/cunit/CUnit/Headers/TestDB.h:
/usr/include/setjmp.h:
/Users/aks/code/os/cunit/cunit/CUnit/Headers/TestRun.h:
../ExampleTests.h:
cunit-2.1-3-dfsg/Examples/AutomatedTest/AutomatedTest.c 0000664 0000000 0000000 00000004453 12607012350 0023051 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
* Copyright (C) 2004 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include
#include
#include
#include "Automated.h"
#include "ExampleTests.h"
int main(int argc, char* argv[])
{
CU_BOOL Run = CU_FALSE ;
setvbuf(stdout, NULL, _IONBF, 0);
if (argc > 1) {
if (!strcmp("-i", argv[1])) {
Run = CU_TRUE ;
CU_set_error_action(CUEA_IGNORE);
}
else if (!strcmp("-f", argv[1])) {
Run = CU_TRUE ;
CU_set_error_action(CUEA_FAIL);
}
else if (!strcmp("-A", argv[1])) {
Run = CU_TRUE ;
CU_set_error_action(CUEA_ABORT);
}
else if (!strcmp("-e", argv[1])) {
print_example_results();
}
else {
printf("\nUsage: AutomatedTest [option]\n\n"
" Options: -i Run, ignoring framework errors [default].\n"
" -f Run, failing on framework error.\n"
" -A Run, aborting on framework error.\n"
" -e Print expected test results and exit.\n"
" -h Print this message.\n\n");
}
}
else {
Run = CU_TRUE;
CU_set_error_action(CUEA_IGNORE);
}
if (CU_TRUE == Run) {
if (CU_initialize_registry()) {
printf("\nInitialization of Test Registry failed.");
}
else {
AddTests();
CU_set_output_filename("TestAutomated");
CU_list_tests_to_file();
CU_automated_run_tests();
CU_cleanup_registry();
}
}
return 0;
}
cunit-2.1-3-dfsg/Examples/AutomatedTest/AutomatedTest_v1.c 0000664 0000000 0000000 00000015607 12607012350 0023462 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2001 Anil Kumar
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include
#include
#include
#include "Automated.h"
int success_init(void) { return 0; }
int success_clean(void) { return 0; }
void testSuccess1(void) { ASSERT(1); }
void testSuccess2(void) { ASSERT(1); }
void testSuccess3(void) { ASSERT(1); }
int group_failure_init(void) { return 1;}
int group_failure_clean(void) { return 1; }
void testGroupFailure1(void) { ASSERT(0); }
void testGroupFailure2(void) { ASSERT(2); }
void testfailure1(void) { ASSERT(12 <= 10); }
void testfailure2(void) { ASSERT(2); }
void testfailure3(void) { ASSERT(3); }
void test1(void)
{
ASSERT((char *)2 != "THis is positive test.");
ASSERT((char *)2 == "THis is negative test. test 1");
}
void test2(void)
{
ASSERT((char *)2 != "THis is positive test.");
ASSERT((char *)3 == "THis is negative test. test 2");
}
void testSuccessSimpleAssert(void)
{
ASSERT(1) ;
ASSERT(!0) ;
}
void testSuccessAssertTrue(void)
{
ASSERT_TRUE(TRUE) ;
ASSERT_TRUE(!FALSE) ;
}
void testSuccessAssertFalse(void)
{
ASSERT_FALSE(FALSE) ;
ASSERT_FALSE(!TRUE) ;
}
void testSuccessAssertEqual(void)
{
ASSERT_EQUAL(10, 10) ;
ASSERT_EQUAL(0, 0) ;
ASSERT_EQUAL(0, -0) ;
ASSERT_EQUAL(-12, -12) ;
}
void testSuccessAssertNotEqual(void)
{
ASSERT_NOT_EQUAL(10, 11) ;
ASSERT_NOT_EQUAL(0, -1) ;
ASSERT_NOT_EQUAL(-12, -11) ;
}
void testSuccessAssertPtrEqual(void)
{
ASSERT_PTR_EQUAL((void*)0x100, (void*)0x100) ;
}
void testSuccessAssertPtrNotEqual(void)
{
ASSERT_PTR_NOT_EQUAL((void*)0x100, (void*)0x101) ;
}
void testSuccessAssertPtrNull(void)
{
ASSERT_PTR_NULL(NULL) ;
ASSERT_PTR_NULL(0x0) ;
}
void testSuccessAssertPtrNotNull(void)
{
ASSERT_PTR_NOT_NULL((void*)0x23) ;
}
void testSuccessAssertStringEqual(void)
{
char str1[] = "test" ;
char str2[] = "test" ;
ASSERT_STRING_EQUAL(str1, str2) ;
}
void testSuccessAssertStringNotEqual(void)
{
char str1[] = "test" ;
char str2[] = "testtsg" ;
ASSERT_STRING_NOT_EQUAL(str1, str2) ;
}
void testSuccessAssertNStringEqual(void)
{
char str1[] = "test" ;
char str2[] = "testgfsg" ;
ASSERT_NSTRING_EQUAL(str1, str2, strlen(str1)) ;
ASSERT_NSTRING_EQUAL(str1, str1, strlen(str1)) ;
ASSERT_NSTRING_EQUAL(str1, str1, strlen(str1) + 1) ;
}
void testSuccessAssertNStringNotEqual(void)
{
char str1[] = "test" ;
char str2[] = "teet" ;
char str3[] = "testgfsg" ;
ASSERT_NSTRING_NOT_EQUAL(str1, str2, 3) ;
ASSERT_NSTRING_NOT_EQUAL(str1, str3, strlen(str1) + 1) ;
}
void testSuccessAssertDoubleEqual(void)
{
ASSERT_DOUBLE_EQUAL(10, 10.0001, 0.0001) ;
ASSERT_DOUBLE_EQUAL(10, 10.0001, -0.0001) ;
ASSERT_DOUBLE_EQUAL(-10, -10.0001, 0.0001) ;
ASSERT_DOUBLE_EQUAL(-10, -10.0001, -0.0001) ;
}
void testSuccessAssertDoubleNotEqual(void)
{
ASSERT_DOUBLE_NOT_EQUAL(10, 10.001, 0.0001) ;
ASSERT_DOUBLE_NOT_EQUAL(10, 10.001, -0.0001) ;
ASSERT_DOUBLE_NOT_EQUAL(-10, -10.001, 0.0001) ;
ASSERT_DOUBLE_NOT_EQUAL(-10, -10.001, -0.0001) ;
}
void AddTests(void)
{
PTestGroup pGroup = NULL;
PTestCase pTest = NULL;
pGroup = add_test_group("Sucess", success_init, success_clean);
pTest = add_test_case(pGroup, "testSuccess1", testSuccess1);
pTest = add_test_case(pGroup, "testSuccess2", testSuccess2);
pTest = add_test_case(pGroup, "testSuccess3", testSuccess3);
pGroup = add_test_group("failure", NULL, NULL);
pTest = add_test_case(pGroup, "testfailure1", testfailure1);
pTest = add_test_case(pGroup, "testfailure2", testfailure2);
pTest = add_test_case(pGroup, "testfailure3", testfailure3);
pGroup = add_test_group("group_failure", group_failure_init, group_failure_clean);
pTest = add_test_case(pGroup, "testGroupFailure1", testGroupFailure1);
pTest = add_test_case(pGroup, "testGroupFailure2", testGroupFailure2);
}
void AddAssertTests(void)
{
PTestGroup pGroup = NULL;
PTestCase pTest = NULL;
pGroup = add_test_group("TestSimpleAssert", NULL, NULL);
pTest = add_test_case(pGroup, "testSuccessSimpleAssert", testSuccessSimpleAssert);
pGroup = add_test_group("TestBooleanAssert", NULL, NULL);
pTest = add_test_case(pGroup, "testSuccessAssertTrue", testSuccessAssertTrue);
pTest = add_test_case(pGroup, "testSuccessAssertFalse", testSuccessAssertFalse);
pGroup = add_test_group("TestEqualityAssert", NULL, NULL);
pTest = add_test_case(pGroup, "testSuccessAssertEqual", testSuccessAssertEqual);
pTest = add_test_case(pGroup, "testSuccessAssertNotEqual", testSuccessAssertNotEqual);
pGroup = add_test_group("TestPointerAssert", NULL, NULL);
pTest = add_test_case(pGroup, "testSuccessAssertPtrEqual", testSuccessAssertPtrEqual);
pTest = add_test_case(pGroup, "testSuccessAssertPtrNotEqual", testSuccessAssertPtrNotEqual);
pGroup = add_test_group("TestNullnessAssert", NULL, NULL);
pTest = add_test_case(pGroup, "testSuccessAssertPtrNull", testSuccessAssertPtrNull);
pTest = add_test_case(pGroup, "testSuccessAssertPtrNotNull", testSuccessAssertPtrNotNull);
pGroup = add_test_group("TestStringAssert", NULL, NULL);
pTest = add_test_case(pGroup, "testSuccessAssertStringEqual", testSuccessAssertStringEqual);
pTest = add_test_case(pGroup, "testSuccessAssertStringNotEqual", testSuccessAssertStringNotEqual);
pGroup = add_test_group("TestNStringAssert", NULL, NULL);
pTest = add_test_case(pGroup, "testSuccessAssertNStringEqual", testSuccessAssertNStringEqual);
pTest = add_test_case(pGroup, "testSuccessAssertNStringNotEqual", testSuccessAssertNStringNotEqual);
pGroup = add_test_group("TestDoubleAssert", NULL, NULL);
pTest = add_test_case(pGroup, "testSuccessAssertDoubleEqual", testSuccessAssertDoubleEqual);
pTest = add_test_case(pGroup, "testSuccessAssertDoubleNotEqual", testSuccessAssertDoubleNotEqual);
}
int main(int argc, char* argv[])
{
setvbuf(stdout, NULL, _IONBF, 0);
if (argc > 1) {
BOOL Run = FALSE ;
set_output_filename("TestAutomated");
if (initialize_registry()) {
printf("\nInitialize of test Registry failed.");
}
if (!strcmp("--test", argv[1])) {
Run = TRUE ;
AddTests();
}
else if (!strcmp("--atest", argv[1])) {
Run = TRUE ;
AddAssertTests();
}
else if (!strcmp("--alltest", argv[1])) {
Run = TRUE ;
AddTests();
AddAssertTests();
}
if (TRUE == Run) {
automated_run_tests();
}
cleanup_registry();
}
return 0;
}
cunit-2.1-3-dfsg/Examples/AutomatedTest/Jamfile 0000664 0000000 0000000 00000004642 12607012350 0021414 0 ustar 00root root 0000000 0000000 #
# Jamfile to build CUnit - Examples/AutomatedTest
# (see http://www.freetype.org/jam/index.html)
#
# Copyright (C) 2004-2006 Jerry St.Clair
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#---------------------------------------------------------------------------
SubDir TOP Examples AutomatedTest ;
if $(BUILD_EXAMPLES) && $(BUILD_AUTOMATED)
{
SubDirHdrs $(CUNIT_HDR_DIR) $(EXAMPLES_DIR) ;
# set location for target, source, and temporary files
LOCATE_TARGET = $(BUILD_DIR)$(SLASH)Examples$(SLASH)AutomatedTest ;
SEARCH_SOURCE += $(EXAMPLES_DIR) ;
Main AutomatedTest : AutomatedTest.c ExampleTests.c ;
LinkLibraries AutomatedTest$(SUFEXE) : $(CUNIT_LIB_NAME)$(SUFLIB) ;
LINKLIBS on AutomatedTest$(SUFEXE) += $(SYS_LIBS) ;
if $(USE_DEPRECATED_NAMES)
{
Main AutomatedTest_v1 : AutomatedTest_v1.c ;
LinkLibraries AutomatedTest_v1$(SUFEXE) : $(CUNIT_LIB_NAME)$(SUFLIB) ;
LINKLIBS on AutomatedTest_v1$(SUFEXE) += $(SYS_LIBS) ;
ObjectCcFlags AutomatedTest_v1.c : $(USE_DEPRECATED_NAMES) ;
}
if $(NT) && ($(BCCROOT) || ($(TOOLSET) = BORLANDC))
{
# need to fix Borland to include library location
LINKFLAGS on AutomatedTest$(SUFEXE) += -L$(STDLIBPATH) -tWC ;
if $(USE_DEPRECATED_NAMES)
{ LINKFLAGS on AutomatedTest_v1$(SUFEXE) += -L$(STDLIBPATH) -tWC ; }
}
MakeLocate AutomatedTest$(SUFEXE) : $(BUILD_DIR) ;
if $(USE_DEPRECATED_NAMES)
{ MakeLocate AutomatedTest_v1$(SUFEXE) : $(BUILD_DIR) ; }
if $(INSTALL_EXAM_DIR)
{
InstallCUnitBin $(INSTALL_EXAM_DIR)$(SLASH)Automated : AutomatedTest$(SUFEXE) ;
InstallCUnitFile $(INSTALL_EXAM_DIR)$(SLASH)Automated : README ;
if $(USE_DEPRECATED_NAMES)
{ InstallCUnitBin $(INSTALL_EXAM_DIR)$(SLASH)Automated : AutomatedTest_v1$(SUFEXE) ; }
}
} cunit-2.1-3-dfsg/Examples/AutomatedTest/Makefile.am 0000664 0000000 0000000 00000000644 12607012350 0022154 0 ustar 00root root 0000000 0000000 ## Process this file with automake to produce Makefile.in
exampledir=${datadir}/@PACKAGE@/Examples/Automated
if ENABLE_EXAMPLES
if ENABLE_AUTOMATED
example_PROGRAMS = AutomatedTest
AutomatedTest_SOURCES = AutomatedTest.c
AutomatedTest_LDADD = -lcunit -lcunitexamples
AutomatedTest_LDFLAGS = -L.. -lm
INCLUDES = -I..
if ENABLE_CURSES
AutomatedTest_LDADD += -l$(CURSES_LIB)
endif
example_DATA = README
endif
endif
cunit-2.1-3-dfsg/Examples/AutomatedTest/Makefile.in 0000664 0000000 0000000 00000054563 12607012350 0022176 0 ustar 00root root 0000000 0000000 # Makefile.in generated by automake 1.14 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2013 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
@ENABLE_AUTOMATED_TRUE@@ENABLE_EXAMPLES_TRUE@example_PROGRAMS = AutomatedTest$(EXEEXT)
@ENABLE_AUTOMATED_TRUE@@ENABLE_CURSES_TRUE@@ENABLE_EXAMPLES_TRUE@am__append_1 = -l$(CURSES_LIB)
subdir = Examples/AutomatedTest
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp README
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(exampledir)" "$(DESTDIR)$(exampledir)"
PROGRAMS = $(example_PROGRAMS)
am__AutomatedTest_SOURCES_DIST = AutomatedTest.c
@ENABLE_AUTOMATED_TRUE@@ENABLE_EXAMPLES_TRUE@am_AutomatedTest_OBJECTS = AutomatedTest.$(OBJEXT)
AutomatedTest_OBJECTS = $(am_AutomatedTest_OBJECTS)
am__DEPENDENCIES_1 =
@ENABLE_AUTOMATED_TRUE@@ENABLE_EXAMPLES_TRUE@AutomatedTest_DEPENDENCIES = $(am__DEPENDENCIES_1)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
AutomatedTest_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AutomatedTest_LDFLAGS) $(LDFLAGS) -o $@
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_@AM_V@)
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
am__v_CC_0 = @echo " CC " $@;
am__v_CC_1 =
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(AutomatedTest_SOURCES)
DIST_SOURCES = $(am__AutomatedTest_SOURCES_DIST)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
DATA = $(example_DATA)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_AUTOMATED = @BUILD_AUTOMATED@
BUILD_BASIC = @BUILD_BASIC@
BUILD_CONSOLE = @BUILD_CONSOLE@
BUILD_CURSES = @BUILD_CURSES@
BUILD_EXAMPLES = @BUILD_EXAMPLES@
BUILD_TEST = @BUILD_TEST@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CURSES_LIB = @CURSES_LIB@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENABLE_DEBUG = @ENABLE_DEBUG@
ENABLE_DEPRECATED = @ENABLE_DEPRECATED@
ENABLE_MEMTRACE = @ENABLE_MEMTRACE@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBTOOL_AGE = @LIBTOOL_AGE@
LIBTOOL_CURRENT = @LIBTOOL_CURRENT@
LIBTOOL_REVISION = @LIBTOOL_REVISION@
LIBTOOL_SUFFIX = @LIBTOOL_SUFFIX@
LIBTOOL_SUFFIX1 = @LIBTOOL_SUFFIX1@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
RELEASE = @RELEASE@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
VERSION_MAJOR = @VERSION_MAJOR@
VERSION_MINOR = @VERSION_MINOR@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
exampledir = ${datadir}/@PACKAGE@/Examples/Automated
@ENABLE_AUTOMATED_TRUE@@ENABLE_EXAMPLES_TRUE@AutomatedTest_SOURCES = AutomatedTest.c
@ENABLE_AUTOMATED_TRUE@@ENABLE_EXAMPLES_TRUE@AutomatedTest_LDADD = \
@ENABLE_AUTOMATED_TRUE@@ENABLE_EXAMPLES_TRUE@ -lcunit \
@ENABLE_AUTOMATED_TRUE@@ENABLE_EXAMPLES_TRUE@ -lcunitexamples \
@ENABLE_AUTOMATED_TRUE@@ENABLE_EXAMPLES_TRUE@ $(am__append_1)
@ENABLE_AUTOMATED_TRUE@@ENABLE_EXAMPLES_TRUE@AutomatedTest_LDFLAGS = -L.. -lm
@ENABLE_AUTOMATED_TRUE@@ENABLE_EXAMPLES_TRUE@INCLUDES = -I..
@ENABLE_AUTOMATED_TRUE@@ENABLE_EXAMPLES_TRUE@example_DATA = README
all: all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Examples/AutomatedTest/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu Examples/AutomatedTest/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-examplePROGRAMS: $(example_PROGRAMS)
@$(NORMAL_INSTALL)
@list='$(example_PROGRAMS)'; test -n "$(exampledir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(exampledir)'"; \
$(MKDIR_P) "$(DESTDIR)$(exampledir)" || exit 1; \
fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p \
|| test -f $$p1 \
; then echo "$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n;h' \
-e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) files[d] = files[d] " " $$1; \
else { print "f", $$3 "/" $$4, $$1; } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(exampledir)$$dir'"; \
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(exampledir)$$dir" || exit $$?; \
} \
; done
uninstall-examplePROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(example_PROGRAMS)'; test -n "$(exampledir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-e 's/$$/$(EXEEXT)/' \
`; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(exampledir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(exampledir)" && rm -f $$files
clean-examplePROGRAMS:
@list='$(example_PROGRAMS)'; test -n "$$list" || exit 0; \
echo " rm -f" $$list; \
rm -f $$list || exit $$?; \
test -n "$(EXEEXT)" || exit 0; \
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
AutomatedTest$(EXEEXT): $(AutomatedTest_OBJECTS) $(AutomatedTest_DEPENDENCIES) $(EXTRA_AutomatedTest_DEPENDENCIES)
@rm -f AutomatedTest$(EXEEXT)
$(AM_V_CCLD)$(AutomatedTest_LINK) $(AutomatedTest_OBJECTS) $(AutomatedTest_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AutomatedTest.Po@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-exampleDATA: $(example_DATA)
@$(NORMAL_INSTALL)
@list='$(example_DATA)'; test -n "$(exampledir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(exampledir)'"; \
$(MKDIR_P) "$(DESTDIR)$(exampledir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(exampledir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(exampledir)" || exit $$?; \
done
uninstall-exampleDATA:
@$(NORMAL_UNINSTALL)
@list='$(example_DATA)'; test -n "$(exampledir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(exampledir)'; $(am__uninstall_files_from_dir)
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-am
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-am
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS) $(DATA)
installdirs:
for dir in "$(DESTDIR)$(exampledir)" "$(DESTDIR)$(exampledir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-examplePROGRAMS clean-generic clean-libtool \
mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-exampleDATA install-examplePROGRAMS
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-exampleDATA uninstall-examplePROGRAMS
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
clean-examplePROGRAMS clean-generic clean-libtool \
cscopelist-am ctags ctags-am distclean distclean-compile \
distclean-generic distclean-libtool distclean-tags distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-dvi install-dvi-am \
install-exampleDATA install-examplePROGRAMS install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am uninstall-exampleDATA \
uninstall-examplePROGRAMS
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
cunit-2.1-3-dfsg/Examples/AutomatedTest/README 0000664 0000000 0000000 00000000047 12607012350 0020775 0 ustar 00root root 0000000 0000000 Usage of Example :
./AutomatedTest -h
cunit-2.1-3-dfsg/Examples/BasicTest/ 0000775 0000000 0000000 00000000000 12607012350 0017212 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/Examples/BasicTest/.deps/ 0000775 0000000 0000000 00000000000 12607012350 0020223 5 ustar 00root root 0000000 0000000 cunit-2.1-3-dfsg/Examples/BasicTest/.deps/BasicTest.Po 0000664 0000000 0000000 00000012467 12607012350 0022416 0 ustar 00root root 0000000 0000000 BasicTest.o: BasicTest.c /usr/include/stdio.h /usr/include/sys/cdefs.h \
/usr/include/sys/_symbol_aliasing.h \
/usr/include/sys/_posix_availability.h /usr/include/Availability.h \
/usr/include/AvailabilityInternal.h /usr/include/_types.h \
/usr/include/sys/_types.h /usr/include/machine/_types.h \
/usr/include/i386/_types.h /usr/include/sys/_types/_va_list.h \
/usr/include/sys/_types/_size_t.h /usr/include/sys/_types/_null.h \
/usr/include/sys/_types/_off_t.h /usr/include/sys/_types/_ssize_t.h \
/usr/include/secure/_stdio.h /usr/include/secure/_common.h \
/usr/include/stdlib.h /usr/include/sys/wait.h \
/usr/include/sys/_types/_pid_t.h /usr/include/sys/_types/_id_t.h \
/usr/include/sys/signal.h /usr/include/sys/appleapiopts.h \
/usr/include/machine/signal.h /usr/include/i386/signal.h \
/usr/include/machine/_mcontext.h /usr/include/i386/_mcontext.h \
/usr/include/mach/i386/_structs.h \
/usr/include/sys/_types/_sigaltstack.h \
/usr/include/sys/_types/_ucontext.h \
/usr/include/sys/_types/_pthread_attr_t.h \
/usr/include/sys/_types/_sigset_t.h /usr/include/sys/_types/_uid_t.h \
/usr/include/sys/resource.h \
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h \
/usr/include/stdint.h /usr/include/sys/_types/_int8_t.h \
/usr/include/sys/_types/_int16_t.h /usr/include/sys/_types/_int32_t.h \
/usr/include/sys/_types/_int64_t.h /usr/include/_types/_uint8_t.h \
/usr/include/_types/_uint16_t.h /usr/include/_types/_uint32_t.h \
/usr/include/_types/_uint64_t.h /usr/include/sys/_types/_intptr_t.h \
/usr/include/sys/_types/_uintptr_t.h /usr/include/_types/_intmax_t.h \
/usr/include/_types/_uintmax_t.h /usr/include/sys/_types/_timeval.h \
/usr/include/machine/endian.h /usr/include/i386/endian.h \
/usr/include/sys/_endian.h /usr/include/libkern/_OSByteOrder.h \
/usr/include/libkern/i386/_OSByteOrder.h /usr/include/alloca.h \
/usr/include/sys/_types/_ct_rune_t.h /usr/include/sys/_types/_rune_t.h \
/usr/include/sys/_types/_wchar_t.h /usr/include/machine/types.h \
/usr/include/i386/types.h /usr/include/sys/_types/___offsetof.h \
/usr/include/sys/_types/_dev_t.h /usr/include/sys/_types/_mode_t.h \
/usr/include/string.h /usr/include/strings.h \
/usr/include/secure/_string.h \
/Users/aks/code/os/cunit/cunit/CUnit/Headers/Basic.h \
/Users/aks/code/os/cunit/cunit/CUnit/Headers/CUnit.h \
/usr/include/math.h \
/Users/aks/code/os/cunit/cunit/CUnit/Headers/CUError.h \
/usr/include/errno.h /usr/include/sys/errno.h \
/Users/aks/code/os/cunit/cunit/CUnit/Headers/TestDB.h \
/usr/include/setjmp.h \
/Users/aks/code/os/cunit/cunit/CUnit/Headers/TestRun.h \
../ExampleTests.h
/usr/include/stdio.h:
/usr/include/sys/cdefs.h:
/usr/include/sys/_symbol_aliasing.h:
/usr/include/sys/_posix_availability.h:
/usr/include/Availability.h:
/usr/include/AvailabilityInternal.h:
/usr/include/_types.h:
/usr/include/sys/_types.h:
/usr/include/machine/_types.h:
/usr/include/i386/_types.h:
/usr/include/sys/_types/_va_list.h:
/usr/include/sys/_types/_size_t.h:
/usr/include/sys/_types/_null.h:
/usr/include/sys/_types/_off_t.h:
/usr/include/sys/_types/_ssize_t.h:
/usr/include/secure/_stdio.h:
/usr/include/secure/_common.h:
/usr/include/stdlib.h:
/usr/include/sys/wait.h:
/usr/include/sys/_types/_pid_t.h:
/usr/include/sys/_types/_id_t.h:
/usr/include/sys/signal.h:
/usr/include/sys/appleapiopts.h:
/usr/include/machine/signal.h:
/usr/include/i386/signal.h:
/usr/include/machine/_mcontext.h:
/usr/include/i386/_mcontext.h:
/usr/include/mach/i386/_structs.h:
/usr/include/sys/_types/_sigaltstack.h:
/usr/include/sys/_types/_ucontext.h:
/usr/include/sys/_types/_pthread_attr_t.h:
/usr/include/sys/_types/_sigset_t.h:
/usr/include/sys/_types/_uid_t.h:
/usr/include/sys/resource.h:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/include/stdint.h:
/usr/include/stdint.h:
/usr/include/sys/_types/_int8_t.h:
/usr/include/sys/_types/_int16_t.h:
/usr/include/sys/_types/_int32_t.h:
/usr/include/sys/_types/_int64_t.h:
/usr/include/_types/_uint8_t.h:
/usr/include/_types/_uint16_t.h:
/usr/include/_types/_uint32_t.h:
/usr/include/_types/_uint64_t.h:
/usr/include/sys/_types/_intptr_t.h:
/usr/include/sys/_types/_uintptr_t.h:
/usr/include/_types/_intmax_t.h:
/usr/include/_types/_uintmax_t.h:
/usr/include/sys/_types/_timeval.h:
/usr/include/machine/endian.h:
/usr/include/i386/endian.h:
/usr/include/sys/_endian.h:
/usr/include/libkern/_OSByteOrder.h:
/usr/include/libkern/i386/_OSByteOrder.h:
/usr/include/alloca.h:
/usr/include/sys/_types/_ct_rune_t.h:
/usr/include/sys/_types/_rune_t.h:
/usr/include/sys/_types/_wchar_t.h:
/usr/include/machine/types.h:
/usr/include/i386/types.h:
/usr/include/sys/_types/___offsetof.h:
/usr/include/sys/_types/_dev_t.h:
/usr/include/sys/_types/_mode_t.h:
/usr/include/string.h:
/usr/include/strings.h:
/usr/include/secure/_string.h:
/Users/aks/code/os/cunit/cunit/CUnit/Headers/Basic.h:
/Users/aks/code/os/cunit/cunit/CUnit/Headers/CUnit.h:
/usr/include/math.h:
/Users/aks/code/os/cunit/cunit/CUnit/Headers/CUError.h:
/usr/include/errno.h:
/usr/include/sys/errno.h:
/Users/aks/code/os/cunit/cunit/CUnit/Headers/TestDB.h:
/usr/include/setjmp.h:
/Users/aks/code/os/cunit/cunit/CUnit/Headers/TestRun.h:
../ExampleTests.h:
cunit-2.1-3-dfsg/Examples/BasicTest/BasicTest.c 0000664 0000000 0000000 00000005156 12607012350 0021246 0 ustar 00root root 0000000 0000000 /*
* CUnit - A Unit testing framework library for C.
* Copyright (C) 2004 Anil Kumar, Jerry St.Clair
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include
#include
#include
#include "Basic.h"
#include "ExampleTests.h"
int main(int argc, char* argv[])
{
CU_BasicRunMode mode = CU_BRM_VERBOSE;
CU_ErrorAction error_action = CUEA_IGNORE;
int i;
setvbuf(stdout, NULL, _IONBF, 0);
for (i=1 ; i