def test_nucleus(self):
     for rdggs in [WGS84_123, WGS84_123_RADIANS]:
         # Nuclei of children should be in correct position
         # relative to parent cell in rHEALPix projection.
         a = Cell(rdggs, (S, 7, 4, 1, 2, 1))  # Arbitrary cell.
         w = a.width()
         (x, y) = a.ul_vertex()
         error = 1e-10
         for (row, col) in product(list(range(3)), repeat=2):
             s = str(row * 3 + col)
             # Child cell in (row, column) position relative to a:
             b = Cell(rdggs, list(a.suid) + [3 * row + col])
             get = b.nucleus()
             expect = (x + w / 6 + (w / 3) * col, y - w / 6 - (w / 3) * row)
             self.assertTrue(rel_err(get, expect) < error)
    def test_ul_vertex(self):
        for rdggs in [WGS84_123, WGS84_123_RADIANS]:
            # Should work for resolution 0 cells.
            for X in rdggs.grid(0):
                get = X.ul_vertex()
                expect = rdggs.ul_vertex[X.suid[0]]
                self.assertEqual(get, expect)

            for X in rdggs.grid(0):
                get = X.ul_vertex(plane=False)
                p = rdggs.ul_vertex[X.suid[0]]
                expect = rdggs.rhealpix(*p, inverse=True)
                self.assertEqual(get, expect)

            # Should work on children cells.
            a = Cell(rdggs, (S, 2, 3))
            l = a.resolution
            x, y = a.ul_vertex()
            w = rdggs.cell_width(l + 1)
            error = 1e-10  # Error tolerance.
            for (i, j) in product(list(range(3)), repeat=2):
                b = Cell(rdggs, list(a.suid) + [i + 3 * j])
                xx, yy = b.ul_vertex()
                xp, yp = (x + i * w, y - j * w)
                self.assertTrue(rel_err([xx, yy], [xp, yp]) < error)

            a = Cell(rdggs, (S, 2, 3))
            l = a.resolution
            x, y = a.ul_vertex()
            w = rdggs.cell_width(l + 1)
            error = rdggs.ellipsoid.R_A * 1e-15  # Error tolerance.
            for (i, j) in product(list(range(3)), repeat=2):
                b = Cell(rdggs, list(a.suid) + [i + 3 * j])
                xx, yy = b.ul_vertex(plane=False)
                xp, yp = rdggs.rhealpix(x + i * w, y - j * w, inverse=True)
                self.assertTrue(rel_err([xx, yy], [xp, yp]) < error)