diff --git a/.gitignore b/.gitignore
index 2e0679b6bfe24829ca984bd02552ae865588d963..67d7e06c3a3015819353a6ca6300c7745bd3e69a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -69,9 +69,6 @@
 # zscanner
 /src/zscanner/libzscanner.pc
 /src/zscanner/scanner.c
-/src/zscanner/tests/tmp/
-/src/zscanner/tests/unittests
-/src/zscanner/tests/zscanner-tool
 /src/zscanner/version.h
 
 # Binaries
@@ -84,14 +81,9 @@
 /src/knsec3hash
 /src/knsupdate
 /src/kzonecheck
-/src/rosedb_tool
 /src/utils/pykeymgr/pykeymgr
 
-# Plugin binaries
-/src/rosedb_tool
-
 # Generated tarballs
-/knot-*.tar.gz
 /knot-*.tar.xz
 
 # Code coverage
diff --git a/Knot.files b/Knot.files
index 29f8714f28e20daea609aaa90c4d79ee1731c9ac..507e0c2421df2601a7e13c459e207fa8ca383c4c 100644
--- a/Knot.files
+++ b/Knot.files
@@ -1,11 +1,3 @@
-libtap/runtests.c
-libtap/tap/basic.c
-libtap/tap/basic.h
-libtap/tap/files.c
-libtap/tap/files.h
-libtap/tap/float.c
-libtap/tap/float.h
-libtap/tap/macros.h
 src/contrib/asan.h
 src/contrib/base32hex.c
 src/contrib/base32hex.h
@@ -430,11 +422,6 @@ src/zscanner/functions.h
 src/zscanner/scanner.h
 src/zscanner/scanner.rl
 src/zscanner/scanner_body.rl
-src/zscanner/tests/processing.c
-src/zscanner/tests/processing.h
-src/zscanner/tests/tests.c
-src/zscanner/tests/tests.h
-src/zscanner/tests/zscanner-tool.c
 tests-fuzz/fuzz_packet.c
 tests-fuzz/fuzz_zscanner.c
 tests-fuzz/knotd_wrap/afl-loop.h
@@ -442,6 +429,14 @@ tests-fuzz/knotd_wrap/server.c
 tests-fuzz/knotd_wrap/tcp-handler.c
 tests-fuzz/knotd_wrap/udp-handler.c
 tests-fuzz/main.c
+tests/_libtap/runtests.c
+tests/_libtap/tap/basic.c
+tests/_libtap/tap/basic.h
+tests/_libtap/tap/files.c
+tests/_libtap/tap/files.h
+tests/_libtap/tap/float.c
+tests/_libtap/tap/float.h
+tests/_libtap/tap/macros.h
 tests/contrib/test_base32hex.c
 tests/contrib/test_base64.c
 tests/contrib/test_dynarray.c
@@ -523,3 +518,6 @@ tests/modules/test_onlinesign.c
 tests/modules/test_rrl.c
 tests/utils/test_cert.c
 tests/utils/test_lookup.c
+tests/zscanner/processing.c
+tests/zscanner/processing.h
+tests/zscanner/zscanner-tool.c
diff --git a/Knot.includes b/Knot.includes
index 076d39e8627270c745a8bd79bf582fbfbc6d53e9..71cc45d2811d67cd3952337024006213552a56e3 100644
--- a/Knot.includes
+++ b/Knot.includes
@@ -1,4 +1,3 @@
-libtap
 src
 src/contrib
 src/dnssec
@@ -8,4 +7,4 @@ src/dnssec/shared
 src/zscanner
 tests
 tests-fuzz
-tests-fuzz/wrap
+tests-fuzz/knotd_wrap
diff --git a/Makefile.am b/Makefile.am
index 88d86ad861fc3f889679603c20f3163c8dd663f4..618e77622cf1a014275e29e3ac4996009c171c57 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,5 +1,5 @@
 ACLOCAL_AMFLAGS = -I m4
-SUBDIRS = libtap src tests tests-fuzz python samples doc
+SUBDIRS = src tests tests-fuzz python samples doc
 
 .PHONY: singlehtml install-singlehtml
 singlehtml install-singlehtml:
@@ -7,8 +7,7 @@ singlehtml install-singlehtml:
 
 .PHONY: check-compile
 check-compile:
-	$(MAKE) $(AM_MAKEFLAGS) -C libtap $@
-	$(MAKE) $(AM_MAKEFLAGS) -C src $@
+	$(MAKE) $(AM_MAKEFLAGS) -C tests/_libtap $@
 	$(MAKE) $(AM_MAKEFLAGS) -C tests $@
 	$(MAKE) $(AM_MAKEFLAGS) -C tests-fuzz $@
 
diff --git a/configure.ac b/configure.ac
index d32fa9cfa94eb501a4c6142e76ab982c2f70b366..c0171b7ee98f45539f6d6395364a5d642c7bb9ec 100644
--- a/configure.ac
+++ b/configure.ac
@@ -581,8 +581,8 @@ AC_DEFINE_UNQUOTED([CONFIGURE_SUMMARY],["$result_msg_esc"],[Configure summary])
 AC_CONFIG_FILES([Makefile
                  Doxyfile
                  doc/Makefile
-                 libtap/Makefile
                  tests/Makefile
+                 tests/_libtap/Makefile
                  tests-fuzz/Makefile
                  samples/Makefile
                  python/Makefile
diff --git a/scripts/update-project-files.py b/scripts/update-project-files.py
index c8018a8b7e069e8479d25180447ab1f1c76b3116..004fbb37bed3dc1987b0aed772f139eba2c0ae87 100755
--- a/scripts/update-project-files.py
+++ b/scripts/update-project-files.py
@@ -5,10 +5,9 @@
 #
 
 SOURCES = [
-    "src/*.c", "src/*.h", "src/*.rl", "src/*.l",
-    "src/*.y", "tests/*.c", "tests/*.h",
+    "src/*.c", "src/*.h", "src/*.rl",
+    "tests/*.c", "tests/*.h",
     "tests-fuzz/*.c", "tests-fuzz/*.h",
-    "libtap/*.c", "libtap/*.h",
 ]
 
 OUTPUT_FILE = "Knot.files"
diff --git a/src/Makefile.am b/src/Makefile.am
index 614c0b0be6037304c139d27f3c2d90ea1ae4421b..4211d743296eed42a776dd858b5b4f884ba0285e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,11 +1,6 @@
 ACLOCAL_AMFLAGS = -I $(top_srcdir)/m4
 SUBDIRS = zscanner dnssec contrib/dnstap .
 
-.PHONY: check-compile
-check-compile:
-	$(MAKE) $(AM_MAKEFLAGS) -C zscanner $@
-	$(MAKE) $(AM_MAKEFLAGS) -C dnssec $@
-
 lib_LTLIBRARIES =				\
 	libknot.la
 noinst_LTLIBRARIES = 				\
diff --git a/src/zscanner/Makefile.am b/src/zscanner/Makefile.am
index 60841453ad63871732f51db6db77be7459813525..8cf6520f9c1c9d129428c5788089481762abcef4 100644
--- a/src/zscanner/Makefile.am
+++ b/src/zscanner/Makefile.am
@@ -44,5 +44,3 @@ nodist_libzscanner_la_SOURCES =		\
 libzscanner_la_CPPFLAGS = $(AM_CPPFLAGS) $(CFLAG_VISIBILITY)
 libzscanner_la_LDFLAGS =		\
 	$(libzscanner_VERSION_INFO)
-
-include $(srcdir)/tests/Makefile.inc
diff --git a/src/zscanner/tests/.gitignore b/src/zscanner/tests/.gitignore
deleted file mode 100644
index 7c67a150c8b823ce8a88d107f950b76340c094ee..0000000000000000000000000000000000000000
--- a/src/zscanner/tests/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/runtests.log
diff --git a/src/zscanner/tests/Makefile.inc b/src/zscanner/tests/Makefile.inc
deleted file mode 100644
index d663e2cdd067813c73fec68381ab3568e3ef44bf..0000000000000000000000000000000000000000
--- a/src/zscanner/tests/Makefile.inc
+++ /dev/null
@@ -1,45 +0,0 @@
-LDADD = \
-	$(top_builddir)/src/zscanner/libzscanner.la
-
-tests_zscanner_tool_SOURCES = \
-	tests/zscanner-tool.c	\
-	tests/tests.h		\
-	tests/tests.c		\
-	tests/processing.h	\
-	tests/processing.c
-
-check_PROGRAMS = \
-	tests/zscanner-tool
-
-check_SCRIPTS = \
-	tests/unittests
-
-CLEANFILES += $(check_SCRIPTS) tests/runtests.log
-
-edit = sed \
-	-e 's|@top_srcdir[@]|$(abs_top_srcdir)|g' \
-	-e 's|@top_builddir[@]|$(abs_top_builddir)|g'
-
-tests/unittests:
-	@$(edit) < $(top_srcdir)/src/zscanner/$@.in > $(top_builddir)/src/zscanner/$@
-	@chmod +x $(top_builddir)/src/zscanner/$@
-
-check-compile: $(check_SCRIPTS) $(check_PROGRAMS)
-
-
-AM_V_RUNTESTS = $(am__v_RUNTESTS_@AM_V@)
-am__v_RUNTESTS_ = $(am__v_RUNTESTS_@AM_DEFAULT_V@)
-am__v_RUNTESTS_0 =
-am__v_RUNTESTS_1 = RET=$$?; if [ "$$RET" != "0" ]; then cat "$(top_builddir)/src/zscanner/tests/runtests.log"; exit $$RET; fi
-check-local: $(check_PROGRAMS)
-	@$(top_builddir)/libtap/runtests \
-	-s $(top_srcdir)/src/zscanner/tests \
-	-b $(top_builddir)/src/zscanner/tests \
-	-L $(top_builddir)/src/zscanner/tests/runtests.log \
-	$(top_builddir)/src/zscanner/tests/unittests; \
-	$(AM_V_RUNTESTS)
-
-EXTRA_DIST += \
-	tests/unittests.in \
-	tests/TESTS \
-	tests/data
diff --git a/src/zscanner/tests/tests.c b/src/zscanner/tests/tests.c
deleted file mode 100644
index 3f0725bf575cd021713114814ff2fa71c9283b3f..0000000000000000000000000000000000000000
--- a/src/zscanner/tests/tests.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/*  Copyright (C) 2011 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
-
-    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 3 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, see <http://www.gnu.org/licenses/>.
- */
-
-#include <inttypes.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <time.h>
-
-#include "tests/tests.h"
-#include "functions.c"
-
-int test__date_to_timestamp(void)
-{
-	time_t    ref_timestamp, max_timestamp;
-	uint32_t  test_timestamp;
-	uint8_t   buffer[16];
-	uint64_t  val1, val2; // For time_t type unification.
-	struct tm tm;
-
-	// Set UTC for strftime.
-	putenv("TZ=UTC");
-	tzset();
-
-	// Get maximal allowed timestamp.
-	strptime("21051231235959", "%Y%m%d%H%M%S", &tm);
-	max_timestamp = mktime(&tm);
-
-	// Testing loop over whole input interval.
-	for (ref_timestamp = 0;
-	     ref_timestamp < max_timestamp;
-	     ref_timestamp += 1) {
-		struct tm result;
-		// Get reference (correct) timestamp.
-		strftime((char*)buffer, sizeof(buffer), "%Y%m%d%H%M%S",
-			 gmtime_r(&ref_timestamp, &result));
-
-		// Get testing timestamp.
-		test_timestamp = 0U; // prevents Wunitialized
-		date_to_timestamp(buffer, &test_timestamp);
-
-		// Some continuous loging.
-		if (ref_timestamp % 10000000 == 0) {
-			val1 = ref_timestamp;
-			printf("%s = %"PRIu64"\n", buffer, val1);
-		}
-
-		// Comparing results.
-		if (ref_timestamp != test_timestamp) {
-			val1 = ref_timestamp;
-
-			if (ref_timestamp > test_timestamp) {
-				val2 = ref_timestamp - test_timestamp;
-				printf("%s = %"PRIu64", in - out = %"PRIu64"\n",
-				       buffer, val1, val2);
-			} else {
-				val2 = test_timestamp - ref_timestamp;
-				printf("%s = %"PRIu64", out - in = %"PRIu64"\n",
-				       buffer, val1, val2);
-			}
-
-			return -1;
-		}
-	}
-
-	return 0;
-}
diff --git a/src/zscanner/tests/tests.h b/src/zscanner/tests/tests.h
deleted file mode 100644
index 475c6e87b17c3b665527b5e463d47e74dd810029..0000000000000000000000000000000000000000
--- a/src/zscanner/tests/tests.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*  Copyright (C) 2017 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
-
-    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 3 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, see <http://www.gnu.org/licenses/>.
- */
-/*!
- * \file
- *
- * \brief Zone scanner test functions.
- *
- * \addtogroup zone_scanner_test
- * @{
- */
-
-#pragma once
-
-int test__date_to_timestamp(void);
-
-/*! @} */
diff --git a/tests/.gitignore b/tests/.gitignore
index d16f4525ea180914823ef4c018ea54ec691be903..8e138bab06cdfb5e99d6690c5ff72eefc50ceabe 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -87,3 +87,7 @@
 
 /utils/test_cert
 /utils/test_lookup
+
+/zscanner/tmp
+/zscanner/test_zscanner
+/zscanner/zscanner-tool
diff --git a/tests/Makefile.am b/tests/Makefile.am
index ac1a44c0b1898d413b137f34c4c3ef7f50f40571..ca070c794bcfe6c56a3859fdddfe67915f762fae 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,6 +1,9 @@
+ACLOCAL_AMFLAGS = -I m4
+SUBDIRS = _libtap .
+
 AM_CPPFLAGS = \
 	-include $(top_builddir)/src/config.h \
-	-I$(top_srcdir)/libtap \
+	-I$(top_srcdir)/tests/_libtap \
 	-I$(top_srcdir)/src \
 	-I$(top_srcdir)/src/dnssec/lib \
 	-I$(top_srcdir)/src/dnssec/shared \
@@ -8,13 +11,20 @@ AM_CPPFLAGS = \
 	$(gnutls_CFLAGS)
 
 LDADD = \
-	$(top_builddir)/libtap/libtap.la \
+	$(top_builddir)/tests/_libtap/libtap.la \
 	$(top_builddir)/src/dnssec/libdnssec.la \
 	$(top_builddir)/src/libknot.la \
 	$(top_builddir)/src/libknotd.la \
-	$(top_builddir)/src/libcontrib.la
+	$(top_builddir)/src/libcontrib.la \
+	$(top_builddir)/src/zscanner/libzscanner.la
 
-EXTRA_DIST = dnssec/sample_keys.h
+EXTRA_DIST = \
+	dnssec/sample_keys.h		\
+	knot/semantic_check_data	\
+	knot/test_semantic_check.in	\
+	zscanner/data			\
+	zscanner/test_zscanner.in	\
+	zscanner/TESTS
 
 check_PROGRAMS = \
 	contrib/test_base32hex		\
@@ -122,7 +132,7 @@ check_PROGRAMS += \
 endif
 endif
 
-dnssec_keystore_pkcs11_CPPFLAGS = \
+dnssec_test_keystore_pkcs11_CPPFLAGS = \
 	$(AM_CPPFLAGS) \
 	-DLIBDIR='"$(libdir)"'
 
@@ -131,7 +141,7 @@ utils_test_lookup_CPPFLAGS = \
 	$(libedit_CFLAGS)
 
 utils_test_lookup_LDADD = \
-	$(top_builddir)/libtap/libtap.la \
+	$(top_builddir)/tests/_libtap/libtap.la \
 	$(top_builddir)/src/libknotus.la \
 	$(libedit_LIBS)
 
@@ -140,13 +150,35 @@ utils_test_cert_CPPFLAGS = \
 	$(libedit_CFLAGS)
 
 utils_test_cert_LDADD = \
-	$(top_builddir)/libtap/libtap.la \
+	$(top_builddir)/tests/_libtap/libtap.la \
 	$(top_builddir)/src/libknotus.la \
 	$(libedit_LIBS)
 
-CLEANFILES = runtests.log
+EXTRA_PROGRAMS = \
+	zscanner/zscanner-tool
+
+zscanner_zscanner_tool_SOURCES =	\
+	zscanner/zscanner-tool.c	\
+	zscanner/processing.h		\
+	zscanner/processing.c
+
+check_SCRIPTS = \
+	knot/test_semantic_check	\
+	zscanner/test_zscanner
+
+edit = $(SED) \
+	-e 's|@top_srcdir[@]|$(abs_top_srcdir)|g' \
+	-e 's|@top_builddir[@]|$(abs_top_builddir)|g'
+
+knot/test_semantic_check:
+	@$(edit) < $(top_srcdir)/tests/$@.in > $(top_builddir)/tests/$@
+	@chmod +x $(top_builddir)/tests/$@
+
+zscanner/test_zscanner: zscanner/zscanner-tool
+	@$(edit) < $(top_srcdir)/tests/$@.in > $(top_builddir)/tests/$@
+	@chmod +x $(top_builddir)/tests/$@
 
-include $(srcdir)/knot/semantic_check_data/Makefile.inc
+CLEANFILES = $(check_SCRIPTS) $(EXTRA_PROGRAMS) runtests.log
 
 check-compile: $(check_PROGRAMS) $(check_SCRIPTS)
 
@@ -155,10 +187,8 @@ am__v_RUNTESTS_ = $(am__v_RUNTESTS_@AM_DEFAULT_V@)
 am__v_RUNTESTS_0 =
 am__v_RUNTESTS_1 = RET=$$?; if [ "$$RET" != "0" ]; then cat "$(builddir)/runtests.log"; exit $$RET; fi
 check-local: $(check_PROGRAMS) $(check_SCRIPTS)
-	@$(top_builddir)/libtap/runtests -s $(srcdir) \
-					-b $(builddir) \
-					-L $(builddir)/runtests.log \
-					$(check_PROGRAMS) $(check_SCRIPTS); \
+	@$(top_builddir)/tests/_libtap/runtests -s $(srcdir) -b $(builddir) \
+	 -L $(builddir)/runtests.log $(check_PROGRAMS) $(check_SCRIPTS); \
 	$(AM_V_RUNTESTS)
 
 knot_test_acl_SOURCES = knot/test_acl.c knot/test_conf.h
diff --git a/libtap/.gitignore b/tests/_libtap/.gitignore
similarity index 100%
rename from libtap/.gitignore
rename to tests/_libtap/.gitignore
diff --git a/libtap/Makefile.am b/tests/_libtap/Makefile.am
similarity index 73%
rename from libtap/Makefile.am
rename to tests/_libtap/Makefile.am
index 81c4d288cd13dbc1cccbbd74c7fb1bc7d6bcbb2e..f14da0e1b0fac1d34077d4cc6e76ea3342166854 100644
--- a/libtap/Makefile.am
+++ b/tests/_libtap/Makefile.am
@@ -3,9 +3,12 @@ AM_CPPFLAGS = \
 	-I$(top_srcdir)/src
 
 libtap_la_SOURCES = \
-	tap/basic.c tap/basic.h \
-	tap/files.c tap/files.h \
-	tap/float.c tap/float.h \
+	tap/basic.c		\
+	tap/basic.h		\
+	tap/files.c		\
+	tap/files.h		\
+	tap/float.c		\
+	tap/float.h		\
 	tap/macros.h
 
 check_LTLIBRARIES = libtap.la
diff --git a/libtap/README b/tests/_libtap/README
similarity index 100%
rename from libtap/README
rename to tests/_libtap/README
diff --git a/libtap/runtests.c b/tests/_libtap/runtests.c
similarity index 100%
rename from libtap/runtests.c
rename to tests/_libtap/runtests.c
diff --git a/libtap/tap/basic.c b/tests/_libtap/tap/basic.c
similarity index 100%
rename from libtap/tap/basic.c
rename to tests/_libtap/tap/basic.c
diff --git a/libtap/tap/basic.h b/tests/_libtap/tap/basic.h
similarity index 100%
rename from libtap/tap/basic.h
rename to tests/_libtap/tap/basic.h
diff --git a/libtap/tap/files.c b/tests/_libtap/tap/files.c
similarity index 100%
rename from libtap/tap/files.c
rename to tests/_libtap/tap/files.c
diff --git a/libtap/tap/files.h b/tests/_libtap/tap/files.h
similarity index 100%
rename from libtap/tap/files.h
rename to tests/_libtap/tap/files.h
diff --git a/libtap/tap/float.c b/tests/_libtap/tap/float.c
similarity index 100%
rename from libtap/tap/float.c
rename to tests/_libtap/tap/float.c
diff --git a/libtap/tap/float.h b/tests/_libtap/tap/float.h
similarity index 100%
rename from libtap/tap/float.h
rename to tests/_libtap/tap/float.h
diff --git a/libtap/tap/libtap.sh b/tests/_libtap/tap/libtap.sh
similarity index 100%
rename from libtap/tap/libtap.sh
rename to tests/_libtap/tap/libtap.sh
diff --git a/libtap/tap/macros.h b/tests/_libtap/tap/macros.h
similarity index 100%
rename from libtap/tap/macros.h
rename to tests/_libtap/tap/macros.h
diff --git a/tests/knot/semantic_check_data/Makefile.inc b/tests/knot/semantic_check_data/Makefile.inc
deleted file mode 100644
index 9005c312acafe7343dea645a087608b6978ccea1..0000000000000000000000000000000000000000
--- a/tests/knot/semantic_check_data/Makefile.inc
+++ /dev/null
@@ -1,16 +0,0 @@
-check_SCRIPTS = \
-	knot/test_semantic_check
-
-CLEANFILES += $(check_SCRIPTS)
-
-edit = $(SED) \
-	-e 's|@top_srcdir[@]|$(abs_top_srcdir)|g' \
-	-e 's|@top_builddir[@]|$(abs_top_builddir)|g'
-
-knot/test_semantic_check: $(top_srcdir)/tests/knot/test_semantic_check.in
-	@$(edit) < $(top_srcdir)/tests/knot/test_semantic_check.in > $(top_builddir)/tests/knot/test_semantic_check
-	@chmod +x $(top_builddir)/tests/knot/test_semantic_check
-
-EXTRA_DIST += \
-	knot/test_semantic_check.in \
-	knot/semantic_check_data
diff --git a/tests/knot/test_semantic_check.in b/tests/knot/test_semantic_check.in
index 9a769e1b8627bf3b2004a845dc3cc780fa21bd34..bc8f2be9780fae897bdd55cda369f82dcb16fb85 100644
--- a/tests/knot/test_semantic_check.in
+++ b/tests/knot/test_semantic_check.in
@@ -3,7 +3,7 @@
 KZONECHECK="@top_builddir@/src/kzonecheck"
 DATA="@top_srcdir@/tests/knot/semantic_check_data"
 
-. "@top_srcdir@/libtap/tap/libtap.sh"
+. "@top_srcdir@/tests/_libtap/tap/libtap.sh"
 
 TMPDIR=$(test_tmpdir)
 LOG="$TMPDIR/log"
diff --git a/src/zscanner/tests/TESTS b/tests/zscanner/TESTS
similarity index 100%
rename from src/zscanner/tests/TESTS
rename to tests/zscanner/TESTS
diff --git a/src/zscanner/tests/data/00-0_general.in b/tests/zscanner/data/00-0_general.in
similarity index 100%
rename from src/zscanner/tests/data/00-0_general.in
rename to tests/zscanner/data/00-0_general.in
diff --git a/src/zscanner/tests/data/00-0_general.out b/tests/zscanner/data/00-0_general.out
similarity index 100%
rename from src/zscanner/tests/data/00-0_general.out
rename to tests/zscanner/data/00-0_general.out
diff --git a/src/zscanner/tests/data/00-1_general.in b/tests/zscanner/data/00-1_general.in
similarity index 100%
rename from src/zscanner/tests/data/00-1_general.in
rename to tests/zscanner/data/00-1_general.in
diff --git a/src/zscanner/tests/data/00-1_general.out b/tests/zscanner/data/00-1_general.out
similarity index 100%
rename from src/zscanner/tests/data/00-1_general.out
rename to tests/zscanner/data/00-1_general.out
diff --git a/src/zscanner/tests/data/00-2_general.in b/tests/zscanner/data/00-2_general.in
similarity index 100%
rename from src/zscanner/tests/data/00-2_general.in
rename to tests/zscanner/data/00-2_general.in
diff --git a/src/zscanner/tests/data/00-2_general.out b/tests/zscanner/data/00-2_general.out
similarity index 100%
rename from src/zscanner/tests/data/00-2_general.out
rename to tests/zscanner/data/00-2_general.out
diff --git a/src/zscanner/tests/data/00-3_general.in b/tests/zscanner/data/00-3_general.in
similarity index 100%
rename from src/zscanner/tests/data/00-3_general.in
rename to tests/zscanner/data/00-3_general.in
diff --git a/src/zscanner/tests/data/00-3_general.out b/tests/zscanner/data/00-3_general.out
similarity index 100%
rename from src/zscanner/tests/data/00-3_general.out
rename to tests/zscanner/data/00-3_general.out
diff --git a/src/zscanner/tests/data/00-4_general.in b/tests/zscanner/data/00-4_general.in
similarity index 100%
rename from src/zscanner/tests/data/00-4_general.in
rename to tests/zscanner/data/00-4_general.in
diff --git a/src/zscanner/tests/data/00-4_general.out b/tests/zscanner/data/00-4_general.out
similarity index 100%
rename from src/zscanner/tests/data/00-4_general.out
rename to tests/zscanner/data/00-4_general.out
diff --git a/src/zscanner/tests/data/01_owner.in b/tests/zscanner/data/01_owner.in
similarity index 100%
rename from src/zscanner/tests/data/01_owner.in
rename to tests/zscanner/data/01_owner.in
diff --git a/src/zscanner/tests/data/01_owner.out b/tests/zscanner/data/01_owner.out
similarity index 100%
rename from src/zscanner/tests/data/01_owner.out
rename to tests/zscanner/data/01_owner.out
diff --git a/src/zscanner/tests/data/02_class.in b/tests/zscanner/data/02_class.in
similarity index 100%
rename from src/zscanner/tests/data/02_class.in
rename to tests/zscanner/data/02_class.in
diff --git a/src/zscanner/tests/data/02_class.out b/tests/zscanner/data/02_class.out
similarity index 100%
rename from src/zscanner/tests/data/02_class.out
rename to tests/zscanner/data/02_class.out
diff --git a/src/zscanner/tests/data/03_rrttl.in b/tests/zscanner/data/03_rrttl.in
similarity index 100%
rename from src/zscanner/tests/data/03_rrttl.in
rename to tests/zscanner/data/03_rrttl.in
diff --git a/src/zscanner/tests/data/03_rrttl.out b/tests/zscanner/data/03_rrttl.out
similarity index 100%
rename from src/zscanner/tests/data/03_rrttl.out
rename to tests/zscanner/data/03_rrttl.out
diff --git a/src/zscanner/tests/data/04-0_ORIGIN.in b/tests/zscanner/data/04-0_ORIGIN.in
similarity index 100%
rename from src/zscanner/tests/data/04-0_ORIGIN.in
rename to tests/zscanner/data/04-0_ORIGIN.in
diff --git a/src/zscanner/tests/data/04-0_ORIGIN.out b/tests/zscanner/data/04-0_ORIGIN.out
similarity index 100%
rename from src/zscanner/tests/data/04-0_ORIGIN.out
rename to tests/zscanner/data/04-0_ORIGIN.out
diff --git a/src/zscanner/tests/data/04-1_ORIGIN.in b/tests/zscanner/data/04-1_ORIGIN.in
similarity index 100%
rename from src/zscanner/tests/data/04-1_ORIGIN.in
rename to tests/zscanner/data/04-1_ORIGIN.in
diff --git a/src/zscanner/tests/data/04-1_ORIGIN.out b/tests/zscanner/data/04-1_ORIGIN.out
similarity index 100%
rename from src/zscanner/tests/data/04-1_ORIGIN.out
rename to tests/zscanner/data/04-1_ORIGIN.out
diff --git a/src/zscanner/tests/data/04-2_ORIGIN.in b/tests/zscanner/data/04-2_ORIGIN.in
similarity index 100%
rename from src/zscanner/tests/data/04-2_ORIGIN.in
rename to tests/zscanner/data/04-2_ORIGIN.in
diff --git a/src/zscanner/tests/data/04-2_ORIGIN.out b/tests/zscanner/data/04-2_ORIGIN.out
similarity index 100%
rename from src/zscanner/tests/data/04-2_ORIGIN.out
rename to tests/zscanner/data/04-2_ORIGIN.out
diff --git a/src/zscanner/tests/data/04-3_ORIGIN.in b/tests/zscanner/data/04-3_ORIGIN.in
similarity index 100%
rename from src/zscanner/tests/data/04-3_ORIGIN.in
rename to tests/zscanner/data/04-3_ORIGIN.in
diff --git a/src/zscanner/tests/data/04-3_ORIGIN.out b/tests/zscanner/data/04-3_ORIGIN.out
similarity index 100%
rename from src/zscanner/tests/data/04-3_ORIGIN.out
rename to tests/zscanner/data/04-3_ORIGIN.out
diff --git a/src/zscanner/tests/data/04-4_ORIGIN.in b/tests/zscanner/data/04-4_ORIGIN.in
similarity index 100%
rename from src/zscanner/tests/data/04-4_ORIGIN.in
rename to tests/zscanner/data/04-4_ORIGIN.in
diff --git a/src/zscanner/tests/data/04-4_ORIGIN.out b/tests/zscanner/data/04-4_ORIGIN.out
similarity index 100%
rename from src/zscanner/tests/data/04-4_ORIGIN.out
rename to tests/zscanner/data/04-4_ORIGIN.out
diff --git a/src/zscanner/tests/data/04-5_ORIGIN.in b/tests/zscanner/data/04-5_ORIGIN.in
similarity index 100%
rename from src/zscanner/tests/data/04-5_ORIGIN.in
rename to tests/zscanner/data/04-5_ORIGIN.in
diff --git a/src/zscanner/tests/data/04-5_ORIGIN.out b/tests/zscanner/data/04-5_ORIGIN.out
similarity index 100%
rename from src/zscanner/tests/data/04-5_ORIGIN.out
rename to tests/zscanner/data/04-5_ORIGIN.out
diff --git a/src/zscanner/tests/data/04-6_ORIGIN.in b/tests/zscanner/data/04-6_ORIGIN.in
similarity index 100%
rename from src/zscanner/tests/data/04-6_ORIGIN.in
rename to tests/zscanner/data/04-6_ORIGIN.in
diff --git a/src/zscanner/tests/data/04-6_ORIGIN.out b/tests/zscanner/data/04-6_ORIGIN.out
similarity index 100%
rename from src/zscanner/tests/data/04-6_ORIGIN.out
rename to tests/zscanner/data/04-6_ORIGIN.out
diff --git a/src/zscanner/tests/data/04-7_ORIGIN.in b/tests/zscanner/data/04-7_ORIGIN.in
similarity index 100%
rename from src/zscanner/tests/data/04-7_ORIGIN.in
rename to tests/zscanner/data/04-7_ORIGIN.in
diff --git a/src/zscanner/tests/data/04-7_ORIGIN.out b/tests/zscanner/data/04-7_ORIGIN.out
similarity index 100%
rename from src/zscanner/tests/data/04-7_ORIGIN.out
rename to tests/zscanner/data/04-7_ORIGIN.out
diff --git a/src/zscanner/tests/data/04-8_ORIGIN.in b/tests/zscanner/data/04-8_ORIGIN.in
similarity index 100%
rename from src/zscanner/tests/data/04-8_ORIGIN.in
rename to tests/zscanner/data/04-8_ORIGIN.in
diff --git a/src/zscanner/tests/data/04-8_ORIGIN.out b/tests/zscanner/data/04-8_ORIGIN.out
similarity index 100%
rename from src/zscanner/tests/data/04-8_ORIGIN.out
rename to tests/zscanner/data/04-8_ORIGIN.out
diff --git a/src/zscanner/tests/data/04-9_ORIGIN.in b/tests/zscanner/data/04-9_ORIGIN.in
similarity index 100%
rename from src/zscanner/tests/data/04-9_ORIGIN.in
rename to tests/zscanner/data/04-9_ORIGIN.in
diff --git a/src/zscanner/tests/data/04-9_ORIGIN.out b/tests/zscanner/data/04-9_ORIGIN.out
similarity index 100%
rename from src/zscanner/tests/data/04-9_ORIGIN.out
rename to tests/zscanner/data/04-9_ORIGIN.out
diff --git a/src/zscanner/tests/data/05-0_TTL.in b/tests/zscanner/data/05-0_TTL.in
similarity index 100%
rename from src/zscanner/tests/data/05-0_TTL.in
rename to tests/zscanner/data/05-0_TTL.in
diff --git a/src/zscanner/tests/data/05-0_TTL.out b/tests/zscanner/data/05-0_TTL.out
similarity index 100%
rename from src/zscanner/tests/data/05-0_TTL.out
rename to tests/zscanner/data/05-0_TTL.out
diff --git a/src/zscanner/tests/data/05-1_TTL.in b/tests/zscanner/data/05-1_TTL.in
similarity index 100%
rename from src/zscanner/tests/data/05-1_TTL.in
rename to tests/zscanner/data/05-1_TTL.in
diff --git a/src/zscanner/tests/data/05-1_TTL.out b/tests/zscanner/data/05-1_TTL.out
similarity index 100%
rename from src/zscanner/tests/data/05-1_TTL.out
rename to tests/zscanner/data/05-1_TTL.out
diff --git a/src/zscanner/tests/data/05-2_TTL.in b/tests/zscanner/data/05-2_TTL.in
similarity index 100%
rename from src/zscanner/tests/data/05-2_TTL.in
rename to tests/zscanner/data/05-2_TTL.in
diff --git a/src/zscanner/tests/data/05-2_TTL.out b/tests/zscanner/data/05-2_TTL.out
similarity index 100%
rename from src/zscanner/tests/data/05-2_TTL.out
rename to tests/zscanner/data/05-2_TTL.out
diff --git a/src/zscanner/tests/data/05-3_TTL.in b/tests/zscanner/data/05-3_TTL.in
similarity index 100%
rename from src/zscanner/tests/data/05-3_TTL.in
rename to tests/zscanner/data/05-3_TTL.in
diff --git a/src/zscanner/tests/data/05-3_TTL.out b/tests/zscanner/data/05-3_TTL.out
similarity index 100%
rename from src/zscanner/tests/data/05-3_TTL.out
rename to tests/zscanner/data/05-3_TTL.out
diff --git a/src/zscanner/tests/data/05-4_TTL.in b/tests/zscanner/data/05-4_TTL.in
similarity index 100%
rename from src/zscanner/tests/data/05-4_TTL.in
rename to tests/zscanner/data/05-4_TTL.in
diff --git a/src/zscanner/tests/data/05-4_TTL.out b/tests/zscanner/data/05-4_TTL.out
similarity index 100%
rename from src/zscanner/tests/data/05-4_TTL.out
rename to tests/zscanner/data/05-4_TTL.out
diff --git a/src/zscanner/tests/data/06-0_INCLUDE.in b/tests/zscanner/data/06-0_INCLUDE.in
similarity index 100%
rename from src/zscanner/tests/data/06-0_INCLUDE.in
rename to tests/zscanner/data/06-0_INCLUDE.in
diff --git a/src/zscanner/tests/data/06-0_INCLUDE.out b/tests/zscanner/data/06-0_INCLUDE.out
similarity index 100%
rename from src/zscanner/tests/data/06-0_INCLUDE.out
rename to tests/zscanner/data/06-0_INCLUDE.out
diff --git a/src/zscanner/tests/data/06-1_INCLUDE.in b/tests/zscanner/data/06-1_INCLUDE.in
similarity index 100%
rename from src/zscanner/tests/data/06-1_INCLUDE.in
rename to tests/zscanner/data/06-1_INCLUDE.in
diff --git a/src/zscanner/tests/data/06-1_INCLUDE.out b/tests/zscanner/data/06-1_INCLUDE.out
similarity index 100%
rename from src/zscanner/tests/data/06-1_INCLUDE.out
rename to tests/zscanner/data/06-1_INCLUDE.out
diff --git a/src/zscanner/tests/data/06-2_INCLUDE.in b/tests/zscanner/data/06-2_INCLUDE.in
similarity index 100%
rename from src/zscanner/tests/data/06-2_INCLUDE.in
rename to tests/zscanner/data/06-2_INCLUDE.in
diff --git a/src/zscanner/tests/data/06-2_INCLUDE.out b/tests/zscanner/data/06-2_INCLUDE.out
similarity index 100%
rename from src/zscanner/tests/data/06-2_INCLUDE.out
rename to tests/zscanner/data/06-2_INCLUDE.out
diff --git a/src/zscanner/tests/data/06-3_INCLUDE.in b/tests/zscanner/data/06-3_INCLUDE.in
similarity index 100%
rename from src/zscanner/tests/data/06-3_INCLUDE.in
rename to tests/zscanner/data/06-3_INCLUDE.in
diff --git a/src/zscanner/tests/data/06-3_INCLUDE.out b/tests/zscanner/data/06-3_INCLUDE.out
similarity index 100%
rename from src/zscanner/tests/data/06-3_INCLUDE.out
rename to tests/zscanner/data/06-3_INCLUDE.out
diff --git a/src/zscanner/tests/data/06-4_INCLUDE.in b/tests/zscanner/data/06-4_INCLUDE.in
similarity index 100%
rename from src/zscanner/tests/data/06-4_INCLUDE.in
rename to tests/zscanner/data/06-4_INCLUDE.in
diff --git a/src/zscanner/tests/data/06-4_INCLUDE.out b/tests/zscanner/data/06-4_INCLUDE.out
similarity index 100%
rename from src/zscanner/tests/data/06-4_INCLUDE.out
rename to tests/zscanner/data/06-4_INCLUDE.out
diff --git a/src/zscanner/tests/data/06-5_INCLUDE.in b/tests/zscanner/data/06-5_INCLUDE.in
similarity index 100%
rename from src/zscanner/tests/data/06-5_INCLUDE.in
rename to tests/zscanner/data/06-5_INCLUDE.in
diff --git a/src/zscanner/tests/data/06-5_INCLUDE.out b/tests/zscanner/data/06-5_INCLUDE.out
similarity index 100%
rename from src/zscanner/tests/data/06-5_INCLUDE.out
rename to tests/zscanner/data/06-5_INCLUDE.out
diff --git a/src/zscanner/tests/data/06-6_INCLUDE.in b/tests/zscanner/data/06-6_INCLUDE.in
similarity index 100%
rename from src/zscanner/tests/data/06-6_INCLUDE.in
rename to tests/zscanner/data/06-6_INCLUDE.in
diff --git a/src/zscanner/tests/data/06-6_INCLUDE.out b/tests/zscanner/data/06-6_INCLUDE.out
similarity index 100%
rename from src/zscanner/tests/data/06-6_INCLUDE.out
rename to tests/zscanner/data/06-6_INCLUDE.out
diff --git a/src/zscanner/tests/data/06-7_INCLUDE.in b/tests/zscanner/data/06-7_INCLUDE.in
similarity index 100%
rename from src/zscanner/tests/data/06-7_INCLUDE.in
rename to tests/zscanner/data/06-7_INCLUDE.in
diff --git a/src/zscanner/tests/data/06-7_INCLUDE.out b/tests/zscanner/data/06-7_INCLUDE.out
similarity index 100%
rename from src/zscanner/tests/data/06-7_INCLUDE.out
rename to tests/zscanner/data/06-7_INCLUDE.out
diff --git a/src/zscanner/tests/data/06-8_INCLUDE.in b/tests/zscanner/data/06-8_INCLUDE.in
similarity index 100%
rename from src/zscanner/tests/data/06-8_INCLUDE.in
rename to tests/zscanner/data/06-8_INCLUDE.in
diff --git a/src/zscanner/tests/data/06-8_INCLUDE.out b/tests/zscanner/data/06-8_INCLUDE.out
similarity index 100%
rename from src/zscanner/tests/data/06-8_INCLUDE.out
rename to tests/zscanner/data/06-8_INCLUDE.out
diff --git a/src/zscanner/tests/data/07-0-rdata.in b/tests/zscanner/data/07-0-rdata.in
similarity index 100%
rename from src/zscanner/tests/data/07-0-rdata.in
rename to tests/zscanner/data/07-0-rdata.in
diff --git a/src/zscanner/tests/data/07-0-rdata.out b/tests/zscanner/data/07-0-rdata.out
similarity index 100%
rename from src/zscanner/tests/data/07-0-rdata.out
rename to tests/zscanner/data/07-0-rdata.out
diff --git a/src/zscanner/tests/data/07-1-rdata.in b/tests/zscanner/data/07-1-rdata.in
similarity index 100%
rename from src/zscanner/tests/data/07-1-rdata.in
rename to tests/zscanner/data/07-1-rdata.in
diff --git a/src/zscanner/tests/data/07-1-rdata.out b/tests/zscanner/data/07-1-rdata.out
similarity index 100%
rename from src/zscanner/tests/data/07-1-rdata.out
rename to tests/zscanner/data/07-1-rdata.out
diff --git a/src/zscanner/tests/data/07-2-rdata.in b/tests/zscanner/data/07-2-rdata.in
similarity index 100%
rename from src/zscanner/tests/data/07-2-rdata.in
rename to tests/zscanner/data/07-2-rdata.in
diff --git a/src/zscanner/tests/data/07-2-rdata.out b/tests/zscanner/data/07-2-rdata.out
similarity index 100%
rename from src/zscanner/tests/data/07-2-rdata.out
rename to tests/zscanner/data/07-2-rdata.out
diff --git a/src/zscanner/tests/data/07-3-rdata.in b/tests/zscanner/data/07-3-rdata.in
similarity index 100%
rename from src/zscanner/tests/data/07-3-rdata.in
rename to tests/zscanner/data/07-3-rdata.in
diff --git a/src/zscanner/tests/data/07-3-rdata.out b/tests/zscanner/data/07-3-rdata.out
similarity index 100%
rename from src/zscanner/tests/data/07-3-rdata.out
rename to tests/zscanner/data/07-3-rdata.out
diff --git a/src/zscanner/tests/data/07-4-rdata.in b/tests/zscanner/data/07-4-rdata.in
similarity index 100%
rename from src/zscanner/tests/data/07-4-rdata.in
rename to tests/zscanner/data/07-4-rdata.in
diff --git a/src/zscanner/tests/data/07-4-rdata.out b/tests/zscanner/data/07-4-rdata.out
similarity index 100%
rename from src/zscanner/tests/data/07-4-rdata.out
rename to tests/zscanner/data/07-4-rdata.out
diff --git a/src/zscanner/tests/data/10_A.in b/tests/zscanner/data/10_A.in
similarity index 100%
rename from src/zscanner/tests/data/10_A.in
rename to tests/zscanner/data/10_A.in
diff --git a/src/zscanner/tests/data/10_A.out b/tests/zscanner/data/10_A.out
similarity index 100%
rename from src/zscanner/tests/data/10_A.out
rename to tests/zscanner/data/10_A.out
diff --git a/src/zscanner/tests/data/11_AAAA.in b/tests/zscanner/data/11_AAAA.in
similarity index 100%
rename from src/zscanner/tests/data/11_AAAA.in
rename to tests/zscanner/data/11_AAAA.in
diff --git a/src/zscanner/tests/data/11_AAAA.out b/tests/zscanner/data/11_AAAA.out
similarity index 100%
rename from src/zscanner/tests/data/11_AAAA.out
rename to tests/zscanner/data/11_AAAA.out
diff --git a/src/zscanner/tests/data/12_TXT.in b/tests/zscanner/data/12_TXT.in
similarity index 100%
rename from src/zscanner/tests/data/12_TXT.in
rename to tests/zscanner/data/12_TXT.in
diff --git a/src/zscanner/tests/data/12_TXT.out b/tests/zscanner/data/12_TXT.out
similarity index 100%
rename from src/zscanner/tests/data/12_TXT.out
rename to tests/zscanner/data/12_TXT.out
diff --git a/src/zscanner/tests/data/13_SPF.in b/tests/zscanner/data/13_SPF.in
similarity index 100%
rename from src/zscanner/tests/data/13_SPF.in
rename to tests/zscanner/data/13_SPF.in
diff --git a/src/zscanner/tests/data/13_SPF.out b/tests/zscanner/data/13_SPF.out
similarity index 100%
rename from src/zscanner/tests/data/13_SPF.out
rename to tests/zscanner/data/13_SPF.out
diff --git a/src/zscanner/tests/data/14_NS.in b/tests/zscanner/data/14_NS.in
similarity index 100%
rename from src/zscanner/tests/data/14_NS.in
rename to tests/zscanner/data/14_NS.in
diff --git a/src/zscanner/tests/data/14_NS.out b/tests/zscanner/data/14_NS.out
similarity index 100%
rename from src/zscanner/tests/data/14_NS.out
rename to tests/zscanner/data/14_NS.out
diff --git a/src/zscanner/tests/data/15_CNAME.in b/tests/zscanner/data/15_CNAME.in
similarity index 100%
rename from src/zscanner/tests/data/15_CNAME.in
rename to tests/zscanner/data/15_CNAME.in
diff --git a/src/zscanner/tests/data/15_CNAME.out b/tests/zscanner/data/15_CNAME.out
similarity index 100%
rename from src/zscanner/tests/data/15_CNAME.out
rename to tests/zscanner/data/15_CNAME.out
diff --git a/src/zscanner/tests/data/16_PTR.in b/tests/zscanner/data/16_PTR.in
similarity index 100%
rename from src/zscanner/tests/data/16_PTR.in
rename to tests/zscanner/data/16_PTR.in
diff --git a/src/zscanner/tests/data/16_PTR.out b/tests/zscanner/data/16_PTR.out
similarity index 100%
rename from src/zscanner/tests/data/16_PTR.out
rename to tests/zscanner/data/16_PTR.out
diff --git a/src/zscanner/tests/data/17_DNAME.in b/tests/zscanner/data/17_DNAME.in
similarity index 100%
rename from src/zscanner/tests/data/17_DNAME.in
rename to tests/zscanner/data/17_DNAME.in
diff --git a/src/zscanner/tests/data/17_DNAME.out b/tests/zscanner/data/17_DNAME.out
similarity index 100%
rename from src/zscanner/tests/data/17_DNAME.out
rename to tests/zscanner/data/17_DNAME.out
diff --git a/src/zscanner/tests/data/18_MX.in b/tests/zscanner/data/18_MX.in
similarity index 100%
rename from src/zscanner/tests/data/18_MX.in
rename to tests/zscanner/data/18_MX.in
diff --git a/src/zscanner/tests/data/18_MX.out b/tests/zscanner/data/18_MX.out
similarity index 100%
rename from src/zscanner/tests/data/18_MX.out
rename to tests/zscanner/data/18_MX.out
diff --git a/src/zscanner/tests/data/19_AFSDB.in b/tests/zscanner/data/19_AFSDB.in
similarity index 100%
rename from src/zscanner/tests/data/19_AFSDB.in
rename to tests/zscanner/data/19_AFSDB.in
diff --git a/src/zscanner/tests/data/19_AFSDB.out b/tests/zscanner/data/19_AFSDB.out
similarity index 100%
rename from src/zscanner/tests/data/19_AFSDB.out
rename to tests/zscanner/data/19_AFSDB.out
diff --git a/src/zscanner/tests/data/20_RT.in b/tests/zscanner/data/20_RT.in
similarity index 100%
rename from src/zscanner/tests/data/20_RT.in
rename to tests/zscanner/data/20_RT.in
diff --git a/src/zscanner/tests/data/20_RT.out b/tests/zscanner/data/20_RT.out
similarity index 100%
rename from src/zscanner/tests/data/20_RT.out
rename to tests/zscanner/data/20_RT.out
diff --git a/src/zscanner/tests/data/21_KX.in b/tests/zscanner/data/21_KX.in
similarity index 100%
rename from src/zscanner/tests/data/21_KX.in
rename to tests/zscanner/data/21_KX.in
diff --git a/src/zscanner/tests/data/21_KX.out b/tests/zscanner/data/21_KX.out
similarity index 100%
rename from src/zscanner/tests/data/21_KX.out
rename to tests/zscanner/data/21_KX.out
diff --git a/src/zscanner/tests/data/22_HINFO.in b/tests/zscanner/data/22_HINFO.in
similarity index 100%
rename from src/zscanner/tests/data/22_HINFO.in
rename to tests/zscanner/data/22_HINFO.in
diff --git a/src/zscanner/tests/data/22_HINFO.out b/tests/zscanner/data/22_HINFO.out
similarity index 100%
rename from src/zscanner/tests/data/22_HINFO.out
rename to tests/zscanner/data/22_HINFO.out
diff --git a/src/zscanner/tests/data/23_MINFO.in b/tests/zscanner/data/23_MINFO.in
similarity index 100%
rename from src/zscanner/tests/data/23_MINFO.in
rename to tests/zscanner/data/23_MINFO.in
diff --git a/src/zscanner/tests/data/23_MINFO.out b/tests/zscanner/data/23_MINFO.out
similarity index 100%
rename from src/zscanner/tests/data/23_MINFO.out
rename to tests/zscanner/data/23_MINFO.out
diff --git a/src/zscanner/tests/data/24_RP.in b/tests/zscanner/data/24_RP.in
similarity index 100%
rename from src/zscanner/tests/data/24_RP.in
rename to tests/zscanner/data/24_RP.in
diff --git a/src/zscanner/tests/data/24_RP.out b/tests/zscanner/data/24_RP.out
similarity index 100%
rename from src/zscanner/tests/data/24_RP.out
rename to tests/zscanner/data/24_RP.out
diff --git a/src/zscanner/tests/data/25_SOA.in b/tests/zscanner/data/25_SOA.in
similarity index 100%
rename from src/zscanner/tests/data/25_SOA.in
rename to tests/zscanner/data/25_SOA.in
diff --git a/src/zscanner/tests/data/25_SOA.out b/tests/zscanner/data/25_SOA.out
similarity index 100%
rename from src/zscanner/tests/data/25_SOA.out
rename to tests/zscanner/data/25_SOA.out
diff --git a/src/zscanner/tests/data/26_SRV.in b/tests/zscanner/data/26_SRV.in
similarity index 100%
rename from src/zscanner/tests/data/26_SRV.in
rename to tests/zscanner/data/26_SRV.in
diff --git a/src/zscanner/tests/data/26_SRV.out b/tests/zscanner/data/26_SRV.out
similarity index 100%
rename from src/zscanner/tests/data/26_SRV.out
rename to tests/zscanner/data/26_SRV.out
diff --git a/src/zscanner/tests/data/27_NAPTR.in b/tests/zscanner/data/27_NAPTR.in
similarity index 100%
rename from src/zscanner/tests/data/27_NAPTR.in
rename to tests/zscanner/data/27_NAPTR.in
diff --git a/src/zscanner/tests/data/27_NAPTR.out b/tests/zscanner/data/27_NAPTR.out
similarity index 100%
rename from src/zscanner/tests/data/27_NAPTR.out
rename to tests/zscanner/data/27_NAPTR.out
diff --git a/src/zscanner/tests/data/28_TYPE.in b/tests/zscanner/data/28_TYPE.in
similarity index 100%
rename from src/zscanner/tests/data/28_TYPE.in
rename to tests/zscanner/data/28_TYPE.in
diff --git a/src/zscanner/tests/data/28_TYPE.out b/tests/zscanner/data/28_TYPE.out
similarity index 100%
rename from src/zscanner/tests/data/28_TYPE.out
rename to tests/zscanner/data/28_TYPE.out
diff --git a/src/zscanner/tests/data/29_CERT.in b/tests/zscanner/data/29_CERT.in
similarity index 100%
rename from src/zscanner/tests/data/29_CERT.in
rename to tests/zscanner/data/29_CERT.in
diff --git a/src/zscanner/tests/data/29_CERT.out b/tests/zscanner/data/29_CERT.out
similarity index 100%
rename from src/zscanner/tests/data/29_CERT.out
rename to tests/zscanner/data/29_CERT.out
diff --git a/src/zscanner/tests/data/30_KEY.in b/tests/zscanner/data/30_KEY.in
similarity index 100%
rename from src/zscanner/tests/data/30_KEY.in
rename to tests/zscanner/data/30_KEY.in
diff --git a/src/zscanner/tests/data/30_KEY.out b/tests/zscanner/data/30_KEY.out
similarity index 100%
rename from src/zscanner/tests/data/30_KEY.out
rename to tests/zscanner/data/30_KEY.out
diff --git a/src/zscanner/tests/data/31_DNSKEY.in b/tests/zscanner/data/31_DNSKEY.in
similarity index 100%
rename from src/zscanner/tests/data/31_DNSKEY.in
rename to tests/zscanner/data/31_DNSKEY.in
diff --git a/src/zscanner/tests/data/31_DNSKEY.out b/tests/zscanner/data/31_DNSKEY.out
similarity index 100%
rename from src/zscanner/tests/data/31_DNSKEY.out
rename to tests/zscanner/data/31_DNSKEY.out
diff --git a/src/zscanner/tests/data/32_APL.in b/tests/zscanner/data/32_APL.in
similarity index 100%
rename from src/zscanner/tests/data/32_APL.in
rename to tests/zscanner/data/32_APL.in
diff --git a/src/zscanner/tests/data/32_APL.out b/tests/zscanner/data/32_APL.out
similarity index 100%
rename from src/zscanner/tests/data/32_APL.out
rename to tests/zscanner/data/32_APL.out
diff --git a/src/zscanner/tests/data/33_DS.in b/tests/zscanner/data/33_DS.in
similarity index 100%
rename from src/zscanner/tests/data/33_DS.in
rename to tests/zscanner/data/33_DS.in
diff --git a/src/zscanner/tests/data/33_DS.out b/tests/zscanner/data/33_DS.out
similarity index 100%
rename from src/zscanner/tests/data/33_DS.out
rename to tests/zscanner/data/33_DS.out
diff --git a/src/zscanner/tests/data/34_SSHFP.in b/tests/zscanner/data/34_SSHFP.in
similarity index 100%
rename from src/zscanner/tests/data/34_SSHFP.in
rename to tests/zscanner/data/34_SSHFP.in
diff --git a/src/zscanner/tests/data/34_SSHFP.out b/tests/zscanner/data/34_SSHFP.out
similarity index 100%
rename from src/zscanner/tests/data/34_SSHFP.out
rename to tests/zscanner/data/34_SSHFP.out
diff --git a/src/zscanner/tests/data/35_IPSECKEY.in b/tests/zscanner/data/35_IPSECKEY.in
similarity index 100%
rename from src/zscanner/tests/data/35_IPSECKEY.in
rename to tests/zscanner/data/35_IPSECKEY.in
diff --git a/src/zscanner/tests/data/35_IPSECKEY.out b/tests/zscanner/data/35_IPSECKEY.out
similarity index 100%
rename from src/zscanner/tests/data/35_IPSECKEY.out
rename to tests/zscanner/data/35_IPSECKEY.out
diff --git a/src/zscanner/tests/data/36_RRSIG.in b/tests/zscanner/data/36_RRSIG.in
similarity index 100%
rename from src/zscanner/tests/data/36_RRSIG.in
rename to tests/zscanner/data/36_RRSIG.in
diff --git a/src/zscanner/tests/data/36_RRSIG.out b/tests/zscanner/data/36_RRSIG.out
similarity index 100%
rename from src/zscanner/tests/data/36_RRSIG.out
rename to tests/zscanner/data/36_RRSIG.out
diff --git a/src/zscanner/tests/data/37_NSEC.in b/tests/zscanner/data/37_NSEC.in
similarity index 100%
rename from src/zscanner/tests/data/37_NSEC.in
rename to tests/zscanner/data/37_NSEC.in
diff --git a/src/zscanner/tests/data/37_NSEC.out b/tests/zscanner/data/37_NSEC.out
similarity index 100%
rename from src/zscanner/tests/data/37_NSEC.out
rename to tests/zscanner/data/37_NSEC.out
diff --git a/src/zscanner/tests/data/38_DHCID.in b/tests/zscanner/data/38_DHCID.in
similarity index 100%
rename from src/zscanner/tests/data/38_DHCID.in
rename to tests/zscanner/data/38_DHCID.in
diff --git a/src/zscanner/tests/data/38_DHCID.out b/tests/zscanner/data/38_DHCID.out
similarity index 100%
rename from src/zscanner/tests/data/38_DHCID.out
rename to tests/zscanner/data/38_DHCID.out
diff --git a/src/zscanner/tests/data/39_NSEC3.in b/tests/zscanner/data/39_NSEC3.in
similarity index 100%
rename from src/zscanner/tests/data/39_NSEC3.in
rename to tests/zscanner/data/39_NSEC3.in
diff --git a/src/zscanner/tests/data/39_NSEC3.out b/tests/zscanner/data/39_NSEC3.out
similarity index 100%
rename from src/zscanner/tests/data/39_NSEC3.out
rename to tests/zscanner/data/39_NSEC3.out
diff --git a/src/zscanner/tests/data/40_NSEC3PARAM.in b/tests/zscanner/data/40_NSEC3PARAM.in
similarity index 100%
rename from src/zscanner/tests/data/40_NSEC3PARAM.in
rename to tests/zscanner/data/40_NSEC3PARAM.in
diff --git a/src/zscanner/tests/data/40_NSEC3PARAM.out b/tests/zscanner/data/40_NSEC3PARAM.out
similarity index 100%
rename from src/zscanner/tests/data/40_NSEC3PARAM.out
rename to tests/zscanner/data/40_NSEC3PARAM.out
diff --git a/src/zscanner/tests/data/41_TLSA.in b/tests/zscanner/data/41_TLSA.in
similarity index 100%
rename from src/zscanner/tests/data/41_TLSA.in
rename to tests/zscanner/data/41_TLSA.in
diff --git a/src/zscanner/tests/data/41_TLSA.out b/tests/zscanner/data/41_TLSA.out
similarity index 100%
rename from src/zscanner/tests/data/41_TLSA.out
rename to tests/zscanner/data/41_TLSA.out
diff --git a/src/zscanner/tests/data/42_LOC.in b/tests/zscanner/data/42_LOC.in
similarity index 100%
rename from src/zscanner/tests/data/42_LOC.in
rename to tests/zscanner/data/42_LOC.in
diff --git a/src/zscanner/tests/data/42_LOC.out b/tests/zscanner/data/42_LOC.out
similarity index 100%
rename from src/zscanner/tests/data/42_LOC.out
rename to tests/zscanner/data/42_LOC.out
diff --git a/src/zscanner/tests/data/43_EUI48.in b/tests/zscanner/data/43_EUI48.in
similarity index 100%
rename from src/zscanner/tests/data/43_EUI48.in
rename to tests/zscanner/data/43_EUI48.in
diff --git a/src/zscanner/tests/data/43_EUI48.out b/tests/zscanner/data/43_EUI48.out
similarity index 100%
rename from src/zscanner/tests/data/43_EUI48.out
rename to tests/zscanner/data/43_EUI48.out
diff --git a/src/zscanner/tests/data/44_EUI64.in b/tests/zscanner/data/44_EUI64.in
similarity index 100%
rename from src/zscanner/tests/data/44_EUI64.in
rename to tests/zscanner/data/44_EUI64.in
diff --git a/src/zscanner/tests/data/44_EUI64.out b/tests/zscanner/data/44_EUI64.out
similarity index 100%
rename from src/zscanner/tests/data/44_EUI64.out
rename to tests/zscanner/data/44_EUI64.out
diff --git a/src/zscanner/tests/data/45_NID.in b/tests/zscanner/data/45_NID.in
similarity index 100%
rename from src/zscanner/tests/data/45_NID.in
rename to tests/zscanner/data/45_NID.in
diff --git a/src/zscanner/tests/data/45_NID.out b/tests/zscanner/data/45_NID.out
similarity index 100%
rename from src/zscanner/tests/data/45_NID.out
rename to tests/zscanner/data/45_NID.out
diff --git a/src/zscanner/tests/data/46_L32.in b/tests/zscanner/data/46_L32.in
similarity index 100%
rename from src/zscanner/tests/data/46_L32.in
rename to tests/zscanner/data/46_L32.in
diff --git a/src/zscanner/tests/data/46_L32.out b/tests/zscanner/data/46_L32.out
similarity index 100%
rename from src/zscanner/tests/data/46_L32.out
rename to tests/zscanner/data/46_L32.out
diff --git a/src/zscanner/tests/data/47_L64.in b/tests/zscanner/data/47_L64.in
similarity index 100%
rename from src/zscanner/tests/data/47_L64.in
rename to tests/zscanner/data/47_L64.in
diff --git a/src/zscanner/tests/data/47_L64.out b/tests/zscanner/data/47_L64.out
similarity index 100%
rename from src/zscanner/tests/data/47_L64.out
rename to tests/zscanner/data/47_L64.out
diff --git a/src/zscanner/tests/data/48_LP.in b/tests/zscanner/data/48_LP.in
similarity index 100%
rename from src/zscanner/tests/data/48_LP.in
rename to tests/zscanner/data/48_LP.in
diff --git a/src/zscanner/tests/data/48_LP.out b/tests/zscanner/data/48_LP.out
similarity index 100%
rename from src/zscanner/tests/data/48_LP.out
rename to tests/zscanner/data/48_LP.out
diff --git a/src/zscanner/tests/data/49_CDS.in b/tests/zscanner/data/49_CDS.in
similarity index 100%
rename from src/zscanner/tests/data/49_CDS.in
rename to tests/zscanner/data/49_CDS.in
diff --git a/src/zscanner/tests/data/49_CDS.out b/tests/zscanner/data/49_CDS.out
similarity index 100%
rename from src/zscanner/tests/data/49_CDS.out
rename to tests/zscanner/data/49_CDS.out
diff --git a/src/zscanner/tests/data/50_CDNSKEY.in b/tests/zscanner/data/50_CDNSKEY.in
similarity index 100%
rename from src/zscanner/tests/data/50_CDNSKEY.in
rename to tests/zscanner/data/50_CDNSKEY.in
diff --git a/src/zscanner/tests/data/50_CDNSKEY.out b/tests/zscanner/data/50_CDNSKEY.out
similarity index 100%
rename from src/zscanner/tests/data/50_CDNSKEY.out
rename to tests/zscanner/data/50_CDNSKEY.out
diff --git a/src/zscanner/tests/data/51_URI.in b/tests/zscanner/data/51_URI.in
similarity index 100%
rename from src/zscanner/tests/data/51_URI.in
rename to tests/zscanner/data/51_URI.in
diff --git a/src/zscanner/tests/data/51_URI.out b/tests/zscanner/data/51_URI.out
similarity index 100%
rename from src/zscanner/tests/data/51_URI.out
rename to tests/zscanner/data/51_URI.out
diff --git a/src/zscanner/tests/data/52_CAA.in b/tests/zscanner/data/52_CAA.in
similarity index 100%
rename from src/zscanner/tests/data/52_CAA.in
rename to tests/zscanner/data/52_CAA.in
diff --git a/src/zscanner/tests/data/52_CAA.out b/tests/zscanner/data/52_CAA.out
similarity index 100%
rename from src/zscanner/tests/data/52_CAA.out
rename to tests/zscanner/data/52_CAA.out
diff --git a/src/zscanner/tests/data/includes/include1 b/tests/zscanner/data/includes/include1
similarity index 100%
rename from src/zscanner/tests/data/includes/include1
rename to tests/zscanner/data/includes/include1
diff --git a/src/zscanner/tests/data/includes/include2 b/tests/zscanner/data/includes/include2
similarity index 100%
rename from src/zscanner/tests/data/includes/include2
rename to tests/zscanner/data/includes/include2
diff --git a/src/zscanner/tests/data/includes/include3 b/tests/zscanner/data/includes/include3
similarity index 100%
rename from src/zscanner/tests/data/includes/include3
rename to tests/zscanner/data/includes/include3
diff --git a/src/zscanner/tests/data/includes/include4 b/tests/zscanner/data/includes/include4
similarity index 100%
rename from src/zscanner/tests/data/includes/include4
rename to tests/zscanner/data/includes/include4
diff --git a/src/zscanner/tests/data/includes/include5 b/tests/zscanner/data/includes/include5
similarity index 100%
rename from src/zscanner/tests/data/includes/include5
rename to tests/zscanner/data/includes/include5
diff --git a/src/zscanner/tests/data/includes/include6 b/tests/zscanner/data/includes/include6
similarity index 100%
rename from src/zscanner/tests/data/includes/include6
rename to tests/zscanner/data/includes/include6
diff --git a/src/zscanner/tests/processing.c b/tests/zscanner/processing.c
similarity index 64%
rename from src/zscanner/tests/processing.c
rename to tests/zscanner/processing.c
index 26bfa5cf055f6efa1775bb59ef0f920668d4032c..ab22616550b280ee31f6ff0a26e0e1f77b832b76 100644
--- a/src/zscanner/tests/processing.c
+++ b/tests/zscanner/processing.c
@@ -1,4 +1,4 @@
-/*  Copyright (C) 2011 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/*  Copyright (C) 2018 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
 
     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
@@ -15,10 +15,13 @@
  */
 
 #include <inttypes.h>
+#include <stdlib.h>
 #include <stdio.h>
+#include <time.h>
 
-#include "tests/processing.h"
-#include "scanner.h"
+#include "zscanner/scanner.h"
+#include "zscanner/functions.c"
+#include "zscanner/processing.h"
 #include "libknot/descriptor.c"
 
 const char *separator = "------\n";
@@ -112,3 +115,59 @@ void test_process_record(zs_scanner_t *s)
 	printf("\n%s", separator);
 	fflush(stdout);
 }
+
+int test_date_to_timestamp(void)
+{
+	time_t    ref_timestamp, max_timestamp;
+	uint32_t  test_timestamp;
+	uint8_t   buffer[16];
+	uint64_t  val1, val2; // For time_t type unification.
+	struct tm tm;
+
+	// Set UTC for strftime.
+	putenv("TZ=UTC");
+	tzset();
+
+	// Get maximal allowed timestamp.
+	strptime("21051231235959", "%Y%m%d%H%M%S", &tm);
+	max_timestamp = mktime(&tm);
+
+	// Testing loop over whole input interval.
+	for (ref_timestamp = 0;
+	     ref_timestamp < max_timestamp;
+	     ref_timestamp += 1) {
+		struct tm result;
+		// Get reference (correct) timestamp.
+		strftime((char*)buffer, sizeof(buffer), "%Y%m%d%H%M%S",
+			 gmtime_r(&ref_timestamp, &result));
+
+		// Get testing timestamp.
+		test_timestamp = 0U; // prevents Wunitialized
+		date_to_timestamp(buffer, &test_timestamp);
+
+		// Some continuous loging.
+		if (ref_timestamp % 10000000 == 0) {
+			val1 = ref_timestamp;
+			printf("%s = %"PRIu64"\n", buffer, val1);
+		}
+
+		// Comparing results.
+		if (ref_timestamp != test_timestamp) {
+			val1 = ref_timestamp;
+
+			if (ref_timestamp > test_timestamp) {
+				val2 = ref_timestamp - test_timestamp;
+				printf("%s = %"PRIu64", in - out = %"PRIu64"\n",
+				       buffer, val1, val2);
+			} else {
+				val2 = test_timestamp - ref_timestamp;
+				printf("%s = %"PRIu64", out - in = %"PRIu64"\n",
+				       buffer, val1, val2);
+			}
+
+			return -1;
+		}
+	}
+
+	return 0;
+}
diff --git a/src/zscanner/tests/processing.h b/tests/zscanner/processing.h
similarity index 83%
rename from src/zscanner/tests/processing.h
rename to tests/zscanner/processing.h
index 27489bf1a9d6586df4ec1c975dd5b197d62944db..f3a7d196a57cd28b4781406130ba022df6551360 100644
--- a/src/zscanner/tests/processing.h
+++ b/tests/zscanner/processing.h
@@ -1,4 +1,4 @@
-/*  Copyright (C) 2017 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/*  Copyright (C) 2018 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
 
     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
@@ -13,14 +13,6 @@
     You should have received a copy of the GNU General Public License
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-/*!
- * \file
- *
- * \brief Zone scanner test functions.
- *
- * \addtogroup zone_scanner_test
- * @{
- */
 
 #pragma once
 
@@ -34,4 +26,4 @@ void test_process_error(zs_scanner_t *scanner);
 
 void test_process_record(zs_scanner_t *scanner);
 
-/*! @} */
+int test_date_to_timestamp(void);
diff --git a/src/zscanner/tests/unittests.in b/tests/zscanner/test_zscanner.in
similarity index 86%
rename from src/zscanner/tests/unittests.in
rename to tests/zscanner/test_zscanner.in
index a3f27f806898de04829c8050961de79c393ff085..a1443e74e306bd3dd425095d9b5c061e205a58b2 100644
--- a/src/zscanner/tests/unittests.in
+++ b/tests/zscanner/test_zscanner.in
@@ -1,9 +1,9 @@
 #!/bin/sh
 
-SOURCE=@top_srcdir@/src/zscanner/tests
-BUILD=@top_builddir@/src/zscanner/tests
+SOURCE=@top_srcdir@/tests/zscanner
+BUILD=@top_builddir@/tests/zscanner
 
-. @top_srcdir@/libtap/tap/libtap.sh
+. @top_srcdir@/tests/_libtap/tap/libtap.sh
 
 cd "$BUILD"
 
@@ -25,7 +25,6 @@ for case in $(cat "$SOURCE"/TESTS); do
     fileout="$TMPDIR"/"$case".out
 
     sed -e "s|@TMPDIR@|$TMPDIR|;" < "$casein" > "$filein"
-    diag $(ls "$filein")
 
     "$ZSCANNER_TOOL" -m 2 . "$filein" > "$fileout"
 
diff --git a/src/zscanner/tests/zscanner-tool.c b/tests/zscanner/zscanner-tool.c
similarity index 96%
rename from src/zscanner/tests/zscanner-tool.c
rename to tests/zscanner/zscanner-tool.c
index e3f9837e569fa4af926359e70472b2f78ad425e8..a8865616abe7179cc584faa37142abde5a82aab2 100644
--- a/src/zscanner/tests/zscanner-tool.c
+++ b/tests/zscanner/zscanner-tool.c
@@ -1,4 +1,4 @@
-/*  Copyright (C) 2017 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+/*  Copyright (C) 2018 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
 
     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
@@ -20,9 +20,8 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-#include "tests/processing.h"
-#include "tests/tests.h"
-#include "scanner.h"
+#include "zscanner/processing.h"
+#include "zscanner/scanner.h"
 
 #define DEFAULT_MODE	1
 #define DEFAULT_CLASS	1
@@ -31,7 +30,7 @@
 static void *timestamp_worker(void *data)
 {
 	int *ret = (int *)data;
-	*ret = test__date_to_timestamp();
+	*ret = test_date_to_timestamp();
 	return NULL;
 }