Test simplification, plaything

* test.h provides some macros to aid test writing
 * applied that to some tests
This commit is contained in:
Christian Thaeter 2008-03-26 19:26:51 +01:00
parent 0b8b5bf507
commit 646d6fa0d3
3 changed files with 220 additions and 187 deletions

View file

@ -23,21 +23,12 @@
//#include <string.h> //#include <string.h>
#include "lib/llist.h" #include "lib/llist.h"
#include "lib/error.h" #include "tests/test.h"
TESTS_BEGIN
LUMIERA_ERROR_DEFINE(TEST, "test error"); TEST ("basic")
int
main (int argc, char** argv)
{ {
NOBUG_INIT;
if (argc == 1)
return 0;
if (!strcmp(argv[1], "basic"))
{
LLIST_AUTO (node1); LLIST_AUTO (node1);
llist node2; llist node2;
@ -45,9 +36,10 @@ main (int argc, char** argv)
printf ("%d\n", llist_is_empty (&node1)); printf ("%d\n", llist_is_empty (&node1));
printf ("%d\n", llist_is_empty (&node2)); printf ("%d\n", llist_is_empty (&node2));
} }
else if (!strcmp(argv[1], "nodeinsert"))
{ TEST ("nodeinsert")
{
LLIST_AUTO (list); LLIST_AUTO (list);
LLIST_AUTO (node1); LLIST_AUTO (node1);
LLIST_AUTO (node2); LLIST_AUTO (node2);
@ -65,9 +57,10 @@ main (int argc, char** argv)
printf ("%d\n", llist_next (&node1) == &node2); printf ("%d\n", llist_next (&node1) == &node2);
printf ("%d\n", llist_prev (&list) == &node2); printf ("%d\n", llist_prev (&list) == &node2);
printf ("%d\n", llist_count (&list)); printf ("%d\n", llist_count (&list));
} }
else if (!strcmp(argv[1], "predicates"))
{ TEST ("predicates")
{
LLIST_AUTO (list); LLIST_AUTO (list);
LLIST_AUTO (node1); LLIST_AUTO (node1);
LLIST_AUTO (node2); LLIST_AUTO (node2);
@ -91,9 +84,10 @@ main (int argc, char** argv)
printf ("%d\n", llist_is_before_after (&list, &node1, &node3)); printf ("%d\n", llist_is_before_after (&list, &node1, &node3));
printf ("%d\n", llist_is_before_after (&list, &node3, &node1)); printf ("%d\n", llist_is_before_after (&list, &node3, &node1));
printf ("%d\n", llist_is_before_after (&list, &node1, &nil)); printf ("%d\n", llist_is_before_after (&list, &node1, &nil));
} }
else if (!strcmp(argv[1], "unlink"))
{ TEST ("unlink")
{
LLIST_AUTO (list); LLIST_AUTO (list);
LLIST_AUTO (node1); LLIST_AUTO (node1);
LLIST_AUTO (node2); LLIST_AUTO (node2);
@ -132,9 +126,10 @@ main (int argc, char** argv)
printf ("%d\n", llist_is_empty (&node2)); printf ("%d\n", llist_is_empty (&node2));
printf ("%d\n", llist_is_empty (&node3)); printf ("%d\n", llist_is_empty (&node3));
printf ("%d\n", llist_is_empty (&nil)); printf ("%d\n", llist_is_empty (&nil));
} }
else if (!strcmp(argv[1], "whiles"))
{ TEST ("whiles")
{
LLIST_AUTO (list); LLIST_AUTO (list);
LLIST_AUTO (node1); LLIST_AUTO (node1);
LLIST_AUTO (node2); LLIST_AUTO (node2);
@ -187,9 +182,7 @@ main (int argc, char** argv)
else printf ("unknown "); else printf ("unknown ");
} }
printf (".\n"); printf (".\n");
}
else
return 1;
return 0;
} }
TESTS_END

View file

@ -21,33 +21,21 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include "tests/test.h"
#include "lib/error.h"
LUMIERA_ERROR_DEFINE(TEST, "test error");
int conditionforgotunlock (); int conditionforgotunlock ();
int mutexforgotunlock (); int mutexforgotunlock ();
TESTS_BEGIN
int TEST ("conditionforgotunlock")
main (int argc, char** argv)
{ {
NOBUG_INIT;
if (argc == 1)
return 0;
if (!strcmp(argv[1], "conditionforgotunlock"))
{
return conditionforgotunlock (); return conditionforgotunlock ();
}
if (!strcmp(argv[1], "mutexforgotunlock"))
{
return mutexforgotunlock ();
}
else
return 1;
return 0;
} }
TEST ("mutexforgotunlock")
{
return mutexforgotunlock ();
}
TESTS_END

52
tests/test.h Normal file
View file

@ -0,0 +1,52 @@
/*
test.h - macros for running tests
Copyright (C) CinelerraCV
2008, Christian Thaeter <ct@pipapo.org>
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.
*/
#ifndef TEST_H
#define TEST_H
#include <nobug.h>
#include "lib/error.h"
LUMIERA_ERROR_DEFINE (TEST, "test error");
#define TESTS_BEGIN \
int \
main (int argc, char** argv) \
{ \
NOBUG_INIT; \
\
if (argc == 1) \
return 1;
#define TEST(name) \
else if (!strcmp(argv[1], name))
#define TESTS_END \
else \
return 1; \
\
return 0; \
}
#endif