};
const TestData nsec3_data[] = {
+ // ==== These are non-recursive tests.
{"n0", false, false, 4, "R53BQ7CC2UVMUBFU5OCMM6PERS9TK9EN", NULL},
{"n1", false, true, 4, "01UDEMVP1J2F7EG6JEBPS17VP3N8I58H", NULL},
{"n2", false, false, 4, "01UDEMVP1J2F7EG6JEBPS17VP3N8I58H", NULL},
{"n6", false, false, 4, "2T7B4G4VSA5SMI47K61MV5BV1A22BOJR", NULL},
{"n7", false, true, 4, "R53BQ7CC2UVMUBFU5OCMM6PERS9TK9EN", NULL},
{"n8", false, false, 4, "R53BQ7CC2UVMUBFU5OCMM6PERS9TK9EN", NULL},
+
+ // ==== These are recursive tests.
{"n0", true, true, 3, "0P9MHAVEQVM6T7VBL5LOP2U3T2RP3TOM",
"R53BQ7CC2UVMUBFU5OCMM6PERS9TK9EN"},
{"n1", true, true, 4, "01UDEMVP1J2F7EG6JEBPS17VP3N8I58H", NULL},
const size_t data_count(sizeof(nsec3_data) / sizeof(*nsec3_data));
TEST_F(InMemoryZoneFinderNSEC3Test, findNSEC3Walk) {
+ // This test basically uses nsec3_data[] declared above along with
+ // the fake hash setup to walk the NSEC3 tree. The names and fake
+ // hash calculation is specially setup so that the tree search
+ // terminates at specific locations in the tree. We findNSEC3() on
+ // each of the nsec3_data[], which is setup such that the hash
+ // results in the search terminating on either side of each node of
+ // the NSEC3 tree. This way, we check what result is returned in
+ // every search termination case in the NSEC3 tree.
+
const Name origin("example.org");
for (size_t i = 0; i < data_count; ++i) {
const Name name = Name(nsec3_data[i].name).concatenate(origin);