in src/apps/testapps/testKRing.c [30:73]
static void kRing_equals_kRingInternal_assertions(H3Index h3) {
for (int k = 0; k < 3; k++) {
int kSz = H3_EXPORT(maxKringSize)(k);
H3Index *neighbors = calloc(kSz, sizeof(H3Index));
int *distances = calloc(kSz, sizeof(int));
H3_EXPORT(kRingDistances)(h3, k, neighbors, distances);
H3Index *internalNeighbors = calloc(kSz, sizeof(H3Index));
int *internalDistances = calloc(kSz, sizeof(int));
_kRingInternal(h3, k, internalNeighbors, internalDistances, kSz, 0);
int found = 0;
int internalFound = 0;
for (int iNeighbor = 0; iNeighbor < kSz; iNeighbor++) {
if (neighbors[iNeighbor] != 0) {
found++;
for (int iInternal = 0; iInternal < kSz; iInternal++) {
if (internalNeighbors[iInternal] == neighbors[iNeighbor]) {
internalFound++;
t_assert(distances[iNeighbor] ==
internalDistances[iInternal],
"External and internal agree on "
"distance");
break;
}
}
t_assert(found == internalFound,
"External and internal implementations "
"produce same output");
}
}
free(internalDistances);
free(internalNeighbors);
free(distances);
free(neighbors);
}
}