void h3ToLocalIj_neighbors_assertions()

in src/apps/testapps/testH3ToLocalIjExhaustive.c [93:123]


void h3ToLocalIj_neighbors_assertions(H3Index h3) {
    CoordIJ origin = {0};
    t_assert(H3_EXPORT(experimentalH3ToLocalIj)(h3, h3, &origin) == 0,
             "got ij for origin");
    CoordIJK originIjk;
    ijToIjk(&origin, &originIjk);

    for (Direction d = K_AXES_DIGIT; d < INVALID_DIGIT; d++) {
        if (d == K_AXES_DIGIT && H3_EXPORT(h3IsPentagon)(h3)) {
            continue;
        }

        int rotations = 0;
        H3Index offset = h3NeighborRotations(h3, d, &rotations);

        CoordIJ ij = {0};
        t_assert(H3_EXPORT(experimentalH3ToLocalIj)(h3, offset, &ij) == 0,
                 "got ij for destination");
        CoordIJK ijk;
        ijToIjk(&ij, &ijk);
        CoordIJK invertedIjk = {0};
        _neighbor(&invertedIjk, d);
        for (int i = 0; i < 3; i++) {
            _ijkRotate60ccw(&invertedIjk);
        }
        _ijkAdd(&invertedIjk, &ijk, &ijk);
        _ijkNormalize(&ijk);

        t_assert(_ijkMatches(&ijk, &originIjk), "back to origin");
    }
}