From f8d91e73b78b727506c7b9b40e68bb4bb40b1d97 Mon Sep 17 00:00:00 2001
From: Jan Kadlec <jan.kadlec@nic.cz>
Date: Thu, 17 Jan 2013 15:50:25 +0100
Subject: [PATCH] Added most of testing data to RRSet tests.

---
 src/libknot/rrset.c                     |   5 +-
 src/libknot/rrset.h                     |  13 +-
 src/tests/libknot/libknot/rrset_tests.c | 276 +++++++++++++++++-------
 3 files changed, 211 insertions(+), 83 deletions(-)

diff --git a/src/libknot/rrset.c b/src/libknot/rrset.c
index 0b8782e1e..ed3effff3 100644
--- a/src/libknot/rrset.c
+++ b/src/libknot/rrset.c
@@ -2007,7 +2007,10 @@ int rrset_deserialize(uint8_t *stream, size_t stream_size,
 	memset((*rrset)->rdata, 0, rdata_indices[rdata_count - 1]);
 	/* Read RRs. */
 	for (uint16_t i = 0; i < (*rrset)->rdata_count; i++) {
-		/* There's always size of rdata in the beginning. Needed because of remainders. */
+		/*
+		 * There's always size of rdata in the beginning.
+		 * Needed because of remainders.
+		 */
 		uint32_t rdata_size = 0;
 		memcpy(&rdata_size, stream + offset, sizeof(uint32_t));
 		size_t read = 0;
diff --git a/src/libknot/rrset.h b/src/libknot/rrset.h
index a1b16fb2c..d223205d3 100644
--- a/src/libknot/rrset.h
+++ b/src/libknot/rrset.h
@@ -336,7 +336,7 @@ void knot_rrset_deep_free(knot_rrset_t **rrset, int free_owner,
  * \retval KNOT_EOK
  * \retval KNOT_EINVAL if the RRSets could not be merged, because their
  *         Owner, Type, Class or TTL does not match.
- */
+ *	/
 int knot_rrset_merge(void **r1, void **r2);
 
 
@@ -419,6 +419,17 @@ uint8_t *knot_rrset_rdata_prealloc(const knot_rrset_t *rrset,
 
 void knot_rrset_dump(const knot_rrset_t *rrset);
 
+//TODO test
+int rrset_serialize(const knot_rrset_t *rrset, uint8_t *stream, size_t *size);
+
+//TODO test
+int rrset_serialize_alloc(const knot_rrset_t *rrset, uint8_t **stream,
+                          size_t *size);
+
+//TODO test
+int rrset_deserialize(uint8_t *stream, size_t stream_size,
+                      knot_rrset_t **rrset);
+
 #endif /* _KNOT_RRSET_H_ */
 
 /*! @} */
diff --git a/src/tests/libknot/libknot/rrset_tests.c b/src/tests/libknot/libknot/rrset_tests.c
index e56934a43..3cfd00483 100644
--- a/src/tests/libknot/libknot/rrset_tests.c
+++ b/src/tests/libknot/libknot/rrset_tests.c
@@ -21,6 +21,7 @@
 #include "common/descriptor_new.h"
 #include "common/errcode.h"
 #include "libknot/rrset.h"
+#include "libknot/util/wire.h"
 
 static int knot_rrset_tests_count(int argc, char *argv[]);
 static int knot_rrset_tests_run(int argc, char *argv[]);
@@ -40,23 +41,51 @@ unit_api rrset_tests_api = {
 enum rrset_test_const {
 	TEST_RRSET_COUNT = 6,
 	TEST_RDATA_COUNT = 6,
-	TEST_DNAME_COUNT = 3,
-	TEST_RDATA_A_BASE = 0,
-	TEST_RDATA_A_LESS = 1,
-	TEST_RDATA_NS_1 = 2,
-	TEST_RDATA_NS_2 = 3,
-	TEST_RDATA_NS_3 = 4,
-	TEST_RDATA_MX_1 = 5,
-	TEST_RDATA_MX_2 = 6,
-	TEST_RDATA_MX_3 = 7,
-	CHECK_LAST_INDEX = 100,
-	OMMIT_LAST_INDEX = 101
+	TEST_DNAME_COUNT = 8,
+	TEST_RDATA_A_LESS = 0,
+	TEST_RDATA_A_GT = 1,
+	TEST_RDATA_NS_LESS = 2,
+	TEST_RDATA_NS_GT = 3,
+	TEST_RDATA_MX_DNAME_LESS = 4,
+	TEST_RDATA_MX_DNAME_GT = 5,
+	TEST_RDATA_MX_BIN_LESS = 6,
+	TEST_RDATA_MX_BIN_GT = 7,
+	TEST_RDATA_MINFO1 = 8,
+	TEST_RDATA_MINFO2 = 9,
+	TEST_RRSET_A_LESS = 0,
+	TEST_RRSET_A_GT = 1,
+	TEST_RRSET_MERGE_UNIQUE1 = 0,
+	TEST_RRSET_MERGE_UNIQUE2 = 1,
+	TEST_RRSET_MERGE_RESULT1 = 10,
+	TEST_RRSET_NS_LESS = 2,
+	TEST_RRSET_NS_GT = 3,
+	TEST_RRSET_MX_BIN_LESS = 4,
+	TEST_RRSET_MX_BIN_GT = 5,
+	TEST_RRSET_MX_DNAME_LESS = 6,
+	TEST_RRSET_MX_DNAME_GT = 7,
+	TEST_RRSET_MINFO = 8,
+	TEST_RRSET_MINFO_MULTIPLE = 9,
+	TEST_RRSET_OWNER_LESS = 11,
+	TEST_RRSET_OWNER_GT = 12,
+	CHECK_LAST_INDEX = 0,
+	OMMIT_LAST_INDEX = 1,
+	TEST_DNAME_GENERIC = 0,
+	TEST_DNAME_LESS = 1,
+	TEST_DNAME_GREATER = 2
 };
 
 static uint8_t *test_dname_strings[TEST_DNAME_COUNT] = {
-	(uint8_t *)"test.dname.com.",
-	(uint8_t *)"test2.dname.com.",
-	(uint8_t *)"test3.dname.com."
+	(uint8_t *)"a.dname.com.",
+	(uint8_t *)"b.dname.com.",
+	(uint8_t *)"c.dname.com.",
+	(uint8_t *)"d.dname.com.",
+	(uint8_t *)"e.dname.com.",
+	(uint8_t *)"f.dname.com.",
+	(uint8_t *)"ns1.nic.cz.",
+	(uint8_t *)"ns2.nic.cz.",
+	(uint8_t *)"ns3.nic.cz.",
+	(uint8_t *)"ns4.nic.cz.",
+	(uint8_t *)"ns5.nic.cz."
 };
 
 static knot_dname_t *test_dnames[TEST_DNAME_COUNT];
@@ -71,37 +100,68 @@ struct test_rdata {
 typedef struct test_rdata test_rdata_t;
 
 struct test_rrset {
+	int owner_id;
 	knot_rrset_t *rrset;
-	uint8_t header_wire[1024];
+	uint8_t *header_wire;
 	size_t header_wire_size;
-	uint8_t rdata[65535];
-	size_t rdata_size;
-	test_rdata_t *test_rdata;
+	uint8_t *rdata_wire;
+	size_t rdata_wire_size;
+	size_t rr_count;
+	test_rdata_t *test_rdata[16];
 };
 
 typedef struct test_rrset test_rrset_t;
 
-test_rrset_t test_rrset_array[TEST_RRSET_COUNT];
-
 /* Artificial RDATA definitions: */
 test_rdata_t test_rdata_array[TEST_RDATA_COUNT] = {
 /* A type: */
-	{(uint8_t *)"\x1\x1\x1\1", (uint8_t *)"\x1\x1\x1\1", 4, 4},
+	[TEST_RDATA_A_LESS] = {(uint8_t *)"\x1\x1\x1\0", (uint8_t *)"\x1\x1\x1\1", 4, 4},
 /* A < previous */
-	{(uint8_t *)"\x1\x1\x1\0", (uint8_t *)"\x1\x1\x1\0", 4, 4},
-/* A = previous */
-	{(uint8_t *)"\x1\x1\x1\0", (uint8_t *)"\x1\x1\x1\0", 4, 4},
+	[TEST_RDATA_A_GT] = {(uint8_t *)"\x1\x1\x1\1", (uint8_t *)"\x1\x1\x1\0", 4, 4},
 /* NS Domain names: (Will be filled dynamically) */
-	{(uint8_t *)&test_dnames[0], "", sizeof(knot_dname_t *), 0},
-	{(uint8_t *)&test_dnames[1], "", sizeof(knot_dname_t *), 0},
-	{(uint8_t *)&test_dnames[2], "", sizeof(knot_dname_t *), 0},
+	[TEST_RDATA_NS_LESS] = {NULL, NULL, sizeof(knot_dname_t *), 0},
+	[TEST_RDATA_NS_GT] = {NULL, NULL, sizeof(knot_dname_t *), 0},
 /* MX type: (raw data + DNAME) */
-	{"\x0\x1", "", sizeof(knot_dname_t *) + 2, 0},
-	{"\x0\x2", "", sizeof(knot_dname_t *) + 2, 0},
-	{"\x2\x1", "", sizeof(knot_dname_t *) + 2, 0}
+	[TEST_RDATA_MX_DNAME_LESS] = {"\x0\x1", NULL, sizeof(knot_dname_t *) + 2, 0},
+	[TEST_RDATA_MX_DNAME_GT] = {"\x0\x1", NULL, sizeof(knot_dname_t *) + 2, 0},
+	[TEST_RDATA_MX_BIN_LESS] = {"\x0\x1", NULL, sizeof(knot_dname_t *) + 2, 0},
+	[TEST_RDATA_MX_BIN_GT] = {"\x0\x2", NULL, sizeof(knot_dname_t *) + 2, 0},
+	[TEST_RDATA_MINFO1] = {NULL, NULL, sizeof(knot_dname_t *) * 2, 0},
+	[TEST_RDATA_MINFO2] = {NULL, NULL, sizeof(knot_dname_t *) * 2, 0}
+};
+
+
+test_rrset_t test_rrset_array[TEST_RRSET_COUNT] = {
+	 [TEST_RRSET_A_LESS] = {TEST_DNAME_GENERIC, {NULL, KNOT_RRTYPE_A, KNOT_CLASS_IN, 3600, NULL, NULL, 0, NULL},
+          NULL, 0, NULL, 0, 1, {test_rdata_array[TEST_RDATA_A_LESS]}}, // A < 
+	 [TEST_RRSET_A_GT] = {TEST_DNAME_GENERIC, {NULL, KNOT_RRTYPE_A, KNOT_CLASS_IN, 3600, NULL, NULL, 0, NULL},
+          NULL, 0, NULL, 0, 1, {test_rdata_array[TEST_RDATA_A_GT]}}, // A > 
+	 [TEST_RRSET_NS_LESS] = {TEST_DNAME_GENERIC, {NULL, KNOT_RRTYPE_NS, KNOT_CLASS_IN, 3600, NULL, NULL, 0, NULL}
+          NULL, 0, NULL, 0, 1, {test_rdata_array[TEST_RDATA_NS_LESS]}}, // <
+	 [TEST_RRSET_NS_GT] = {TEST_DNAME_GENERIC, {NULL, KNOT_RRTYPE_NS, KNOT_CLASS_IN, 3600, NULL, NULL, 0, NULL}
+          NULL, 0, NULL, 0, 1, {test_rdata_array[TEST_RDATA_NS_GT]}}, // <
+	 [TEST_RRSET_MX_DNAME_LESS] = {TEST_DNAME_GENERIC, {NULL, KNOT_RRTYPE_MX, KNOT_CLASS_IN, 3600, NULL, NULL, 0, NULL}
+          NULL, 0, NULL, 0, 1, {test_rdata_array[TEST_RDATA_MX_DNAME_LESS]}}, // <
+	 [TEST_RRSET_MX_DNAME_GT] = {TEST_DNAME_GENERIC, {NULL, KNOT_RRTYPE_MX, KNOT_CLASS_IN, 3600, NULL, NULL, 0, NULL}
+          NULL, 0, NULL, 0, 1, {test_rdata_array[TEST_RDATA_MX_DNAME_GT]}}, // <
+	 [TEST_RRSET_MX_BIN_LESS] = {TEST_DNAME_GENERIC, {NULL, KNOT_RRTYPE_MX, KNOT_CLASS_IN, 3600, NULL, NULL, 0, NULL}
+          NULL, 0, NULL, 0, 1, {test_rdata_array[TEST_RDATA_MX_BIN_LESS]}}, // <
+	 [TEST_RRSET_MX_BIN_GT] = {TEST_DNAME_GENERIC, {NULL, KNOT_RRTYPE_MX, KNOT_CLASS_IN, 3600, NULL, NULL, 0, NULL}
+          NULL, 0, NULL, 0, 1, {test_rdata_array[TEST_RDATA_MX_BIN_GT]}}, // <
+	 [TEST_RRSET_MINFO] = {TEST_DNAME_GENERIC, {NULL, KNOT_RRTYPE_MINFO, KNOT_CLASS_IN, 3600, NULL, NULL, 0, NULL}
+          NULL, 0, NULL, 0, 1, {test_rdata_array[TEST_RDATA_MINFO1]}}, // <
+	 [TEST_RRSET_MINFO_MULTIPLE] = {TEST_DNAME_GENERIC, {NULL, KNOT_RRTYPE_MINFO, KNOT_CLASS_IN, 3600, NULL, NULL, 0, NULL}
+          NULL, 0, NULL, 0, 2, {test_rdata_array[TEST_RDATA_MINFO1], test_rdata_array[TEST_RDATA_MINFO2]}}, // <
+	 [TEST_RRSET_MERGE_RESULT1] = {TEST_DNAME_GENERIC, {NULL, KNOT_RRTYPE_A, KNOT_CLASS_IN, 3600, NULL, NULL, 0, NULL},
+          NULL, 0, NULL, 0, 2, {test_rdata_array[TEST_RDATA_A_LESS], test_rdata_array[TEST_RDATA_A_GT]}}, // A < 
+	 [TEST_RRSET_OWNER_LESS] = {TEST_DNAME_LESS, {NULL, KNOT_RRTYPE_A, KNOT_CLASS_IN, 3600, NULL, NULL, 0, NULL},
+          NULL, 0, NULL, 0, 1, {test_rdata_array[TEST_RDATA_A_LESS]}}, // A < 
+	 [TEST_RRSET_OWNER_GT] = {TEST_DNAME_GREATER, {NULL, KNOT_RRTYPE_A, KNOT_CLASS_IN, 3600, NULL, NULL, 0, NULL},
+          NULL, 0, NULL, 0, 1, {test_rdata_array[TEST_RDATA_A_LESS]}}, // A < 
+	}
 };
 
-static int create_test_dnames()
+static void create_test_dnames()
 {
 	for (int i = 0; i < TEST_DNAME_COUNT; i++) {
 		test_dnames[i] =
@@ -114,20 +174,78 @@ static int create_test_dnames()
 		}
 	}
 }
-static int create_test_rdata()
+
+static void create_test_rdata()
 {
-	/* Only MX types need init. */
+	/* NS, MX and MINFO types need init. */
 	memcpy(test_rdata_array[TEST_RDATA_MX_1].rdata + 2, &test_dnames[0],
 	       sizeof(knot_dname_t *));
 	memcpy(test_rdata_array[TEST_RDATA_MX_2].rdata + 2, &test_dnames[1],
 	       sizeof(knot_dname_t *));
 	memcpy(test_rdata_array[TEST_RDATA_MX_3].rdata + 2, &test_dnames[2],
 	       sizeof(knot_dname_t *));
-	return 0;
 }
 
-static int create_test_rrsets()
+static void create_test_rrsets()
 {
+	for (int i = 0; i < TEST_RRSET_COUNT; i++) {
+		test_rrset_t test_rrset = test_rrset_array[i];
+		/* Assign owner. */
+		test_rrset.rrset->owner = test_dnames[test_rrset.owner_id];
+		/* Create header wire. */
+		test_rrset.header_wire =
+			xmalloc(test_rrset.rrset->owner->size + 8 + 2);
+		/* Copy owner wire to header wire. */
+		memcpy(test_rrset.header_wire, test_rrset.rrset->owner->name,
+		       test_rrset.rrset->owner->size);
+		/* Copy type to wire. */
+		size_t offset = test_rrset.rrset->owner->size;
+		knot_wire_write_u16(test_rrset.header_wire + offset,
+		                    test_rrset.rrset->type);
+		offset += sizeof(uint16_t);
+		/* Copy class to wire. */
+		knot_wire_write_u16(test_rrset.header_wire + offset,
+		                    test_rrset.rrset->rclass);
+		offset += sizeof(uint16_t);
+		/* Copy TTL to wire. */
+		knot_wire_write_u32(test_rrset.header_wire + offset,
+		                    test_rrset.rrset->TTL);
+		offset += sizeof(uint32_t);
+		uint16_t rdlength = 0;
+		for (int j = 0; j < test_rrset.rr_count; j++) {
+			rdlength += test_rrset.test_rdata[j]->wire_size;
+		}
+		/* Copy RDLENGTH to wire. */
+		knot_wire_write_u16(test_rrset.header_wire + offset,
+		                    rdlength);
+		/* Assign RDATA (including indices). */
+		offset = 0;
+		test_rrset.rrset->rdata_indices =
+			xmalloc(sizeof(uint32_t) * test_rrset.rr_count);
+		for (int j = 0; j < test_rrset.rr_count; j++) {
+			if (j > 0) {
+				test_rrset.rrset->rdata_indices[j - 1] =
+					test_rrset.test_rdata[j]->size;
+			}
+			
+			memcpy(test_rrset.rrset->rdata + offset,
+			       test_rrset.test_rdata[j]->rdata,
+			       test_rrset.test_rdata[j]->size);
+			offset += test_rrset.test_rdata[j]->size;
+		}
+		/* Store sum of indices to the last index. */
+		test_rrset.rrset->rdata_indices[test_rrset.rr_count - 1] =
+			offset;
+		/* Store RDATA wire. */
+		offset = 0;
+		for (int j = 0; j < test_rrset.rr_count; j++) {
+			memcpy(test_rrset.rdata_wire + offset,
+			       test_rrset.test_rdata[i]->wire,
+			       test_rrset.test_rdata[i]->wire_size);
+			offset += test_rrset.test_rdata[i]->wire_size;
+		}
+		test_rrset.rdata_wire_size = offset;
+	}
 }
 
 static int check_rrset_values(const knot_rrset_t *rrset,
@@ -187,14 +305,13 @@ static int test_rrset_new()
 	return (check_errors == 0);
 }
 
-static int test_rrset_create_rdata(knot_rrset_t **in_rrset)
+static int test_rrset_create_rdata()
 {
 	/* Two cases need to be tested - empty RRSet and non-empty RRSet. */
 	
 	
 	knot_rrset_t *rrset = knot_rrset_new(NULL, 0, 0, 0);
 	assert(rrset);
-	*in_rrset = rrset;
 	
 	/*
 	* Again, actual data are not crutial, we need to see if indices 
@@ -477,7 +594,7 @@ static int test_rrset_merge()
 	
 	//TODO check that merge operation does not cahgne second rr
 	//TODO check that two RRSet that are not mergable will not merge
-	if (knot_rrset_compare(test_rrset_array[2], merge_from,
+	if (knot_rrset_compare(test_rrset_array[2].rrset, merge_from,
 	                       KNOT_RRSET_COMPARE_WHOLE)) {
 		diag("Merge corrupted second RRSet.\n");
 		return 0;
@@ -493,7 +610,7 @@ static int test_rrset_merge()
 	
 	/* Check that the first RRSet now contains RDATA from the second. */
 	/* Indices first. */
-	ret = memcmp(merge_to->rdata_indices, test_rrset_array[TODOmergnuty],
+	ret = memcmp(merge_to->rdata_indices, test_rrset_array[TODOmergnuty].rrset,
 	             merge_to->rdata_count);
 	if (ret) {
 		diag("Merge operation corrupted the first RRSet's indices.\n");
@@ -504,7 +621,7 @@ static int test_rrset_merge()
 	
 	/* Check actual RDATA. */
 	ret = knot_rrset_compare_rdata(merge_to->rdata,
-	                               test_rrset_array[TODOmergnuty]);
+	                               test_rrset_array[TODOmergnuty].rrset);
 	if (ret) {
 		diag("Merged RDATA are wrong.\n");
 		knot_rrset_deep_free(&merge_to, 1, 1);
@@ -531,13 +648,13 @@ static int test_rrset_merge_no_dupl()
 		return 0;
 	}
 	
-	if (knot_rrset_compare(test_rrset_array[0], merge_to,
+	if (knot_rrset_compare(test_rrset_array[0].rrset, merge_to,
 	                       KNOT_RRSET_COMPARE_WHOLE)) {
 		diag("Merge corrupted first RRSet.\n");
 		return 0;
 	}
 	
-	if (knot_rrset_compare(test_rrset_array[0], merge_from,
+	if (knot_rrset_compare(test_rrset_array[0].rrset, merge_from,
 	                       KNOT_RRSET_COMPARE_WHOLE)) {
 		diag("Merge corrupted second RRSet.\n");
 		return 0;
@@ -558,13 +675,13 @@ static int test_rrset_merge_no_dupl()
 		return 0;
 	}
 	
-	if (knot_rrset_compare(test_rrset_array[2], merge_from,
+	if (knot_rrset_compare(test_rrset_array[2].rrset, merge_from,
 	                       KNOT_RRSET_COMPARE_WHOLE)) {
 		diag("Merge corrupted second RRSet.\n");
 		return 0;
 	}
 	
-	if (knot_rrset_compare(test_rrset_array[2], merge_to,
+	if (knot_rrset_compare(test_rrset_array[2].rrset, merge_to,
 	                       KNOT_RRSET_COMPARE_WHOLE)) {
 		diag("Merge did not create correct RDATA.\n");
 		return 0;
@@ -585,13 +702,13 @@ static int test_rrset_merge_no_dupl()
 		return 0;
 	}
 	
-	if (knot_rrset_compare(test_rrset_array[2], merge_from,
+	if (knot_rrset_compare(test_rrset_array[2].rrset, merge_from,
 	                       KNOT_RRSET_COMPARE_WHOLE)) {
 		diag("Merge corrupted second RRSet.\n");
 		return 0;
 	}
 	
-	if (knot_rrset_compare(test_rrset_array[2], merge_to,
+	if (knot_rrset_compare(test_rrset_array[2].rrset, merge_to,
 	                       KNOT_RRSET_COMPARE_WHOLE)) {
 		diag("Merge did not create correct RDATA.\n");
 		return 0;
@@ -604,8 +721,8 @@ static int test_rrset_merge_no_dupl()
 static int test_rrset_compare_rdata()
 {
 	/* Comparing different RDATA types should result in EINVAL. */
-	knot_rrset_t *rrset1 = test_rrset_array[4234];
-	knot_rrset_t *rrset2 = test_rrset_array[4223];
+	knot_rrset_t *rrset1 = test_rrset_array[4234].rrset;
+	knot_rrset_t *rrset2 = test_rrset_array[4223].rrset;
 	
 	if (knot_rrset_compare_rdata(rrset1, rrset2) != KNOT_EINVAL) {
 		diag("rrset_compare_rdata() did comparison when it "
@@ -615,8 +732,8 @@ static int test_rrset_compare_rdata()
 	}
 	
 	/* Equal - raw data only. */
-	rrset1 = test_rrset_array[2];
-	rrset2 = knot_rrset_deep_copy(test_rrset_array[2]);
+	rrset1 = test_rrset_array[2].rrset;
+	rrset2 = knot_rrset_deep_copy(test_rrset_array[2].rrset);
 	
 	if (knot_rrset_compare_rdata(rrset1, rrset2) != 0) {
 		diag("rrset_compare_rdata() returned wrong"
@@ -629,8 +746,8 @@ static int test_rrset_compare_rdata()
 	knot_rrset_deep_free(rrset2, 1, 1);
 	
 	/* Equal - DNAME only. */
-	rrset1 = test_rrset_array[3];
-	rrset2 = knot_rrset_deep_copy(test_rrset_array[3]);
+	rrset1 = test_rrset_array[3].rrset;
+	rrset2 = knot_rrset_deep_copy(test_rrset_array[3].rrset);
 	
 	if (knot_rrset_compare_rdata(rrset1, rrset2) != 0) {
 		diag("rrset_compare_rdata() returned wrong"
@@ -643,8 +760,8 @@ static int test_rrset_compare_rdata()
 	knot_rrset_deep_free(rrset2, 1, 1);
 	
 	/* Equal - combination. */
-	rrset1 = test_rrset_array[4];
-	rrset2 = knot_rrset_deep_copy(test_rrset_array[4]);
+	rrset1 = test_rrset_array[4].rrset;
+	rrset2 = knot_rrset_deep_copy(test_rrset_array[4].rrset);
 	
 	if (knot_rrset_compare_rdata(rrset1, rrset2) != 0) {
 		diag("rrset_compare_rdata() returned wrong"
@@ -657,8 +774,8 @@ static int test_rrset_compare_rdata()
 	knot_rrset_deep_free(rrset2, 1, 1);
 	
 	/* Smaller - raw data only. */
-	rrset1 = test_rrset_array[42342];
-	rrset2 = test_rrset_array[23442];
+	rrset1 = test_rrset_array[42342].rrset;
+	rrset2 = test_rrset_array[23442].rrset;
 	
 	if (knot_rrset_compare_rdata(rrset1, rrset2) >= 0) {
 		diag("rrset_compare_rdata() returned wrong"
@@ -671,8 +788,8 @@ static int test_rrset_compare_rdata()
 	knot_rrset_deep_free(rrset2, 1, 1);
 	
 	/* Smaller - DNAME only. */
-	rrset1 = test_rrset_array[42342];
-	rrset2 = test_rrset_array[23442];
+	rrset1 = test_rrset_array[42342].rrset;
+	rrset2 = test_rrset_array[23442].rrset;
 	
 	if (knot_rrset_compare_rdata(rrset1, rrset2) >= 0) {
 		diag("rrset_compare_rdata() returned wrong"
@@ -685,8 +802,8 @@ static int test_rrset_compare_rdata()
 	knot_rrset_deep_free(rrset2, 1, 1);
 	
 	/* Smaller - combination. */
-	rrset1 = test_rrset_array[42342];
-	rrset2 = test_rrset_array[23442];
+	rrset1 = test_rrset_array[42342].rrset;
+	rrset2 = test_rrset_array[23442].rrset;
 	
 	if (knot_rrset_compare_rdata(rrset1, rrset2) >= 0) {
 		diag("rrset_compare_rdata() returned wrong"
@@ -699,8 +816,8 @@ static int test_rrset_compare_rdata()
 	knot_rrset_deep_free(rrset2, 1, 1);
 	
 	/* Greater - raw data only. */
-	rrset1 = test_rrset_array[42342];
-	rrset2 = test_rrset_array[23442];
+	rrset1 = test_rrset_array[42342].rrset;
+	rrset2 = test_rrset_array[23442].rrset;
 	
 	if (knot_rrset_compare_rdata(rrset1, rrset2) <= 0) {
 		diag("rrset_compare_rdata() returned wrong"
@@ -713,8 +830,8 @@ static int test_rrset_compare_rdata()
 	knot_rrset_deep_free(rrset2, 1, 1);
 	
 	/* Greater - DNAME only. */
-	rrset1 = test_rrset_array[42342];
-	rrset2 = test_rrset_array[23442];
+	rrset1 = test_rrset_array[42342].rrset;
+	rrset2 = test_rrset_array[23442].rrset;
 	
 	if (knot_rrset_compare_rdata(rrset1, rrset2) <= 0) {
 		diag("rrset_compare_rdata() returned wrong"
@@ -727,8 +844,8 @@ static int test_rrset_compare_rdata()
 	knot_rrset_deep_free(rrset2, 1, 1);
 	
 	/* Greater - combination. */
-	rrset1 = test_rrset_array[42342];
-	rrset2 = test_rrset_array[23442];
+	rrset1 = test_rrset_array[42342].rrset;
+	rrset2 = test_rrset_array[23442].rrset;
 	
 	if (knot_rrset_compare_rdata(rrset1, rrset2) <= 0) {
 		diag("rrset_compare_rdata() returned wrong"
@@ -751,8 +868,8 @@ static int test_rrset_compare()
 	 */
 	
 	/* Equal. */
-	knot_rrset_t *rrset1 = test_rrset_array[0];
-	knot_rrset_t *rrset2 = knot_rrset_deep_copy(test_rrset_array[0]);
+	knot_rrset_t *rrset1 = test_rrset_array[0].rrset;
+	knot_rrset_t *rrset2 = knot_rrset_deep_copy(test_rrset_array[0].rrset);
 	
 	if (knot_rrset_compare(rrset1, rrset2,
 	                       KNOT_RRSET_COMPARE_HEADER) != 0) {
@@ -764,8 +881,8 @@ static int test_rrset_compare()
 	knot_rrset_deep_free(&rrset2, 1, 1);
 	
 	/* Less. */
-	rrset1 = test_rrset_array[1];
-	rrset2 = test_rrset_array[0];
+	rrset1 = test_rrset_array[1].rrset;
+	rrset2 = test_rrset_array[0].rrset;
 	
 	if (knot_rrset_compare(rrset1, rrset2,
 	                       KNOT_RRSET_COMPARE_HEADER) >= 0) {
@@ -775,8 +892,8 @@ static int test_rrset_compare()
 	}
 	
 	/* Greater. */
-	rrset1 = test_rrset_array[0];
-	rrset2 = test_rrset_array[1];
+	rrset1 = test_rrset_array[0].rrset;
+	rrset2 = test_rrset_array[1].rrset;
 	
 	if (knot_rrset_compare(rrset1, rrset2,
 	                       KNOT_RRSET_COMPARE_HEADER) <= 0) {
@@ -789,7 +906,7 @@ static int test_rrset_compare()
 static int test_rrset_rdata_get_next_dname()
 {
 	/* There are few suitable RR types for this test - we'll use MINFO. */
-	knot_rrset_t *rrset = test_rrset_array[MINFO_INDEX];
+	knot_rrset_t *rrset = test_rrset_array[TEST_RRSET_MINFO].rrset;
 	knot_dname_t *dname1 = NULL;
 	knot_dname_t *dname2 = NULL;
 	
@@ -827,7 +944,7 @@ static int test_rrset_rdata_get_next_dname()
 static int test_rrset_next_dname()
 {
 	/* Same test as in above, but we'll use multiple RRs within one SET. */
-	knot_rrset_t *rrset = test_rrset_array[MINFO_MULTIPLE_INDEX];
+	knot_rrset_t *rrset = test_rrset_array[TEST_RRSET_MINFO_MULTIPLE].rrset;
 	knot_dname_t *extracted_dnames[4];
 	extracted_dnames[0] = test_dnames[0];
 	extracted_dnames[1] = test_dnames[1];
@@ -844,7 +961,7 @@ static int test_rrset_next_dname()
 	}
 	
 	/* Try writes into DNAMEs you've gotten. */
-	rrset = knot_rrset_deep_copy(test_rrset_array[MINFO_MULTIPLE_INDEX]);
+	rrset = knot_rrset_deep_copy(test_rrset_array[MINFO_MULTIPLE_INDEX].rrset);
 	dname = NULL;
 	i = 4;
 	while ((dname = knot_rrset_get_next_dname_pointer(rrset, dname))) {
@@ -887,13 +1004,10 @@ static int knot_rrset_tests_run(int argc, char *argv[])
 	int res = 0,
 	    res_final = 1;
 
-	int ret = create_test_dnames();
-	assert(ret == 0);
-	ret = create_test_rdata();
-	assert(ret == 0);
+	create_test_dnames();
+	create_test_rdata();
+	create_test_rrsets();
 	
-	create_test_rrsets
-
 	res = test_rrset_create();
 	ok(res, "rrset: create");
 	res_final *= res;
-- 
GitLab