From b9ecd6e5e5b87fe1c4dab960e92246772002dd6a Mon Sep 17 00:00:00 2001 From: Stef Walter Date: Mon, 9 Jun 2008 17:22:43 +0000 Subject: Merge the two dns plugins --- tests/Makefile.am | 4 +- tests/unit-test-soa.c | 136 +++++++++++++++++++++++++++++++++++++++++++++++ tests/unit-test-strset.c | 106 ++++++++++++++++++++++++++++++++++++ 3 files changed, 245 insertions(+), 1 deletion(-) create mode 100644 tests/unit-test-soa.c create mode 100644 tests/unit-test-strset.c (limited to 'tests') diff --git a/tests/Makefile.am b/tests/Makefile.am index 5372107..ee0f4af 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,5 +1,7 @@ -UNIT_TESTS = +UNIT_TESTS = \ + unit-test-soa.c \ + unit-test-strset.c INCLUDES= \ -I$(top_srcdir) \ diff --git a/tests/unit-test-soa.c b/tests/unit-test-soa.c new file mode 100644 index 0000000..9716a65 --- /dev/null +++ b/tests/unit-test-soa.c @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2008, Stefan Walter + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above + * copyright notice, this list of conditions and the + * following disclaimer. + * * Redistributions in binary form must reproduce the + * above copyright notice, this list of conditions and + * the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * * The names of contributors to this software may not be + * used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * + * CONTRIBUTORS + * Stef Walter + * + */ + +#include "config.h" + +#include "run-tests.h" + +#include "common/soa.h" + +#include +#include +#include + +/* + * Each test looks like (on one line): + * void unit_test_xxxxx (CuTest* cu) + * + * Each setup looks like (on one line): + * void unit_setup_xxxxx (void) + * + * Each teardown looks like (on one line): + * void unit_teardown_xxxxx (void) + * + * Tests be run in the order specified here. + */ + +typedef struct _soa_test { + const char *old; + const char *new; +} soa_test; + +static const soa_test SOA_TESTS[] = { + { + "web.example.com stef@example.com 300 3600 1800 604800 86400", + "web.example.com stef@example.com 301 3600 1800 604800 86400" + }, + { + "web.example.com stef@example.com (0 3600 1800 604800 86400)", + "web.example.com stef@example.com (1 3600 1800 604800 86400)" + }, + { + "web.example.com stef@example.com (\n999 3600 1800 604800 86400 ) ; comment", + "web.example.com stef@example.com (\n1000 3600 1800 604800 86400 ) ; comment" + }, + { /* Wrap around */ + "web.example.com stef@example.com 4294967295 3600 1800 604800 86400", + "web.example.com stef@example.com 1 3600 1800 604800 86400" + }, + { + NULL, + NULL + } +}; + +static const char *SOA_INVALID[] = { + "web.example.com email@example.com non-mumeric 3600 1800 604800 86400", + "web.example.com email@example.com -3000 3600 1800 604800 86400", + "", + "web.example.com", + NULL +}; + +void unit_test_soa_increment (CuTest *cu) +{ + char buf[512]; + int rc, i; + + for (i = 0; 1; ++i) { + if (!SOA_TESTS[i].old) + break; + rc = soa_serial_increment (SOA_TESTS[i].old, buf, sizeof (buf)); + if (rc < 0) + printf ("%s\n", SOA_TESTS[i].old); + CuAssert(cu, "soa_serial_increment failed", rc >= 0); + CuAssertStrEquals(cu, buf, SOA_TESTS[i].new); + } +} + +void unit_test_soa_invalid (CuTest *cu) +{ + char buf[512]; + int rc, i; + + for (i = 0; 1; ++i) { + if (!SOA_INVALID[i]) + break; + + errno = 0; + rc = soa_serial_increment (SOA_INVALID[i], buf, sizeof (buf)); + if (rc >= 0) + printf ("%s\n", SOA_INVALID[i]); + CuAssert (cu, "invalid soa_serial_increment succeeded", rc < 0); + CuAssert (cu, "bad errno set on invalid soa", errno == EINVAL); + } +} + +/* ----------------------------------------------------------------------------- + * Code being tested + */ + +#include "common/soa.c" diff --git a/tests/unit-test-strset.c b/tests/unit-test-strset.c new file mode 100644 index 0000000..931def9 --- /dev/null +++ b/tests/unit-test-strset.c @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2008, Stefan Walter + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above + * copyright notice, this list of conditions and the + * following disclaimer. + * * Redistributions in binary form must reproduce the + * above copyright notice, this list of conditions and + * the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * * The names of contributors to this software may not be + * used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * + * CONTRIBUTORS + * Stef Walter + * + */ + +#include "config.h" + +#include "run-tests.h" + +#include "common/strset.h" + +#include +#include +#include + +/* + * Each test looks like (on one line): + * void unit_test_xxxxx (CuTest* cu) + * + * Each setup looks like (on one line): + * void unit_setup_xxxxx (void) + * + * Each teardown looks like (on one line): + * void unit_teardown_xxxxx (void) + * + * Tests be run in the order specified here. + */ + +void unit_test_soa_strset (CuTest *cu) +{ + strset *set; + int rc, i; + char buf[32]; + + set = strset_create (); + CuAssertPtrNotNull (cu, set); + + CuAssert (cu, "found in empty set", !strset_has (set, "blah")); + + rc = strset_add (set, "blah"); + CuAssertIntEquals (cu, 0, rc); + + rc = strset_add (set, NULL); + CuAssertIntEquals (cu, -1, rc); + + CuAssert (cu, "not found in set", strset_has (set, "blah")); + + /* Add some stuff so it forces us to reallocate */ + for (i = 0; i < 128; ++i) { + snprintf (buf, sizeof (buf), "value-%d", i); + strset_add (set, buf); + } + + CuAssert (cu, "value-30 not found in set", strset_has (set, "value-30")); + + rc = strset_add (set, ""); + CuAssertIntEquals (cu, 0, rc); + + CuAssert (cu, "empty not found in set", strset_has (set, "")); + + rc = strset_remove (set, "blah"); + CuAssertIntEquals (cu, 0, rc); + + CuAssert (cu, "removed found in set", !strset_has (set, "blah")); + + strset_destroy (set); +} + +/* ----------------------------------------------------------------------------- + * Code being tested + */ + +#include "common/strset.c" -- cgit v1.2.3