diff --git a/src/backend/file.c b/src/backend/file-handling.c similarity index 97% rename from src/backend/file.c rename to src/backend/file-handling.c index b636bdf29..daa9f49c7 100644 --- a/src/backend/file.c +++ b/src/backend/file-handling.c @@ -1,5 +1,5 @@ /* - file.c - file handling + FILE-HANDLING - file access and handling Copyright (C) Lumiera.org 2008, Christian Thaeter @@ -17,7 +17,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ + +* *****************************************************/ + #include "include/logging.h" #include "lib/mutex.h" @@ -29,12 +31,12 @@ #include #include -//NOBUG_DEFINE_FLAG_PARENT (file, file_all); LUMIERA_ERROR_DEFINE (FILE_CHANGED, "File changed unexpected"); LUMIERA_ERROR_DEFINE (FILE_NOMMAPINGS, "MMapings (chunksize/bias) not initialized"); + LumieraFile lumiera_file_init (LumieraFile self, const char* name, int flags) { diff --git a/src/include/logging.h b/src/include/logging.h index 4595050d7..9a07cbabf 100644 --- a/src/include/logging.h +++ b/src/include/logging.h @@ -54,13 +54,13 @@ ** \code NOBUG_LOG='progress:INFO' ./lumiera \endcode ** ** @todo logging to files? NOBUG_LOG='progress:INFO@file(name=filename)' api to set this statically up by the program will follow --cehteh - ** @todo review this documentation ################################################################################################################################ */ #include -#ifndef LUMIERA_LOGGING_CXX +/// magic to generate NoBug definitions +#ifndef LUMIERA_NOBUG_INIT_CPP #undef NOBUG_DECLARE_ONLY #define NOBUG_DECLARE_ONLY 1 #endif @@ -190,16 +190,9 @@ NOBUG_CPP_DEFINE_FLAG_PARENT ( gui_event, all); -#ifndef LUMIERA_LOGGING_CXX +#ifndef LUMIERA_NOBUG_INIT_CPP #undef NOBUG_DECLARE_ONLY #define NOBUG_DECLARE_ONLY 0 #endif #endif -/* -// Local Variables: -// mode: C -// c-file-style: "gnu" -// indent-tabs-mode: nil -// End: -*/ diff --git a/src/lib/exception.cpp b/src/lib/error-exception.cpp similarity index 95% rename from src/lib/exception.cpp rename to src/lib/error-exception.cpp index 53d068899..3b94e7df5 100644 --- a/src/lib/exception.cpp +++ b/src/lib/error-exception.cpp @@ -1,5 +1,5 @@ /* - Error - Lumiera Exception Interface + ERROR-EXCEPTION - Lumiera exception classes Copyright (C) Lumiera.org 2008, Hermann Vosseler @@ -21,6 +21,16 @@ * *****************************************************/ +/** @file error-exception.cpp + ** implementation of C++-style error handling. + ** This compilation unit defines a custom exception class hierarchy, + ** and is tightly integrated with the C-style error handling. + ** + ** @see error-state.c + ** @see error.hpp + ** + */ + #include "lib/error.hpp" #include "lib/util.hpp" diff --git a/src/lib/error.c b/src/lib/error-state.c similarity index 87% rename from src/lib/error.c rename to src/lib/error-state.c index 322fa2126..229f8ad75 100644 --- a/src/lib/error.c +++ b/src/lib/error-state.c @@ -1,5 +1,5 @@ /* - error.c - Lumiera Error handling + ERROR-STATE - Lumiera C error flag implementation Copyright (C) Lumiera.org 2008, Christian Thaeter @@ -17,16 +17,25 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ -#include +* *****************************************************/ + + +/** @file error-state.c + ** implementation of C-style error handling in Lumiera. + ** This implementation is based on a thread local error flag. + ** C++ code uses a custom exception hierarchy, which automatically + ** sets the error flag whenever an exception is thrown. + ** + ** @see error.h + ** @see error-exception.cpp + ** + */ + #include "lib/error.h" -/** - * @file - * C Error handling in Lumiera. - */ +#include /* diff --git a/src/lib/error.h b/src/lib/error.h index f76a21591..f879330a9 100644 --- a/src/lib/error.h +++ b/src/lib/error.h @@ -1,5 +1,5 @@ /* - error.h - Lumiera Error handling + ERROR.h - Lumiera Error handling interface (C-style) Copyright (C) Lumiera.org 2008, Christian Thaeter @@ -17,23 +17,42 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + +/** @file error.h + ** Lumiera error handling (C interface). + ** This header declares the interface for C-style error handling + ** based on a thread local error flag. This error state is "sticky"; + ** client code is bound to clear the error flag explicitly before + ** being able to set another error state. + ** + ** Error states are tightly integrated with NoBug based logging, as well + ** as with the exceptions used by the C++ part of the application: throwing + ** an exception automatically sets the error flag, and by policy, any + ** catch clause has to check, log and clear the error flag too. + ** + ** @see error.hpp C++ interface + ** @see error-state.c + ** @see error-exception.cpp + ** + */ + + #ifndef LUMIERA_ERROR_H #define LUMIERA_ERROR_H #ifdef __cplusplus extern "C" { #elif 0 -} /*eek, fixes emacs indenting for now*/ +} /* fixes broken emacs indenting */ #endif + #include #include -/** - * @file - * C Error handling in Lumiera, header. - */ typedef const char* lumiera_err; diff --git a/src/lib/error.hpp b/src/lib/error.hpp index 364fd1fe6..6ae3479cf 100644 --- a/src/lib/error.hpp +++ b/src/lib/error.hpp @@ -1,5 +1,5 @@ /* - ERROR.hpp - Lumiera Exception Interface + ERROR.hpp - Lumiera Exception Interface (C++) Copyright (C) Lumiera.org 2008,2010 Hermann Vosseler @@ -21,6 +21,21 @@ */ +/** @file error.hpp + ** Lumiera error handling (C++ interface). + ** This header declares the Lumiera exception hierarchy, + ** plus some of the most commonly used error flag values. + ** Within Lumiera, C-style error states and C++-style exceptions + ** are tightly integrated. Creating an exception sets the error flag, + ** and there are helpers available to throw an exception automatically + ** when a non-cleare error state is detected. + ** + ** @see error-state.c + ** @see error.hpp + ** + */ + + #ifndef LUMIERA_ERROR_HPP_ #define LUMIERA_ERROR_HPP_ @@ -95,7 +110,7 @@ namespace lumiera { - /* === Exception Sub-categories === */ + /* === Exception sub-categories === */ namespace error { @@ -244,7 +259,7 @@ namespace lumiera { * if NoBug is used, redefine some macros * to rather throw Lumiera Errors instead of aborting */ -#if 0 /*This will not work, nobug aborts are hard and may hold some locks, we discussed that before -- cehteh */ +#if 0 ///////////////////////////////////TODO disabled for now. NoBug aborts are hard and may hold some locks. There are hooks to allow throwing from NoBug TODO use them.... #ifdef NOBUG_ABORT #undef NOBUG_ABORT #define LUMIERA_NOBUG_LOCATION \ diff --git a/src/lib/logging.cpp b/src/lib/logging.cpp deleted file mode 100644 index 91c1af570..000000000 --- a/src/lib/logging.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/* - logging.cpp - Configure basic nobug logging - - Copyright (C) Lumiera.org - 2008, 2009 Christian Thaeter - Hermann Vosseler - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ - -#define LUMIERA_LOGGING_CXX -#include "include/logging.h" - -/* -// Local Variables: -// mode: C++ -// c-file-style: "gnu" -// indent-tabs-mode: nil -// End: -*/ diff --git a/src/lib/nobug-init.cpp b/src/lib/nobug-init.cpp index 18d1f95d0..9c2b3cb95 100644 --- a/src/lib/nobug-init.cpp +++ b/src/lib/nobug-init.cpp @@ -1,5 +1,5 @@ /* - NoBugInit - pull up NoBug automagically in static initialisation + NoBugInit - NoBug static initialisation and definition of logging vars Copyright (C) Lumiera.org 2009, Hermann Vosseler @@ -23,6 +23,10 @@ #include "lib/nobug-init.hpp" +/// magic to generate NoBug logging definitions +#define LUMIERA_NOBUG_INIT_CPP +#include "include/logging.h" + namespace lumiera { diff --git a/tests/lib/query/querydiagnostics.hpp b/src/lib/query-diagnostics.hpp similarity index 91% rename from tests/lib/query/querydiagnostics.hpp rename to src/lib/query-diagnostics.hpp index 269ef2d80..812d5bc03 100644 --- a/tests/lib/query/querydiagnostics.hpp +++ b/src/lib/query-diagnostics.hpp @@ -1,5 +1,5 @@ /* - QUERYDIAGNOSTICS.hpp - helpers for writing tests covering config queries + QUERY-DIAGNOSTICS.hpp - helpers for writing tests covering config queries Copyright (C) Lumiera.org 2008, Hermann Vosseler @@ -21,8 +21,8 @@ */ -#ifndef LIB_QUERY_TEST_QUERYDIAGNOSTICS_H -#define LIB_QUERY_TEST_QUERYDIAGNOSTICS_H +#ifndef LIB_QUERY_DIAGNOSTICS_H +#define LIB_QUERY_DIAGNOSTICS_H #include "lib/format-string.hpp" diff --git a/src/lib/time/lumitime.cpp b/src/lib/time/lumitime.cpp deleted file mode 100644 index 03218ebb7..000000000 --- a/src/lib/time/lumitime.cpp +++ /dev/null @@ -1,158 +0,0 @@ -/* - Time - convenience wrapper for working with gavl_time in C++ - - Copyright (C) Lumiera.org - 2008, Hermann Vosseler - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -* *****************************************************/ - - -#include "lib/time/timevalue.hpp" -#include "lib/time.h" -#include "lib/util-quant.hpp" - -#include -#include -#include - -using std::string; -using util::floordiv; - - -namespace lib { -namespace time { - - - - /** @note the allowed time range is explicitly limited to help overflow protection */ - const Time Time::MAX ( TimeValue::buildRaw_(+std::numeric_limits::max() / 30) ); - const Time Time::MIN ( TimeValue::buildRaw_(-_raw(Time::MAX) ) ); - const Time Time::ZERO; - - const Time Time::ANYTIME(Time::MAX); - const Time Time::NEVER (Time::MIN); - - const Offset Offset::ZERO (Time::ZERO); - - - - /** convenience constructor to build an - * internal Lumiera Time value from the usual parts - * of an sexagesimal time specification. Arbitrary integral - * values are acceptable and will be summed up accordingly. - * The minute and hour part can be omitted. - * @warning internal Lumiera time values refer to an - * implementation dependent time origin/scale. - * The given value will be used as-is, without - * any further adjustments. - */ - Time::Time ( long millis - , uint secs - , uint mins - , uint hours - ) - : TimeValue(lumiera_build_time (millis,secs,mins,hours)) - { } - - - /** convenience constructor to build an Time value - * from a fraction of seconds, given as rational number. - * An example would be to the time unit of a framerate. - */ - Time::Time (FSecs const& fractionalSeconds) - : TimeValue(lumiera_rational_to_time (fractionalSeconds)) - { } - - - /** displaying an internal Lumiera Time value - * for diagnostic purposes or internal reporting. - * @warning internal Lumiera time values refer to an - * implementation dependent time origin/scale. - * @return string rendering of the actual, underlying - * implementation value, as \c h:m:s:ms - */ - Time::operator string() const - { - return string (lumiera_tmpbuf_print_time (t_)); - } - - TimeVar::operator string() const - { - return string (lumiera_tmpbuf_print_time (t_)); - } - - - /** @internal backdoor to sneak in a raw time value - * bypassing any normalisation and limiting */ - TimeValue - TimeValue::buildRaw_ (gavl_time_t raw) - { - return reinterpret_cast (raw); - } - - - - /** predefined constant for PAL framerate */ - const FrameRate FrameRate::PAL (25); - const FrameRate FrameRate::NTSC (30000,1001); - - - /** @return time span of one frame of this rate, - * cast into internal Lumiera time scale */ - Duration - FrameRate::duration() const - { - if (0 == *this) - throw error::Logic ("Impossible to quantise to an zero spaced frame grid" - , error::LUMIERA_ERROR_BOTTOM_VALUE); - - return Duration (1, *this); - } - - - Offset - operator* (boost::rational factor, Offset const& o) - { - boost::rational distance (_raw(o)); - distance *= factor; - gavl_time_t microTicks = floordiv (distance.numerator(), distance.denominator()); - return Offset(TimeValue(microTicks)); - } - - - /** offset by the given number of frames. */ - Offset::Offset (int64_t count, FrameRate const& fps) - : TimeValue (count? (count<0? -1:+1) * lumiera_framecount_to_time (::abs(count), fps) - : _raw(Duration::NIL)) - { } - - /** duration of the given number of frames. - * @note always positive; count used absolute */ - Duration::Duration (int64_t count, FrameRate const& fps) - : TimeValue (count? lumiera_framecount_to_time (abs(count), fps) : _raw(Duration::NIL)) - { } - - - /** constant to indicate "no duration" */ - const Duration Duration::NIL (Time::ZERO); - - - - - - -}} // namespace lib::Time diff --git a/src/lib/time.cpp b/src/lib/time/time.cpp similarity index 63% rename from src/lib/time.cpp rename to src/lib/time/time.cpp index d68b883cb..3fffe3307 100644 --- a/src/lib/time.cpp +++ b/src/lib/time/time.cpp @@ -1,8 +1,9 @@ /* - Time - Utilities for handling time + Time - Lumiera time handling foundation Copyright (C) Lumiera.org 2008, Christian Thaeter + 2010, Stefan Kangas 2011, Hermann Vosseler This program is free software; you can redistribute it and/or @@ -18,19 +19,45 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ -#include "lib/time.h" +* *****************************************************/ + + +/** @file time.cpp + ** Lumiera time handling core implementation unit. + ** This translation unit generates code for the Lumiera internal time wrapper, + ** based on gavl_time_t, associated constants, marker classes for the derived + ** time entities (TimeVar, Offset, Duration, TimeSpan, FrameRate) and for the + ** basic time and frame rate conversion functions. + ** + ** Client code includes either time.h (for basics and conversion functions) + ** or timevalue.hpp (for the time entities), timequant.hpp for grid aligned + ** time values or timecode.hpp + ** + ** @see Time + ** @see TimeValue + ** @see Grid + ** @see TimeValue_test + ** @see QuantiserBasics_test + ** + */ + + #include "lib/error.hpp" +#include "lib/time.h" +#include "lib/time/timevalue.hpp" #include "lib/util-quant.hpp" extern "C" { #include "lib/tmpbuf.h" } -#include #include +#include +#include +#include +using std::string; using util::floordiv; using lib::time::FSecs; using lib::time::FrameRate; @@ -46,6 +73,137 @@ namespace error = lumiera::error; * we need to multiply or divide by 1000 to get correct results. */ #define GAVL_TIME_SCALE_MS (GAVL_TIME_SCALE / 1000) + +namespace lib { +namespace time { + + + + /** @note the allowed time range is explicitly limited to help overflow protection */ + const Time Time::MAX ( TimeValue::buildRaw_(+std::numeric_limits::max() / 30) ); + const Time Time::MIN ( TimeValue::buildRaw_(-_raw(Time::MAX) ) ); + const Time Time::ZERO; + + const Time Time::ANYTIME(Time::MAX); + const Time Time::NEVER (Time::MIN); + + const Offset Offset::ZERO (Time::ZERO); + + + + /** convenience constructor to build an + * internal Lumiera Time value from the usual parts + * of an sexagesimal time specification. Arbitrary integral + * values are acceptable and will be summed up accordingly. + * The minute and hour part can be omitted. + * @warning internal Lumiera time values refer to an + * implementation dependent time origin/scale. + * The given value will be used as-is, without + * any further adjustments. + */ + Time::Time ( long millis + , uint secs + , uint mins + , uint hours + ) + : TimeValue(lumiera_build_time (millis,secs,mins,hours)) + { } + + + /** convenience constructor to build an Time value + * from a fraction of seconds, given as rational number. + * An example would be to the time unit of a framerate. + */ + Time::Time (FSecs const& fractionalSeconds) + : TimeValue(lumiera_rational_to_time (fractionalSeconds)) + { } + + + /** displaying an internal Lumiera Time value + * for diagnostic purposes or internal reporting. + * @warning internal Lumiera time values refer to an + * implementation dependent time origin/scale. + * @return string rendering of the actual, underlying + * implementation value, as \c h:m:s:ms + */ + Time::operator string() const + { + return string (lumiera_tmpbuf_print_time (t_)); + } + + TimeVar::operator string() const + { + return string (lumiera_tmpbuf_print_time (t_)); + } + + + /** @internal backdoor to sneak in a raw time value + * bypassing any normalisation and limiting */ + TimeValue + TimeValue::buildRaw_ (gavl_time_t raw) + { + return reinterpret_cast (raw); + } + + + + /** predefined constant for PAL framerate */ + const FrameRate FrameRate::PAL (25); + const FrameRate FrameRate::NTSC (30000,1001); + + + /** @return time span of one frame of this rate, + * cast into internal Lumiera time scale */ + Duration + FrameRate::duration() const + { + if (0 == *this) + throw error::Logic ("Impossible to quantise to an zero spaced frame grid" + , error::LUMIERA_ERROR_BOTTOM_VALUE); + + return Duration (1, *this); + } + + + Offset + operator* (boost::rational factor, Offset const& o) + { + boost::rational distance (_raw(o)); + distance *= factor; + gavl_time_t microTicks = floordiv (distance.numerator(), distance.denominator()); + return Offset(TimeValue(microTicks)); + } + + + /** offset by the given number of frames. */ + Offset::Offset (int64_t count, FrameRate const& fps) + : TimeValue (count? (count<0? -1:+1) * lumiera_framecount_to_time (::abs(count), fps) + : _raw(Duration::NIL)) + { } + + /** duration of the given number of frames. + * @note always positive; count used absolute */ + Duration::Duration (int64_t count, FrameRate const& fps) + : TimeValue (count? lumiera_framecount_to_time (abs(count), fps) : _raw(Duration::NIL)) + { } + + + /** constant to indicate "no duration" */ + const Duration Duration::NIL (Time::ZERO); + + +}} // namespace lib::Time + + + + + + + + +/* ===== implementation of the C API functions ===== */ + + char* lumiera_tmpbuf_print_time (gavl_time_t time) { diff --git a/tests/10errorhandling.tests b/tests/10errorhandling.tests index f2e4e9dfc..26b884c57 100644 --- a/tests/10errorhandling.tests +++ b/tests/10errorhandling.tests @@ -1,5 +1,5 @@ -TESTING "Error handling" ./test-error +TESTING "Error handling" ./test-errorstate TEST "no error" < -# Hermann Vosseler -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of the -# License, or (at your option) any later version. -# -# This program 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 General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -tests_srcdir = $(top_srcdir)/tests - - -check_PROGRAMS += test-error -test_error_SOURCES = $(tests_srcdir)/library/test-error.c -test_error_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror -test_error_LDADD = $(LUMIERA_LIBS) liblumiera.la - -check_PROGRAMS += test-locking -test_locking_SOURCES = $(tests_srcdir)/library/test-locking.c -test_locking_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror -test_locking_LDADD = $(LUMIERA_LIBS) liblumiera.la - -check_PROGRAMS += test-llist -test_llist_SOURCES = $(tests_srcdir)/library/test-llist.c -test_llist_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror -test_llist_LDADD = $(LUMIERA_LIBS) liblumiera.la - -check_PROGRAMS += test-mpool -test_mpool_SOURCES = $(tests_srcdir)/library/test-mpool.c -test_mpool_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror -test_mpool_LDADD = $(LUMIERA_LIBS) liblumiera.la - -check_PROGRAMS += test-psplay -test_psplay_SOURCES = $(tests_srcdir)/library/test-psplay.c -test_psplay_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror -I$(top_srcdir)/src/ -test_psplay_LDADD = $(LUMIERA_LIBS) liblumiera.la - -check_PROGRAMS += test-safeclib -test_safeclib_SOURCES = $(tests_srcdir)/library/test-safeclib.c -test_safeclib_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror -test_safeclib_LDADD = $(LUMIERA_LIBS) liblumiera.la - -check_PROGRAMS += test-time -test_time_SOURCES = $(tests_srcdir)/library/test-time.c -test_time_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror -test_time_LDADD = $(LUMIERA_LIBS) liblumiera.la - -check_PROGRAMS += test-luid -test_luid_SOURCES = $(tests_srcdir)/library/test-luid.c -test_luid_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror -test_luid_LDADD = $(LUMIERA_LIBS) liblumiera.la - -check_PROGRAMS += test-filedescriptors -test_filedescriptors_SOURCES = $(tests_srcdir)/backend/test-filedescriptors.c -test_filedescriptors_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror -test_filedescriptors_LDADD = $(LUMIERA_LIBS) liblumierabackend.la liblumieracommon.la liblumieraproc.la -# FIXME stray dependencies on proc - -check_PROGRAMS += test-filehandles -test_filehandles_SOURCES = $(tests_srcdir)/backend/test-filehandles.c -test_filehandles_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror -test_filehandles_LDADD = $(LUMIERA_LIBS) liblumierabackend.la liblumieracommon.la liblumieraproc.la -# FIXME stray dependencies on proc - -check_PROGRAMS += test-filemmap -test_filemmap_SOURCES = $(tests_srcdir)/backend/test-filemmap.c -test_filemmap_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror -I$(top_srcdir)/src/ -test_filemmap_LDADD = $(LUMIERA_LIBS) liblumierabackend.la liblumieracommon.la liblumieraproc.la -# FIXME stray dependencies on proc - -#check_PROGRAMS += test-resourcecollector -#test_resourcecollector_SOURCES = $(tests_srcdir)/backend/test-resourcecollector.c -#test_resourcecollector_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror -I$(top_srcdir)/src/ -#test_resourcecollector_LDADD = $(LUMIERA_LIBS) liblumiera.la liblumierabackend.la liblumieraproc.la liblumieracommon.la - -check_PROGRAMS += test-fileheader -test_fileheader_SOURCES = $(tests_srcdir)/backend/test-fileheader.c -test_fileheader_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror -I$(top_srcdir)/src/ -test_fileheader_LDADD = $(LUMIERA_LIBS) liblumierabackend.la liblumieracommon.la liblumieraproc.la -# FIXME stray dependencies on proc - -# FIXME stray dependencies on proc - -check_PROGRAMS += test-slist -test_slist_SOURCES = $(tests_srcdir)/library/test-slist.c -test_slist_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror -test_slist_LDADD = $(LUMIERA_LIBS) liblumiera.la - -check_PROGRAMS += test-config -test_config_SOURCES = $(tests_srcdir)/common/test-config.c -test_config_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror -I$(top_srcdir)/src/ -test_config_LDADD = $(LUMIERA_LIBS) liblumieracommon.la liblumieraproc.la liblumierabackend.la -# FIXME stray dependencies on proc - -check_LTLIBRARIES += examplepluginc.la -examplepluginc_la_SOURCES = $(tests_srcdir)/plugin/examplepluginc/example_plugin.c -examplepluginc_la_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror -DLUMIERA_PLUGIN -I$(top_srcdir)/src/ -examplepluginc_la_LDFLAGS = -module -avoid-version -no-undefined -rpath /dev/null -shrext .lum - -check_PROGRAMS += test-interfaces -test_interfaces_SOURCES = $(tests_srcdir)/common/test-interfaces.c -test_interfaces_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror -test_interfaces_LDADD = $(LUMIERA_LIBS) liblumieracommon.la liblumierabackend.la liblumieraproc.la -# FIXME stray dependency on backend, proc - -check_PROGRAMS += test-threads -test_threads_SOURCES = $(tests_srcdir)/backend/test-threads.c -test_threads_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror -I$(top_srcdir)/src/ -test_threads_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -test_threads_LDADD = liblumierabackend.la liblumieracommon.la liblumieraproc.la - -check_PROGRAMS += test-threadpool -test_threadpool_SOURCES = $(tests_srcdir)/backend/test-threadpool.c -test_threadpool_CPPFLAGS = $(AM_CPPFLAGS) -std=gnu99 -Wall -Werror -I$(top_srcdir)/src/ -test_threadpool_CFLAGS = $(AM_CFLAGS) $(LUMIERA_BACKEND_CFLAGS) -test_threadpool_LDADD = $(LUMIERA_LIBS) liblumierabackend.la liblumieracommon.la liblumieraproc.la - -TESTS = $(tests_srcdir)/test.sh diff --git a/tests/backend/DIR_INFO b/tests/backend/DIR_INFO new file mode 100644 index 000000000..a756a2194 --- /dev/null +++ b/tests/backend/DIR_INFO @@ -0,0 +1 @@ +backend testsuite diff --git a/tests/backend/test-filedescriptors.c b/tests/backend/test-filedescriptors.c index b55b2f57c..11fb41390 100644 --- a/tests/backend/test-filedescriptors.c +++ b/tests/backend/test-filedescriptors.c @@ -1,5 +1,5 @@ /* - test-filedescriptors.c + TEST-FILEDESCRIPTORS Copyright (C) Lumiera.org 2008, Christian Thaeter @@ -17,7 +17,10 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ + +* *****************************************************/ + + #include "lib/safeclib.h" #include "common/config.h" diff --git a/tests/backend/test-filehandles.c b/tests/backend/test-filehandles.c index 7f95b0b88..9abc38fad 100644 --- a/tests/backend/test-filehandles.c +++ b/tests/backend/test-filehandles.c @@ -1,5 +1,5 @@ /* - test-filehandles.c - test filehandle management + TEST-FILEHANDLES - test filehandle management Copyright (C) Lumiera.org 2008, Christian Thaeter @@ -17,7 +17,10 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ + +* *****************************************************/ + + #include "lib/llist.h" #include "lib/tmpbuf.h" #include "common/config.h" diff --git a/tests/backend/test-fileheader.c b/tests/backend/test-fileheader.c index b1842537a..960680602 100644 --- a/tests/backend/test-fileheader.c +++ b/tests/backend/test-fileheader.c @@ -1,5 +1,5 @@ /* - test-fileheader.c - File identification + TEST-FILEHEADER - File identification Copyright (C) Lumiera.org 2010, Christian Thaeter @@ -17,7 +17,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ + +* *****************************************************/ + #include "backend/backend.h" #include "backend/fileheader.h" diff --git a/tests/backend/test-filemmap.c b/tests/backend/test-filemmap.c index 388eb59b1..31abae0f9 100644 --- a/tests/backend/test-filemmap.c +++ b/tests/backend/test-filemmap.c @@ -1,5 +1,5 @@ /* - test-files.c - test file management + TEST-FILEMAP - test file management Copyright (C) Lumiera.org 2008, Christian Thaeter @@ -17,7 +17,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ + +* *****************************************************/ + //#include //#include diff --git a/tests/backend/test-resourcecollector.c b/tests/backend/test-resourcecollector.c index 4273e8404..b6809cf07 100644 --- a/tests/backend/test-resourcecollector.c +++ b/tests/backend/test-resourcecollector.c @@ -1,5 +1,5 @@ /* - test-resourcecollector.c - test the resource collector + TEST-RESOURCECOLLECTOR - test the resource collector Copyright (C) Lumiera.org 2008, Christian Thaeter @@ -17,7 +17,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ + +* *****************************************************/ + #include "backend/resourcecollector.h" diff --git a/tests/backend/test-threadpool.c b/tests/backend/test-threadpool.c index 5a07a090a..807dc1d66 100644 --- a/tests/backend/test-threadpool.c +++ b/tests/backend/test-threadpool.c @@ -1,5 +1,5 @@ /* - test-threadpool.c - test thread pool creation and usage + TEST-THREADPOOL - test thread pool creation and usage Copyright (C) Lumiera.org 2009, Michael Ploujnikov @@ -17,7 +17,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ + +* *****************************************************/ + #include "lib/test/test.h" diff --git a/tests/backend/test-threads.c b/tests/backend/test-threads.c index 42bbf6697..23de08ec3 100644 --- a/tests/backend/test-threads.c +++ b/tests/backend/test-threads.c @@ -1,5 +1,5 @@ /* - test-threads.c - test thread management + TEST-THREADS - test thread management Copyright (C) Lumiera.org 2008, Christian Thaeter @@ -17,7 +17,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ + +* *****************************************************/ + //#include //#include diff --git a/tests/bugs/DIR_INFO b/tests/bugs/DIR_INFO deleted file mode 100644 index 97189d9f9..000000000 --- a/tests/bugs/DIR_INFO +++ /dev/null @@ -1 +0,0 @@ -tests against reported bugs diff --git a/tests/components/DIR_INFO b/tests/core/DIR_INFO similarity index 100% rename from tests/components/DIR_INFO rename to tests/core/DIR_INFO diff --git a/tests/components/Makefile.am b/tests/core/Makefile.am similarity index 100% rename from tests/components/Makefile.am rename to tests/core/Makefile.am diff --git a/tests/common/test-config.c b/tests/core/application/test-configloader.c similarity index 98% rename from tests/common/test-config.c rename to tests/core/application/test-configloader.c index fc64caabb..b5b410fbf 100644 --- a/tests/common/test-config.c +++ b/tests/core/application/test-configloader.c @@ -1,5 +1,5 @@ /* - test-config.c - test the config system + TEST-CONFIGLOADER - test the config system Copyright (C) Lumiera.org 2008, Christian Thaeter @@ -18,7 +18,10 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ + +* *****************************************************/ + + #include "lib/tmpbuf.h" #include "common/config.h" diff --git a/tests/common/test-interfaces.c b/tests/core/application/test-interfaces.c similarity index 99% rename from tests/common/test-interfaces.c rename to tests/core/application/test-interfaces.c index d1eb71e5d..07922a4d6 100644 --- a/tests/common/test-interfaces.c +++ b/tests/core/application/test-interfaces.c @@ -1,5 +1,5 @@ /* - test-interfaces.c - test interfaces declaration and implementation + TEST-INTERFACES - test interfaces declaration and implementation Copyright (C) Lumiera.org 2008, Christian Thaeter @@ -17,7 +17,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ + +* *****************************************************/ + #include "common/interface.h" #include "common/interfaceregistry.h" diff --git a/tests/components/backend/media-access-mock-test.cpp b/tests/core/backend/media-access-mock-test.cpp similarity index 100% rename from tests/components/backend/media-access-mock-test.cpp rename to tests/core/backend/media-access-mock-test.cpp diff --git a/tests/components/backend/media-access-mock.cpp b/tests/core/backend/media-access-mock.cpp similarity index 100% rename from tests/components/backend/media-access-mock.cpp rename to tests/core/backend/media-access-mock.cpp diff --git a/tests/components/backend/media-access-mock.hpp b/tests/core/backend/media-access-mock.hpp similarity index 100% rename from tests/components/backend/media-access-mock.hpp rename to tests/core/backend/media-access-mock.hpp diff --git a/tests/components/proc/asset/asset-category-test.cpp b/tests/core/proc/asset/asset-category-test.cpp similarity index 100% rename from tests/components/proc/asset/asset-category-test.cpp rename to tests/core/proc/asset/asset-category-test.cpp diff --git a/tests/components/proc/asset/asset-diagnostics.hpp b/tests/core/proc/asset/asset-diagnostics.hpp similarity index 100% rename from tests/components/proc/asset/asset-diagnostics.hpp rename to tests/core/proc/asset/asset-diagnostics.hpp diff --git a/tests/components/proc/asset/basicpipetest.cpp b/tests/core/proc/asset/basicpipetest.cpp similarity index 100% rename from tests/components/proc/asset/basicpipetest.cpp rename to tests/core/proc/asset/basicpipetest.cpp diff --git a/tests/components/proc/asset/compoundmediatest.cpp b/tests/core/proc/asset/compoundmediatest.cpp similarity index 100% rename from tests/components/proc/asset/compoundmediatest.cpp rename to tests/core/proc/asset/compoundmediatest.cpp diff --git a/tests/components/proc/asset/create-asset-test.cpp b/tests/core/proc/asset/create-asset-test.cpp similarity index 100% rename from tests/components/proc/asset/create-asset-test.cpp rename to tests/core/proc/asset/create-asset-test.cpp diff --git a/tests/components/proc/asset/deleteassettest.cpp b/tests/core/proc/asset/deleteassettest.cpp similarity index 100% rename from tests/components/proc/asset/deleteassettest.cpp rename to tests/core/proc/asset/deleteassettest.cpp diff --git a/tests/components/proc/asset/dependent-assets-test.cpp b/tests/core/proc/asset/dependent-assets-test.cpp similarity index 100% rename from tests/components/proc/asset/dependent-assets-test.cpp rename to tests/core/proc/asset/dependent-assets-test.cpp diff --git a/tests/components/proc/asset/entry-id-test.cpp b/tests/core/proc/asset/entry-id-test.cpp similarity index 100% rename from tests/components/proc/asset/entry-id-test.cpp rename to tests/core/proc/asset/entry-id-test.cpp diff --git a/tests/components/proc/asset/identityofassetstest.cpp b/tests/core/proc/asset/identityofassetstest.cpp similarity index 100% rename from tests/components/proc/asset/identityofassetstest.cpp rename to tests/core/proc/asset/identityofassetstest.cpp diff --git a/tests/components/proc/asset/makecliptest.cpp b/tests/core/proc/asset/makecliptest.cpp similarity index 100% rename from tests/components/proc/asset/makecliptest.cpp rename to tests/core/proc/asset/makecliptest.cpp diff --git a/tests/components/proc/asset/mediastructurequerytest.cpp b/tests/core/proc/asset/mediastructurequerytest.cpp similarity index 100% rename from tests/components/proc/asset/mediastructurequerytest.cpp rename to tests/core/proc/asset/mediastructurequerytest.cpp diff --git a/tests/components/proc/asset/meta/time-grid-basics-test.cpp b/tests/core/proc/asset/meta/time-grid-basics-test.cpp similarity index 100% rename from tests/components/proc/asset/meta/time-grid-basics-test.cpp rename to tests/core/proc/asset/meta/time-grid-basics-test.cpp diff --git a/tests/components/proc/asset/orderingofassetstest.cpp b/tests/core/proc/asset/orderingofassetstest.cpp similarity index 100% rename from tests/components/proc/asset/orderingofassetstest.cpp rename to tests/core/proc/asset/orderingofassetstest.cpp diff --git a/tests/components/proc/asset/testasset.cpp b/tests/core/proc/asset/testasset.cpp similarity index 100% rename from tests/components/proc/asset/testasset.cpp rename to tests/core/proc/asset/testasset.cpp diff --git a/tests/components/proc/asset/testasset.hpp b/tests/core/proc/asset/testasset.hpp similarity index 100% rename from tests/components/proc/asset/testasset.hpp rename to tests/core/proc/asset/testasset.hpp diff --git a/tests/components/proc/asset/testclipasset.hpp b/tests/core/proc/asset/testclipasset.hpp similarity index 100% rename from tests/components/proc/asset/testclipasset.hpp rename to tests/core/proc/asset/testclipasset.hpp diff --git a/tests/components/proc/asset/typed-id-test.cpp b/tests/core/proc/asset/typed-id-test.cpp similarity index 100% rename from tests/components/proc/asset/typed-id-test.cpp rename to tests/core/proc/asset/typed-id-test.cpp diff --git a/tests/components/proc/control/argument-tuple-accept-test.cpp b/tests/core/proc/control/argument-tuple-accept-test.cpp similarity index 100% rename from tests/components/proc/control/argument-tuple-accept-test.cpp rename to tests/core/proc/control/argument-tuple-accept-test.cpp diff --git a/tests/components/proc/control/command-argument-test.cpp b/tests/core/proc/control/command-argument-test.cpp similarity index 100% rename from tests/components/proc/control/command-argument-test.cpp rename to tests/core/proc/control/command-argument-test.cpp diff --git a/tests/components/proc/control/command-basic-test.cpp b/tests/core/proc/control/command-basic-test.cpp similarity index 100% rename from tests/components/proc/control/command-basic-test.cpp rename to tests/core/proc/control/command-basic-test.cpp diff --git a/tests/components/proc/control/command-binding-test.cpp b/tests/core/proc/control/command-binding-test.cpp similarity index 100% rename from tests/components/proc/control/command-binding-test.cpp rename to tests/core/proc/control/command-binding-test.cpp diff --git a/tests/components/proc/control/command-clone-builder-test.cpp b/tests/core/proc/control/command-clone-builder-test.cpp similarity index 100% rename from tests/components/proc/control/command-clone-builder-test.cpp rename to tests/core/proc/control/command-clone-builder-test.cpp diff --git a/tests/components/proc/control/command-equality-test.cpp b/tests/core/proc/control/command-equality-test.cpp similarity index 100% rename from tests/components/proc/control/command-equality-test.cpp rename to tests/core/proc/control/command-equality-test.cpp diff --git a/tests/components/proc/control/command-mutation-test.cpp b/tests/core/proc/control/command-mutation-test.cpp similarity index 100% rename from tests/components/proc/control/command-mutation-test.cpp rename to tests/core/proc/control/command-mutation-test.cpp diff --git a/tests/components/proc/control/command-registry-test.cpp b/tests/core/proc/control/command-registry-test.cpp similarity index 100% rename from tests/components/proc/control/command-registry-test.cpp rename to tests/core/proc/control/command-registry-test.cpp diff --git a/tests/components/proc/control/command-use1-test.cpp b/tests/core/proc/control/command-use1-test.cpp similarity index 100% rename from tests/components/proc/control/command-use1-test.cpp rename to tests/core/proc/control/command-use1-test.cpp diff --git a/tests/components/proc/control/command-use2-test.cpp b/tests/core/proc/control/command-use2-test.cpp similarity index 100% rename from tests/components/proc/control/command-use2-test.cpp rename to tests/core/proc/control/command-use2-test.cpp diff --git a/tests/components/proc/control/command-use3-test.cpp b/tests/core/proc/control/command-use3-test.cpp similarity index 100% rename from tests/components/proc/control/command-use3-test.cpp rename to tests/core/proc/control/command-use3-test.cpp diff --git a/tests/components/proc/control/handling-pattern-basics-test.cpp b/tests/core/proc/control/handling-pattern-basics-test.cpp similarity index 100% rename from tests/components/proc/control/handling-pattern-basics-test.cpp rename to tests/core/proc/control/handling-pattern-basics-test.cpp diff --git a/tests/components/proc/control/handling-pattern-standard-impl-test.cpp b/tests/core/proc/control/handling-pattern-standard-impl-test.cpp similarity index 100% rename from tests/components/proc/control/handling-pattern-standard-impl-test.cpp rename to tests/core/proc/control/handling-pattern-standard-impl-test.cpp diff --git a/tests/components/proc/control/memento-tie-test.cpp b/tests/core/proc/control/memento-tie-test.cpp similarity index 100% rename from tests/components/proc/control/memento-tie-test.cpp rename to tests/core/proc/control/memento-tie-test.cpp diff --git a/tests/components/proc/control/test-dummy-commands.cpp b/tests/core/proc/control/test-dummy-commands.cpp similarity index 100% rename from tests/components/proc/control/test-dummy-commands.cpp rename to tests/core/proc/control/test-dummy-commands.cpp diff --git a/tests/components/proc/control/test-dummy-commands.hpp b/tests/core/proc/control/test-dummy-commands.hpp similarity index 100% rename from tests/components/proc/control/test-dummy-commands.hpp rename to tests/core/proc/control/test-dummy-commands.hpp diff --git a/tests/components/proc/engine/buff-table-test.cpp b/tests/core/proc/engine/buff-table-test.cpp similarity index 100% rename from tests/components/proc/engine/buff-table-test.cpp rename to tests/core/proc/engine/buff-table-test.cpp diff --git a/tests/components/proc/engine/buffer-metadata-key-test.cpp b/tests/core/proc/engine/buffer-metadata-key-test.cpp similarity index 100% rename from tests/components/proc/engine/buffer-metadata-key-test.cpp rename to tests/core/proc/engine/buffer-metadata-key-test.cpp diff --git a/tests/components/proc/engine/buffer-metadata-test.cpp b/tests/core/proc/engine/buffer-metadata-test.cpp similarity index 100% rename from tests/components/proc/engine/buffer-metadata-test.cpp rename to tests/core/proc/engine/buffer-metadata-test.cpp diff --git a/tests/components/proc/engine/buffer-provider-protocol-test.cpp b/tests/core/proc/engine/buffer-provider-protocol-test.cpp similarity index 100% rename from tests/components/proc/engine/buffer-provider-protocol-test.cpp rename to tests/core/proc/engine/buffer-provider-protocol-test.cpp diff --git a/tests/components/proc/engine/calc-stream-test.cpp b/tests/core/proc/engine/calc-stream-test.cpp similarity index 100% rename from tests/components/proc/engine/calc-stream-test.cpp rename to tests/core/proc/engine/calc-stream-test.cpp diff --git a/tests/components/proc/engine/dispatcher-interface-test.cpp b/tests/core/proc/engine/dispatcher-interface-test.cpp similarity index 100% rename from tests/components/proc/engine/dispatcher-interface-test.cpp rename to tests/core/proc/engine/dispatcher-interface-test.cpp diff --git a/tests/components/proc/engine/engine-interface-test.cpp b/tests/core/proc/engine/engine-interface-test.cpp similarity index 100% rename from tests/components/proc/engine/engine-interface-test.cpp rename to tests/core/proc/engine/engine-interface-test.cpp diff --git a/tests/components/proc/engine/node-basic-test.cpp b/tests/core/proc/engine/node-basic-test.cpp similarity index 100% rename from tests/components/proc/engine/node-basic-test.cpp rename to tests/core/proc/engine/node-basic-test.cpp diff --git a/tests/components/proc/engine/node-fabrication-test.cpp b/tests/core/proc/engine/node-fabrication-test.cpp similarity index 100% rename from tests/components/proc/engine/node-fabrication-test.cpp rename to tests/core/proc/engine/node-fabrication-test.cpp diff --git a/tests/components/proc/engine/node-operation-test.cpp b/tests/core/proc/engine/node-operation-test.cpp similarity index 100% rename from tests/components/proc/engine/node-operation-test.cpp rename to tests/core/proc/engine/node-operation-test.cpp diff --git a/tests/components/proc/engine/node-source-test.cpp b/tests/core/proc/engine/node-source-test.cpp similarity index 100% rename from tests/components/proc/engine/node-source-test.cpp rename to tests/core/proc/engine/node-source-test.cpp diff --git a/tests/components/proc/engine/testframe-test.cpp b/tests/core/proc/engine/testframe-test.cpp similarity index 100% rename from tests/components/proc/engine/testframe-test.cpp rename to tests/core/proc/engine/testframe-test.cpp diff --git a/tests/components/proc/engine/testframe.cpp b/tests/core/proc/engine/testframe.cpp similarity index 100% rename from tests/components/proc/engine/testframe.cpp rename to tests/core/proc/engine/testframe.cpp diff --git a/tests/components/proc/engine/testframe.hpp b/tests/core/proc/engine/testframe.hpp similarity index 100% rename from tests/components/proc/engine/testframe.hpp rename to tests/core/proc/engine/testframe.hpp diff --git a/tests/components/proc/engine/tracking-heap-block-provider-test.cpp b/tests/core/proc/engine/tracking-heap-block-provider-test.cpp similarity index 100% rename from tests/components/proc/engine/tracking-heap-block-provider-test.cpp rename to tests/core/proc/engine/tracking-heap-block-provider-test.cpp diff --git a/tests/components/proc/mobject/builder/buildertooltest.cpp b/tests/core/proc/mobject/builder/buildertooltest.cpp similarity index 100% rename from tests/components/proc/mobject/builder/buildertooltest.cpp rename to tests/core/proc/mobject/builder/buildertooltest.cpp diff --git a/tests/components/proc/mobject/builder/buildsegmenttest.cpp b/tests/core/proc/mobject/builder/buildsegmenttest.cpp similarity index 100% rename from tests/components/proc/mobject/builder/buildsegmenttest.cpp rename to tests/core/proc/mobject/builder/buildsegmenttest.cpp diff --git a/tests/components/proc/mobject/builder/fixture-change-detector-test.cpp b/tests/core/proc/mobject/builder/fixture-change-detector-test.cpp similarity index 100% rename from tests/components/proc/mobject/builder/fixture-change-detector-test.cpp rename to tests/core/proc/mobject/builder/fixture-change-detector-test.cpp diff --git a/tests/components/proc/mobject/builder/model-port-registry-test.cpp b/tests/core/proc/mobject/builder/model-port-registry-test.cpp similarity index 100% rename from tests/components/proc/mobject/builder/model-port-registry-test.cpp rename to tests/core/proc/mobject/builder/model-port-registry-test.cpp diff --git a/tests/components/proc/mobject/builder/segmentation-datastructure-test.cpp b/tests/core/proc/mobject/builder/segmentation-datastructure-test.cpp similarity index 100% rename from tests/components/proc/mobject/builder/segmentation-datastructure-test.cpp rename to tests/core/proc/mobject/builder/segmentation-datastructure-test.cpp diff --git a/tests/components/proc/mobject/controller/rendersegmenttest.cpp b/tests/core/proc/mobject/controller/rendersegmenttest.cpp similarity index 100% rename from tests/components/proc/mobject/controller/rendersegmenttest.cpp rename to tests/core/proc/mobject/controller/rendersegmenttest.cpp diff --git a/tests/components/proc/mobject/mobject-interface-test.cpp b/tests/core/proc/mobject/mobject-interface-test.cpp similarity index 100% rename from tests/components/proc/mobject/mobject-interface-test.cpp rename to tests/core/proc/mobject/mobject-interface-test.cpp diff --git a/tests/components/proc/mobject/mobject-ref-test.cpp b/tests/core/proc/mobject/mobject-ref-test.cpp similarity index 100% rename from tests/components/proc/mobject/mobject-ref-test.cpp rename to tests/core/proc/mobject/mobject-ref-test.cpp diff --git a/tests/components/proc/mobject/output-mapping-test.cpp b/tests/core/proc/mobject/output-mapping-test.cpp similarity index 100% rename from tests/components/proc/mobject/output-mapping-test.cpp rename to tests/core/proc/mobject/output-mapping-test.cpp diff --git a/tests/components/proc/mobject/placement-basic-test.cpp b/tests/core/proc/mobject/placement-basic-test.cpp similarity index 100% rename from tests/components/proc/mobject/placement-basic-test.cpp rename to tests/core/proc/mobject/placement-basic-test.cpp diff --git a/tests/components/proc/mobject/placement-hierarchy-test.cpp b/tests/core/proc/mobject/placement-hierarchy-test.cpp similarity index 100% rename from tests/components/proc/mobject/placement-hierarchy-test.cpp rename to tests/core/proc/mobject/placement-hierarchy-test.cpp diff --git a/tests/components/proc/mobject/placement-object-identity-test.cpp b/tests/core/proc/mobject/placement-object-identity-test.cpp similarity index 100% rename from tests/components/proc/mobject/placement-object-identity-test.cpp rename to tests/core/proc/mobject/placement-object-identity-test.cpp diff --git a/tests/components/proc/mobject/placement-ref-test.cpp b/tests/core/proc/mobject/placement-ref-test.cpp similarity index 100% rename from tests/components/proc/mobject/placement-ref-test.cpp rename to tests/core/proc/mobject/placement-ref-test.cpp diff --git a/tests/components/proc/mobject/session/addcliptest.cpp b/tests/core/proc/mobject/session/addcliptest.cpp similarity index 100% rename from tests/components/proc/mobject/session/addcliptest.cpp rename to tests/core/proc/mobject/session/addcliptest.cpp diff --git a/tests/components/proc/mobject/session/defs-manager-impl-test.cpp b/tests/core/proc/mobject/session/defs-manager-impl-test.cpp similarity index 100% rename from tests/components/proc/mobject/session/defs-manager-impl-test.cpp rename to tests/core/proc/mobject/session/defs-manager-impl-test.cpp diff --git a/tests/components/proc/mobject/session/defs-manager-test.cpp b/tests/core/proc/mobject/session/defs-manager-test.cpp similarity index 100% rename from tests/components/proc/mobject/session/defs-manager-test.cpp rename to tests/core/proc/mobject/session/defs-manager-test.cpp diff --git a/tests/components/proc/mobject/session/defs-registry-impl-test.cpp b/tests/core/proc/mobject/session/defs-registry-impl-test.cpp similarity index 99% rename from tests/components/proc/mobject/session/defs-registry-impl-test.cpp rename to tests/core/proc/mobject/session/defs-registry-impl-test.cpp index 24d312656..65f59d856 100644 --- a/tests/components/proc/mobject/session/defs-registry-impl-test.cpp +++ b/tests/core/proc/mobject/session/defs-registry-impl-test.cpp @@ -29,7 +29,7 @@ #include "lib/format-string.hpp" #include "lib/p.hpp" -#include "../lib/query/querydiagnostics.hpp" +#include "lib/query-diagnostics.hpp" #include #include diff --git a/tests/components/proc/mobject/session/deletecliptest.cpp b/tests/core/proc/mobject/session/deletecliptest.cpp similarity index 100% rename from tests/components/proc/mobject/session/deletecliptest.cpp rename to tests/core/proc/mobject/session/deletecliptest.cpp diff --git a/tests/components/proc/mobject/session/placement-index-query-test.cpp b/tests/core/proc/mobject/session/placement-index-query-test.cpp similarity index 100% rename from tests/components/proc/mobject/session/placement-index-query-test.cpp rename to tests/core/proc/mobject/session/placement-index-query-test.cpp diff --git a/tests/components/proc/mobject/session/placement-index-test.cpp b/tests/core/proc/mobject/session/placement-index-test.cpp similarity index 100% rename from tests/components/proc/mobject/session/placement-index-test.cpp rename to tests/core/proc/mobject/session/placement-index-test.cpp diff --git a/tests/components/proc/mobject/session/placement-scope-test.cpp b/tests/core/proc/mobject/session/placement-scope-test.cpp similarity index 100% rename from tests/components/proc/mobject/session/placement-scope-test.cpp rename to tests/core/proc/mobject/session/placement-scope-test.cpp diff --git a/tests/components/proc/mobject/session/query-focus-stack-test.cpp b/tests/core/proc/mobject/session/query-focus-stack-test.cpp similarity index 100% rename from tests/components/proc/mobject/session/query-focus-stack-test.cpp rename to tests/core/proc/mobject/session/query-focus-stack-test.cpp diff --git a/tests/components/proc/mobject/session/query-focus-test.cpp b/tests/core/proc/mobject/session/query-focus-test.cpp similarity index 100% rename from tests/components/proc/mobject/session/query-focus-test.cpp rename to tests/core/proc/mobject/session/query-focus-test.cpp diff --git a/tests/components/proc/mobject/session/query-resolver-test.cpp b/tests/core/proc/mobject/session/query-resolver-test.cpp similarity index 100% rename from tests/components/proc/mobject/session/query-resolver-test.cpp rename to tests/core/proc/mobject/session/query-resolver-test.cpp diff --git a/tests/components/proc/mobject/session/rebuildfixturetest.cpp b/tests/core/proc/mobject/session/rebuildfixturetest.cpp similarity index 100% rename from tests/components/proc/mobject/session/rebuildfixturetest.cpp rename to tests/core/proc/mobject/session/rebuildfixturetest.cpp diff --git a/tests/components/proc/mobject/session/scope-path-test.cpp b/tests/core/proc/mobject/session/scope-path-test.cpp similarity index 100% rename from tests/components/proc/mobject/session/scope-path-test.cpp rename to tests/core/proc/mobject/session/scope-path-test.cpp diff --git a/tests/components/proc/mobject/session/scope-query-test.cpp b/tests/core/proc/mobject/session/scope-query-test.cpp similarity index 100% rename from tests/components/proc/mobject/session/scope-query-test.cpp rename to tests/core/proc/mobject/session/scope-query-test.cpp diff --git a/tests/components/proc/mobject/session/session-element-query-test.cpp b/tests/core/proc/mobject/session/session-element-query-test.cpp similarity index 100% rename from tests/components/proc/mobject/session/session-element-query-test.cpp rename to tests/core/proc/mobject/session/session-element-query-test.cpp diff --git a/tests/components/proc/mobject/session/session-element-tracker-test.cpp b/tests/core/proc/mobject/session/session-element-tracker-test.cpp similarity index 100% rename from tests/components/proc/mobject/session/session-element-tracker-test.cpp rename to tests/core/proc/mobject/session/session-element-tracker-test.cpp diff --git a/tests/components/proc/mobject/session/session-modify-parts-test.cpp b/tests/core/proc/mobject/session/session-modify-parts-test.cpp similarity index 100% rename from tests/components/proc/mobject/session/session-modify-parts-test.cpp rename to tests/core/proc/mobject/session/session-modify-parts-test.cpp diff --git a/tests/components/proc/mobject/session/session-service-access-test.cpp b/tests/core/proc/mobject/session/session-service-access-test.cpp similarity index 100% rename from tests/components/proc/mobject/session/session-service-access-test.cpp rename to tests/core/proc/mobject/session/session-service-access-test.cpp diff --git a/tests/components/proc/mobject/session/session-structure-test.cpp b/tests/core/proc/mobject/session/session-structure-test.cpp similarity index 100% rename from tests/components/proc/mobject/session/session-structure-test.cpp rename to tests/core/proc/mobject/session/session-structure-test.cpp diff --git a/tests/components/proc/mobject/session/sessionmanagertest.cpp b/tests/core/proc/mobject/session/sessionmanagertest.cpp similarity index 100% rename from tests/components/proc/mobject/session/sessionmanagertest.cpp rename to tests/core/proc/mobject/session/sessionmanagertest.cpp diff --git a/tests/components/proc/mobject/session/test-scope-invalid.hpp b/tests/core/proc/mobject/session/test-scope-invalid.hpp similarity index 100% rename from tests/components/proc/mobject/session/test-scope-invalid.hpp rename to tests/core/proc/mobject/session/test-scope-invalid.hpp diff --git a/tests/components/proc/mobject/session/test-scopes.cpp b/tests/core/proc/mobject/session/test-scopes.cpp similarity index 100% rename from tests/components/proc/mobject/session/test-scopes.cpp rename to tests/core/proc/mobject/session/test-scopes.cpp diff --git a/tests/components/proc/mobject/session/test-scopes.hpp b/tests/core/proc/mobject/session/test-scopes.hpp similarity index 100% rename from tests/components/proc/mobject/session/test-scopes.hpp rename to tests/core/proc/mobject/session/test-scopes.hpp diff --git a/tests/components/proc/mobject/session/testclip.cpp b/tests/core/proc/mobject/session/testclip.cpp similarity index 100% rename from tests/components/proc/mobject/session/testclip.cpp rename to tests/core/proc/mobject/session/testclip.cpp diff --git a/tests/components/proc/mobject/session/testclip.hpp b/tests/core/proc/mobject/session/testclip.hpp similarity index 100% rename from tests/components/proc/mobject/session/testclip.hpp rename to tests/core/proc/mobject/session/testclip.hpp diff --git a/tests/components/proc/mobject/session/testroot.hpp b/tests/core/proc/mobject/session/testroot.hpp similarity index 100% rename from tests/components/proc/mobject/session/testroot.hpp rename to tests/core/proc/mobject/session/testroot.hpp diff --git a/tests/components/proc/mobject/session/testsession1.hpp b/tests/core/proc/mobject/session/testsession1.hpp similarity index 100% rename from tests/components/proc/mobject/session/testsession1.hpp rename to tests/core/proc/mobject/session/testsession1.hpp diff --git a/tests/components/proc/mobject/session/timeline-sequence-handling-test.cpp b/tests/core/proc/mobject/session/timeline-sequence-handling-test.cpp similarity index 100% rename from tests/components/proc/mobject/session/timeline-sequence-handling-test.cpp rename to tests/core/proc/mobject/session/timeline-sequence-handling-test.cpp diff --git a/tests/components/proc/play/diagnostic-output-slot.hpp b/tests/core/proc/play/diagnostic-output-slot.hpp similarity index 100% rename from tests/components/proc/play/diagnostic-output-slot.hpp rename to tests/core/proc/play/diagnostic-output-slot.hpp diff --git a/tests/components/proc/play/dummy-play-connection-test.cpp b/tests/core/proc/play/dummy-play-connection-test.cpp similarity index 100% rename from tests/components/proc/play/dummy-play-connection-test.cpp rename to tests/core/proc/play/dummy-play-connection-test.cpp diff --git a/tests/components/proc/play/output-slot-protocol-test.cpp b/tests/core/proc/play/output-slot-protocol-test.cpp similarity index 100% rename from tests/components/proc/play/output-slot-protocol-test.cpp rename to tests/core/proc/play/output-slot-protocol-test.cpp diff --git a/tests/components/proc/play/timing-constraints-test.cpp b/tests/core/proc/play/timing-constraints-test.cpp similarity index 100% rename from tests/components/proc/play/timing-constraints-test.cpp rename to tests/core/proc/play/timing-constraints-test.cpp diff --git a/tests/include/DIR_INFO b/tests/include/DIR_INFO new file mode 100644 index 000000000..74ee1bdcb --- /dev/null +++ b/tests/include/DIR_INFO @@ -0,0 +1 @@ +test support helpers and interfaces diff --git a/tests/lib/DIR_INFO b/tests/library/DIR_INFO similarity index 100% rename from tests/lib/DIR_INFO rename to tests/library/DIR_INFO diff --git a/tests/lib/Makefile.am b/tests/library/Makefile.am similarity index 100% rename from tests/lib/Makefile.am rename to tests/library/Makefile.am diff --git a/tests/lib/advice/advice-basics-test.cpp b/tests/library/advice/advice-basics-test.cpp similarity index 100% rename from tests/lib/advice/advice-basics-test.cpp rename to tests/library/advice/advice-basics-test.cpp diff --git a/tests/lib/advice/advice-binding-pattern-test.cpp b/tests/library/advice/advice-binding-pattern-test.cpp similarity index 100% rename from tests/lib/advice/advice-binding-pattern-test.cpp rename to tests/library/advice/advice-binding-pattern-test.cpp diff --git a/tests/lib/advice/advice-configuration-test.cpp b/tests/library/advice/advice-configuration-test.cpp similarity index 100% rename from tests/lib/advice/advice-configuration-test.cpp rename to tests/library/advice/advice-configuration-test.cpp diff --git a/tests/lib/advice/advice-index-test.cpp b/tests/library/advice/advice-index-test.cpp similarity index 100% rename from tests/lib/advice/advice-index-test.cpp rename to tests/library/advice/advice-index-test.cpp diff --git a/tests/lib/advice/advice-multiplicity-test.cpp b/tests/library/advice/advice-multiplicity-test.cpp similarity index 100% rename from tests/lib/advice/advice-multiplicity-test.cpp rename to tests/library/advice/advice-multiplicity-test.cpp diff --git a/tests/lib/advice/advice-situations-test.cpp b/tests/library/advice/advice-situations-test.cpp similarity index 100% rename from tests/lib/advice/advice-situations-test.cpp rename to tests/library/advice/advice-situations-test.cpp diff --git a/tests/lib/allocation-cluster-test.cpp b/tests/library/allocation-cluster-test.cpp similarity index 100% rename from tests/lib/allocation-cluster-test.cpp rename to tests/library/allocation-cluster-test.cpp diff --git a/tests/lib/app-config-test.cpp b/tests/library/app-config-test.cpp similarity index 100% rename from tests/lib/app-config-test.cpp rename to tests/library/app-config-test.cpp diff --git a/tests/lib/bool-checkable-test.cpp b/tests/library/bool-checkable-test.cpp similarity index 100% rename from tests/lib/bool-checkable-test.cpp rename to tests/library/bool-checkable-test.cpp diff --git a/tests/library/test-error.c b/tests/library/c-lib/test-errorstate.c similarity index 93% rename from tests/library/test-error.c rename to tests/library/c-lib/test-errorstate.c index 40e907f8d..b936c1d30 100644 --- a/tests/library/test-error.c +++ b/tests/library/c-lib/test-errorstate.c @@ -1,5 +1,5 @@ /* - test-error.c - test error handling + TEST-ERRORSTATE - test handling of error flags Copyright (C) Lumiera.org 2008, Christian Thaeter @@ -17,7 +17,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ + +* *****************************************************/ + #include #include diff --git a/tests/library/test-llist.c b/tests/library/c-lib/test-llist.c similarity index 98% rename from tests/library/test-llist.c rename to tests/library/c-lib/test-llist.c index 0cbef6107..85162e608 100644 --- a/tests/library/test-llist.c +++ b/tests/library/c-lib/test-llist.c @@ -1,5 +1,5 @@ /* - test-llist.c - test the linked list lib + TEST-LLIST - test the linked list lib Copyright (C) Lumiera.org 2008, Christian Thaeter @@ -17,7 +17,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ + +* *****************************************************/ + #include diff --git a/tests/library/test-locking.c b/tests/library/c-lib/test-locking.c similarity index 98% rename from tests/library/test-locking.c rename to tests/library/c-lib/test-locking.c index 4210e8327..c883dc2ff 100644 --- a/tests/library/test-locking.c +++ b/tests/library/c-lib/test-locking.c @@ -1,5 +1,5 @@ /* - test-locking.c - test locking functions + TEST-LOCKING - test locking functions Copyright (C) Lumiera.org 2008, Christian Thaeter @@ -17,7 +17,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ + +* *****************************************************/ + #include "lib/test/test.h" #include "lib/mutex.h" diff --git a/tests/library/test-luid.c b/tests/library/c-lib/test-luid.c similarity index 92% rename from tests/library/test-luid.c rename to tests/library/c-lib/test-luid.c index e04e3f584..f2902c74b 100644 --- a/tests/library/test-luid.c +++ b/tests/library/c-lib/test-luid.c @@ -1,5 +1,5 @@ /* - test-luid.c - test the luid lib + TEST-LUID - test the Lumiera Uniform Identifier Copyright (C) Lumiera.org 2007, 2008 Christian Thaeter @@ -17,17 +17,14 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ -//#include "cinelerra-config.h" -//#include +* *****************************************************/ #include "lib/luid.h" #include -//CINELERRA_ERROR_DEFINE(TEST, "test error"); int main (int argc, char** argv) diff --git a/tests/library/test-mpool.c b/tests/library/c-lib/test-mpool.c similarity index 98% rename from tests/library/test-mpool.c rename to tests/library/c-lib/test-mpool.c index 0975291a6..192cd6f9c 100644 --- a/tests/library/test-mpool.c +++ b/tests/library/c-lib/test-mpool.c @@ -1,5 +1,5 @@ /* - test-mpool.c - memory pool for constant sized objects + TEST-MPOOL - memory pool for constant sized objects Copyright (C) Lumiera.org 2009, Christian Thaeter @@ -17,7 +17,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ + +* *****************************************************/ + #include "lib/test/test.h" #include "lib/mpool.h" diff --git a/tests/library/test-psplay.c b/tests/library/c-lib/test-psplay.c similarity index 98% rename from tests/library/test-psplay.c rename to tests/library/c-lib/test-psplay.c index 0d345fd94..dd652d5bb 100644 --- a/tests/library/test-psplay.c +++ b/tests/library/c-lib/test-psplay.c @@ -1,5 +1,5 @@ /* - test-psplay.c - test the probabilistic splay tree + TEST-PSPLAY - test the probabilistic splay tree Copyright (C) Lumiera.org 2008, Christian Thaeter @@ -17,7 +17,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ + +* *****************************************************/ + #include #include diff --git a/tests/library/test-safeclib.c b/tests/library/c-lib/test-safeclib.c similarity index 95% rename from tests/library/test-safeclib.c rename to tests/library/c-lib/test-safeclib.c index bbb77c77f..63e503b4a 100644 --- a/tests/library/test-safeclib.c +++ b/tests/library/c-lib/test-safeclib.c @@ -1,4 +1,6 @@ /* + TEST-SAFECLIB - some checked C operations + Copyright (C) Lumiera.org 2008, Christian Thaeter @@ -15,7 +17,10 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ + +* *****************************************************/ + + #include "lib/safeclib.h" #include "lib/tmpbuf.h" /* not factored out yet */ #include "lib/test/test.h" diff --git a/tests/library/test-slist.c b/tests/library/c-lib/test-slist.c similarity index 90% rename from tests/library/test-slist.c rename to tests/library/c-lib/test-slist.c index ddacbde1e..b18374194 100644 --- a/tests/library/test-slist.c +++ b/tests/library/c-lib/test-slist.c @@ -1,23 +1,25 @@ /* - * test-slist.c - test the linked list lib - * - * Copyright (C) Lumiera.org - * 2009 Anton Yakovlev - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ + TEST-SLIST - test the linked list lib + + Copyright (C) Lumiera.org + 2009, Anton Yakovlev + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + #include "lib/slist.h" #include "lib/test/test.h" diff --git a/tests/library/test-time.c b/tests/library/c-lib/test-time.c similarity index 85% rename from tests/library/test-time.c rename to tests/library/c-lib/test-time.c index 97d667435..67c42c133 100644 --- a/tests/library/test-time.c +++ b/tests/library/c-lib/test-time.c @@ -1,29 +1,30 @@ /* - * test-time.c - test the time conversion lib - * - * Copyright (C) Lumiera.org - * 2010 Stefan Kangas - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ + TEST-TIME - test the time conversion lib + + Copyright (C) Lumiera.org + 2010 Stefan Kangas + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ -typedef unsigned int uint; #include "lib/test/test.h" #include "lib/time.h" +#include #include static int diff --git a/tests/lib/cmdline-wrapper-test.cpp b/tests/library/cmdline-wrapper-test.cpp similarity index 100% rename from tests/lib/cmdline-wrapper-test.cpp rename to tests/library/cmdline-wrapper-test.cpp diff --git a/tests/lib/custom-shared-ptr-test.cpp b/tests/library/custom-shared-ptr-test.cpp similarity index 100% rename from tests/lib/custom-shared-ptr-test.cpp rename to tests/library/custom-shared-ptr-test.cpp diff --git a/tests/lib/del-stash-test.cpp b/tests/library/del-stash-test.cpp similarity index 100% rename from tests/lib/del-stash-test.cpp rename to tests/library/del-stash-test.cpp diff --git a/tests/lib/diagnostic-context-test.cpp b/tests/library/diagnostic-context-test.cpp similarity index 100% rename from tests/lib/diagnostic-context-test.cpp rename to tests/library/diagnostic-context-test.cpp diff --git a/tests/lib/exceptionerrortest.cpp b/tests/library/exceptionerrortest.cpp similarity index 100% rename from tests/lib/exceptionerrortest.cpp rename to tests/library/exceptionerrortest.cpp diff --git a/tests/lib/format-helper-test.cpp b/tests/library/format-helper-test.cpp similarity index 100% rename from tests/lib/format-helper-test.cpp rename to tests/library/format-helper-test.cpp diff --git a/tests/lib/format-string-test.cpp b/tests/library/format-string-test.cpp similarity index 100% rename from tests/lib/format-string-test.cpp rename to tests/library/format-string-test.cpp diff --git a/tests/lib/functor-util-test.cpp b/tests/library/functor-util-test.cpp similarity index 100% rename from tests/lib/functor-util-test.cpp rename to tests/library/functor-util-test.cpp diff --git a/tests/lib/hash-generator-test.cpp b/tests/library/hash-generator-test.cpp similarity index 100% rename from tests/lib/hash-generator-test.cpp rename to tests/library/hash-generator-test.cpp diff --git a/tests/lib/hash-indexed-test.cpp b/tests/library/hash-indexed-test.cpp similarity index 100% rename from tests/lib/hash-indexed-test.cpp rename to tests/library/hash-indexed-test.cpp diff --git a/tests/lib/helloworldtest.cpp b/tests/library/helloworldtest.cpp similarity index 100% rename from tests/lib/helloworldtest.cpp rename to tests/library/helloworldtest.cpp diff --git a/tests/lib/item-wrapper-test.cpp b/tests/library/item-wrapper-test.cpp similarity index 100% rename from tests/lib/item-wrapper-test.cpp rename to tests/library/item-wrapper-test.cpp diff --git a/tests/lib/iter-adapter-stl-test.cpp b/tests/library/iter-adapter-stl-test.cpp similarity index 100% rename from tests/lib/iter-adapter-stl-test.cpp rename to tests/library/iter-adapter-stl-test.cpp diff --git a/tests/lib/iter-adapter-test.cpp b/tests/library/iter-adapter-test.cpp similarity index 100% rename from tests/lib/iter-adapter-test.cpp rename to tests/library/iter-adapter-test.cpp diff --git a/tests/lib/iter-explorer-test.cpp b/tests/library/iter-explorer-test.cpp similarity index 100% rename from tests/lib/iter-explorer-test.cpp rename to tests/library/iter-explorer-test.cpp diff --git a/tests/lib/iter-queue-test.cpp b/tests/library/iter-queue-test.cpp similarity index 100% rename from tests/lib/iter-queue-test.cpp rename to tests/library/iter-queue-test.cpp diff --git a/tests/lib/iter-source-test.cpp b/tests/library/iter-source-test.cpp similarity index 100% rename from tests/lib/iter-source-test.cpp rename to tests/library/iter-source-test.cpp diff --git a/tests/lib/iter-stack-test.cpp b/tests/library/iter-stack-test.cpp similarity index 100% rename from tests/lib/iter-stack-test.cpp rename to tests/library/iter-stack-test.cpp diff --git a/tests/lib/itertools-test.cpp b/tests/library/itertools-test.cpp similarity index 100% rename from tests/lib/itertools-test.cpp rename to tests/library/itertools-test.cpp diff --git a/tests/lib/lifecycletest.cpp b/tests/library/lifecycletest.cpp similarity index 100% rename from tests/lib/lifecycletest.cpp rename to tests/library/lifecycletest.cpp diff --git a/tests/lib/linked-elements-test.cpp b/tests/library/linked-elements-test.cpp similarity index 100% rename from tests/lib/linked-elements-test.cpp rename to tests/library/linked-elements-test.cpp diff --git a/tests/lib/maybe-value-test.cpp b/tests/library/maybe-value-test.cpp similarity index 100% rename from tests/lib/maybe-value-test.cpp rename to tests/library/maybe-value-test.cpp diff --git a/tests/lib/meta/config-flags-test.cpp b/tests/library/meta/config-flags-test.cpp similarity index 100% rename from tests/lib/meta/config-flags-test.cpp rename to tests/library/meta/config-flags-test.cpp diff --git a/tests/lib/meta/duck-detector-test.cpp b/tests/library/meta/duck-detector-test.cpp similarity index 100% rename from tests/lib/meta/duck-detector-test.cpp rename to tests/library/meta/duck-detector-test.cpp diff --git a/tests/lib/meta/dummy-functions.hpp b/tests/library/meta/dummy-functions.hpp similarity index 100% rename from tests/lib/meta/dummy-functions.hpp rename to tests/library/meta/dummy-functions.hpp diff --git a/tests/lib/meta/function-closure-test.cpp b/tests/library/meta/function-closure-test.cpp similarity index 100% rename from tests/lib/meta/function-closure-test.cpp rename to tests/library/meta/function-closure-test.cpp diff --git a/tests/lib/meta/function-composition-test.cpp b/tests/library/meta/function-composition-test.cpp similarity index 100% rename from tests/lib/meta/function-composition-test.cpp rename to tests/library/meta/function-composition-test.cpp diff --git a/tests/lib/meta/function-erasure-test.cpp b/tests/library/meta/function-erasure-test.cpp similarity index 100% rename from tests/lib/meta/function-erasure-test.cpp rename to tests/library/meta/function-erasure-test.cpp diff --git a/tests/lib/meta/generator-combinations-test.cpp b/tests/library/meta/generator-combinations-test.cpp similarity index 100% rename from tests/lib/meta/generator-combinations-test.cpp rename to tests/library/meta/generator-combinations-test.cpp diff --git a/tests/lib/meta/generator-test.cpp b/tests/library/meta/generator-test.cpp similarity index 100% rename from tests/lib/meta/generator-test.cpp rename to tests/library/meta/generator-test.cpp diff --git a/tests/lib/meta/iterable-classification-test.cpp b/tests/library/meta/iterable-classification-test.cpp similarity index 100% rename from tests/lib/meta/iterable-classification-test.cpp rename to tests/library/meta/iterable-classification-test.cpp diff --git a/tests/lib/meta/meta-utils-test.cpp b/tests/library/meta/meta-utils-test.cpp similarity index 100% rename from tests/lib/meta/meta-utils-test.cpp rename to tests/library/meta/meta-utils-test.cpp diff --git a/tests/lib/meta/tuple-diagnostics.hpp b/tests/library/meta/tuple-diagnostics.hpp similarity index 100% rename from tests/lib/meta/tuple-diagnostics.hpp rename to tests/library/meta/tuple-diagnostics.hpp diff --git a/tests/lib/meta/type-tuple-test.cpp b/tests/library/meta/type-tuple-test.cpp similarity index 100% rename from tests/lib/meta/type-tuple-test.cpp rename to tests/library/meta/type-tuple-test.cpp diff --git a/tests/lib/meta/typelist-diagnostics.hpp b/tests/library/meta/typelist-diagnostics.hpp similarity index 100% rename from tests/lib/meta/typelist-diagnostics.hpp rename to tests/library/meta/typelist-diagnostics.hpp diff --git a/tests/lib/meta/typelist-manip-test.cpp b/tests/library/meta/typelist-manip-test.cpp similarity index 100% rename from tests/lib/meta/typelist-manip-test.cpp rename to tests/library/meta/typelist-manip-test.cpp diff --git a/tests/lib/meta/typelist-test.cpp b/tests/library/meta/typelist-test.cpp similarity index 100% rename from tests/lib/meta/typelist-test.cpp rename to tests/library/meta/typelist-test.cpp diff --git a/tests/lib/meta/typelist-util-test.cpp b/tests/library/meta/typelist-util-test.cpp similarity index 100% rename from tests/lib/meta/typelist-util-test.cpp rename to tests/library/meta/typelist-util-test.cpp diff --git a/tests/lib/meta/typeseq-manip-test.cpp b/tests/library/meta/typeseq-manip-test.cpp similarity index 100% rename from tests/lib/meta/typeseq-manip-test.cpp rename to tests/library/meta/typeseq-manip-test.cpp diff --git a/tests/lib/multifact-argument-test.cpp b/tests/library/multifact-argument-test.cpp similarity index 100% rename from tests/lib/multifact-argument-test.cpp rename to tests/library/multifact-argument-test.cpp diff --git a/tests/lib/multifact-test.cpp b/tests/library/multifact-test.cpp similarity index 100% rename from tests/lib/multifact-test.cpp rename to tests/library/multifact-test.cpp diff --git a/tests/lib/null-value-test.cpp b/tests/library/null-value-test.cpp similarity index 100% rename from tests/lib/null-value-test.cpp rename to tests/library/null-value-test.cpp diff --git a/tests/lib/opaque-holder-test.cpp b/tests/library/opaque-holder-test.cpp similarity index 100% rename from tests/lib/opaque-holder-test.cpp rename to tests/library/opaque-holder-test.cpp diff --git a/tests/lib/opaque-unchecked-buffer-test.cpp b/tests/library/opaque-unchecked-buffer-test.cpp similarity index 100% rename from tests/lib/opaque-unchecked-buffer-test.cpp rename to tests/library/opaque-unchecked-buffer-test.cpp diff --git a/tests/lib/optional-ref-test.cpp b/tests/library/optional-ref-test.cpp similarity index 100% rename from tests/lib/optional-ref-test.cpp rename to tests/library/optional-ref-test.cpp diff --git a/tests/lib/polymorphic-value-test.cpp b/tests/library/polymorphic-value-test.cpp similarity index 100% rename from tests/lib/polymorphic-value-test.cpp rename to tests/library/polymorphic-value-test.cpp diff --git a/tests/lib/query-text-test.cpp b/tests/library/query-text-test.cpp similarity index 100% rename from tests/lib/query-text-test.cpp rename to tests/library/query-text-test.cpp diff --git a/tests/lib/query/query-utils-test.cpp b/tests/library/query/query-utils-test.cpp similarity index 99% rename from tests/lib/query/query-utils-test.cpp rename to tests/library/query/query-utils-test.cpp index 63fcc1851..12098a448 100644 --- a/tests/lib/query/query-utils-test.cpp +++ b/tests/library/query/query-utils-test.cpp @@ -26,7 +26,7 @@ #include "lib/util-foreach.hpp" #include "lib/query-util.hpp" #include "lib/cmdline.hpp" -#include "query/querydiagnostics.hpp" +#include "lib/query-diagnostics.hpp" #include #include diff --git a/tests/lib/ref-array-test.cpp b/tests/library/ref-array-test.cpp similarity index 100% rename from tests/lib/ref-array-test.cpp rename to tests/library/ref-array-test.cpp diff --git a/tests/lib/removefromsettest.cpp b/tests/library/removefromsettest.cpp similarity index 100% rename from tests/lib/removefromsettest.cpp rename to tests/library/removefromsettest.cpp diff --git a/tests/lib/sanitised-identifier-test.cpp b/tests/library/sanitised-identifier-test.cpp similarity index 100% rename from tests/lib/sanitised-identifier-test.cpp rename to tests/library/sanitised-identifier-test.cpp diff --git a/tests/lib/scoped-collection-test.cpp b/tests/library/scoped-collection-test.cpp similarity index 100% rename from tests/lib/scoped-collection-test.cpp rename to tests/library/scoped-collection-test.cpp diff --git a/tests/lib/scoped-holder-test.cpp b/tests/library/scoped-holder-test.cpp similarity index 100% rename from tests/lib/scoped-holder-test.cpp rename to tests/library/scoped-holder-test.cpp diff --git a/tests/lib/scoped-holder-transfer-test.cpp b/tests/library/scoped-holder-transfer-test.cpp similarity index 100% rename from tests/lib/scoped-holder-transfer-test.cpp rename to tests/library/scoped-holder-transfer-test.cpp diff --git a/tests/lib/scoped-ptrvect-test.cpp b/tests/library/scoped-ptrvect-test.cpp similarity index 100% rename from tests/lib/scoped-ptrvect-test.cpp rename to tests/library/scoped-ptrvect-test.cpp diff --git a/tests/lib/search-path-splitter-test.cpp b/tests/library/search-path-splitter-test.cpp similarity index 100% rename from tests/lib/search-path-splitter-test.cpp rename to tests/library/search-path-splitter-test.cpp diff --git a/tests/lib/simple-allocator-test.cpp b/tests/library/simple-allocator-test.cpp similarity index 100% rename from tests/lib/simple-allocator-test.cpp rename to tests/library/simple-allocator-test.cpp diff --git a/tests/lib/singleton-subclass-test.cpp b/tests/library/singleton-subclass-test.cpp similarity index 100% rename from tests/lib/singleton-subclass-test.cpp rename to tests/library/singleton-subclass-test.cpp diff --git a/tests/lib/singleton-test.cpp b/tests/library/singleton-test.cpp similarity index 100% rename from tests/lib/singleton-test.cpp rename to tests/library/singleton-test.cpp diff --git a/tests/lib/singleton-testmock-test.cpp b/tests/library/singleton-testmock-test.cpp similarity index 100% rename from tests/lib/singleton-testmock-test.cpp rename to tests/library/singleton-testmock-test.cpp diff --git a/tests/lib/streamtypebasicstest.cpp b/tests/library/streamtypebasicstest.cpp similarity index 100% rename from tests/lib/streamtypebasicstest.cpp rename to tests/library/streamtypebasicstest.cpp diff --git a/tests/lib/streamtypelifecycletest.cpp b/tests/library/streamtypelifecycletest.cpp similarity index 100% rename from tests/lib/streamtypelifecycletest.cpp rename to tests/library/streamtypelifecycletest.cpp diff --git a/tests/lib/sub-id-test.cpp b/tests/library/sub-id-test.cpp similarity index 100% rename from tests/lib/sub-id-test.cpp rename to tests/library/sub-id-test.cpp diff --git a/tests/lib/subsystem-runner-test.cpp b/tests/library/subsystem-runner-test.cpp similarity index 100% rename from tests/lib/subsystem-runner-test.cpp rename to tests/library/subsystem-runner-test.cpp diff --git a/tests/lib/symbol-hashtable-test.cpp b/tests/library/symbol-hashtable-test.cpp similarity index 100% rename from tests/lib/symbol-hashtable-test.cpp rename to tests/library/symbol-hashtable-test.cpp diff --git a/tests/lib/symbol-test.cpp b/tests/library/symbol-test.cpp similarity index 100% rename from tests/lib/symbol-test.cpp rename to tests/library/symbol-test.cpp diff --git a/tests/lib/sync-classlock-test.cpp b/tests/library/sync-classlock-test.cpp similarity index 100% rename from tests/lib/sync-classlock-test.cpp rename to tests/library/sync-classlock-test.cpp diff --git a/tests/lib/sync-locking-test.cpp b/tests/library/sync-locking-test.cpp similarity index 100% rename from tests/lib/sync-locking-test.cpp rename to tests/library/sync-locking-test.cpp diff --git a/tests/lib/sync-timedwait-test.cpp b/tests/library/sync-timedwait-test.cpp similarity index 100% rename from tests/lib/sync-timedwait-test.cpp rename to tests/library/sync-timedwait-test.cpp diff --git a/tests/lib/sync-waiting-test.cpp b/tests/library/sync-waiting-test.cpp similarity index 100% rename from tests/lib/sync-waiting-test.cpp rename to tests/library/sync-waiting-test.cpp diff --git a/tests/lib/test/test-helper-test.cpp b/tests/library/test/test-helper-test.cpp similarity index 100% rename from tests/lib/test/test-helper-test.cpp rename to tests/library/test/test-helper-test.cpp diff --git a/tests/lib/test/testoptiontest.cpp b/tests/library/test/testoptiontest.cpp similarity index 100% rename from tests/lib/test/testoptiontest.cpp rename to tests/library/test/testoptiontest.cpp diff --git a/tests/lib/teststreamtypes.hpp b/tests/library/teststreamtypes.hpp similarity index 100% rename from tests/lib/teststreamtypes.hpp rename to tests/library/teststreamtypes.hpp diff --git a/tests/lib/testtargetobj.hpp b/tests/library/testtargetobj.hpp similarity index 100% rename from tests/lib/testtargetobj.hpp rename to tests/library/testtargetobj.hpp diff --git a/tests/lib/thread-local-test.cpp b/tests/library/thread-local-test.cpp similarity index 100% rename from tests/lib/thread-local-test.cpp rename to tests/library/thread-local-test.cpp diff --git a/tests/lib/thread-wrapper-join-test.cpp b/tests/library/thread-wrapper-join-test.cpp similarity index 100% rename from tests/lib/thread-wrapper-join-test.cpp rename to tests/library/thread-wrapper-join-test.cpp diff --git a/tests/lib/thread-wrapper-test.cpp b/tests/library/thread-wrapper-test.cpp similarity index 100% rename from tests/lib/thread-wrapper-test.cpp rename to tests/library/thread-wrapper-test.cpp diff --git a/tests/lib/time/digxel-configurations-test.cpp b/tests/library/time/digxel-configurations-test.cpp similarity index 100% rename from tests/lib/time/digxel-configurations-test.cpp rename to tests/library/time/digxel-configurations-test.cpp diff --git a/tests/lib/time/digxel-test.cpp b/tests/library/time/digxel-test.cpp similarity index 100% rename from tests/lib/time/digxel-test.cpp rename to tests/library/time/digxel-test.cpp diff --git a/tests/lib/time/format-support-test.cpp b/tests/library/time/format-support-test.cpp similarity index 100% rename from tests/lib/time/format-support-test.cpp rename to tests/library/time/format-support-test.cpp diff --git a/tests/lib/time/quantiser-basics-test.cpp b/tests/library/time/quantiser-basics-test.cpp similarity index 100% rename from tests/lib/time/quantiser-basics-test.cpp rename to tests/library/time/quantiser-basics-test.cpp diff --git a/tests/lib/lumitime-test.cpp b/tests/library/time/time-basics-test.cpp similarity index 96% rename from tests/lib/lumitime-test.cpp rename to tests/library/time/time-basics-test.cpp index 46a1d25d6..30cdaed10 100644 --- a/tests/lib/lumitime-test.cpp +++ b/tests/library/time/time-basics-test.cpp @@ -1,5 +1,5 @@ /* - LumiTime(Test) - working with Lumiera's internal Time values + LumiBasics(Test) - working with Lumiera's internal Time values Copyright (C) Lumiera.org 2008, Hermann Vosseler @@ -51,7 +51,7 @@ namespace test{ /******************************************** * @test sanity check of basic Time handling. */ - class LumiTime_test : public Test + class TimeBasics_test : public Test { virtual void run (Arg arg) @@ -170,7 +170,7 @@ namespace test{ /** Register this test class... */ - LAUNCHER (LumiTime_test, "unit common"); + LAUNCHER (TimeBasics_test, "unit common"); diff --git a/tests/lib/time/time-control-test.cpp b/tests/library/time/time-control-test.cpp similarity index 100% rename from tests/lib/time/time-control-test.cpp rename to tests/library/time/time-control-test.cpp diff --git a/tests/lib/time/time-formats-test.cpp b/tests/library/time/time-formats-test.cpp similarity index 100% rename from tests/lib/time/time-formats-test.cpp rename to tests/library/time/time-formats-test.cpp diff --git a/tests/lib/time/time-mutation-test.cpp b/tests/library/time/time-mutation-test.cpp similarity index 100% rename from tests/lib/time/time-mutation-test.cpp rename to tests/library/time/time-mutation-test.cpp diff --git a/tests/lib/time/time-parsing-test.cpp b/tests/library/time/time-parsing-test.cpp similarity index 100% rename from tests/lib/time/time-parsing-test.cpp rename to tests/library/time/time-parsing-test.cpp diff --git a/tests/lib/time/time-quantisation-test.cpp b/tests/library/time/time-quantisation-test.cpp similarity index 100% rename from tests/lib/time/time-quantisation-test.cpp rename to tests/library/time/time-quantisation-test.cpp diff --git a/tests/lib/time/time-value-test.cpp b/tests/library/time/time-value-test.cpp similarity index 100% rename from tests/lib/time/time-value-test.cpp rename to tests/library/time/time-value-test.cpp diff --git a/tests/lib/typed-allocation-manager-test.cpp b/tests/library/typed-allocation-manager-test.cpp similarity index 100% rename from tests/lib/typed-allocation-manager-test.cpp rename to tests/library/typed-allocation-manager-test.cpp diff --git a/tests/lib/typed-counter-test.cpp b/tests/library/typed-counter-test.cpp similarity index 100% rename from tests/lib/typed-counter-test.cpp rename to tests/library/typed-counter-test.cpp diff --git a/tests/lib/util-floordiv-test.cpp b/tests/library/util-floordiv-test.cpp similarity index 100% rename from tests/lib/util-floordiv-test.cpp rename to tests/library/util-floordiv-test.cpp diff --git a/tests/lib/util-floorwrap-test.cpp b/tests/library/util-floorwrap-test.cpp similarity index 100% rename from tests/lib/util-floorwrap-test.cpp rename to tests/library/util-floorwrap-test.cpp diff --git a/tests/lib/util-foreach-test.cpp b/tests/library/util-foreach-test.cpp similarity index 100% rename from tests/lib/util-foreach-test.cpp rename to tests/library/util-foreach-test.cpp diff --git a/tests/lib/vector-transfer-test.cpp b/tests/library/vector-transfer-test.cpp similarity index 100% rename from tests/lib/vector-transfer-test.cpp rename to tests/library/vector-transfer-test.cpp diff --git a/tests/lib/visitingtoolconcept.cpp b/tests/library/visitingtoolconcept.cpp similarity index 100% rename from tests/lib/visitingtoolconcept.cpp rename to tests/library/visitingtoolconcept.cpp diff --git a/tests/lib/visitingtoolextendedtest.cpp b/tests/library/visitingtoolextendedtest.cpp similarity index 100% rename from tests/lib/visitingtoolextendedtest.cpp rename to tests/library/visitingtoolextendedtest.cpp diff --git a/tests/lib/visitingtooltest.cpp b/tests/library/visitingtooltest.cpp similarity index 100% rename from tests/lib/visitingtooltest.cpp rename to tests/library/visitingtooltest.cpp diff --git a/tests/operation/DIR_INFO b/tests/operation/DIR_INFO new file mode 100644 index 000000000..9217a7349 --- /dev/null +++ b/tests/operation/DIR_INFO @@ -0,0 +1 @@ +operational tests involving the whole application diff --git a/tests/operation/bugs/DIR_INFO b/tests/operation/bugs/DIR_INFO new file mode 100644 index 000000000..141478f21 --- /dev/null +++ b/tests/operation/bugs/DIR_INFO @@ -0,0 +1 @@ +regression tests for reported bugs diff --git a/tests/bugs/bugmain.c b/tests/operation/bugs/hello-bug-test.cpp similarity index 57% rename from tests/bugs/bugmain.c rename to tests/operation/bugs/hello-bug-test.cpp index f932a0321..bf7c33748 100644 --- a/tests/bugs/bugmain.c +++ b/tests/operation/bugs/hello-bug-test.cpp @@ -17,12 +17,43 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ -#include +* *****************************************************/ -int main(int argc, char* argv[]) - { - printf("hello sunshine, noBugs whatsoever\n"); - return 0; - } + +#include "lib/test/run.hpp" + +#include + +using std::cerr; +using std::endl; + + +namespace lumiera{ +namespace test { + + + /****************************************** + * @todo come up with some more bugs + * @test cover known regressions + */ + class HelloBug_test + : public Test + { + virtual void + run(Arg) + { + std::cerr << "hello sunshine, no bugs whatsoever" <