Esempio n. 1
0
 def get_cpp_triangulation(self):
     # Return the underlying C++ Triangulation object, creating it
     # if necessary.
     if self._cpp_triangulation is None:
         self._cpp_triangulation = _tri.Triangulation(
             self.x, self.y, self.triangles, self.mask, self._edges,
             self._neighbors)
     return self._cpp_triangulation
 def get_cpp_triangulation(self):
     """
     Return the underlying C++ Triangulation object, creating it
     if necessary.
     """
     if self._cpp_triangulation is None:
         self._cpp_triangulation = _tri.Triangulation(
             self.x, self.y, self.triangles, self.mask, self._edges,
             self._neighbors, not self.is_delaunay)
     return self._cpp_triangulation
Esempio n. 3
0
def test_internal_cpp_api():
    # Following github issue 8197.
    import matplotlib._tri as _tri

    # C++ Triangulation.
    with pytest.raises(TypeError) as excinfo:
        triang = _tri.Triangulation()
    excinfo.match(r'function takes exactly 7 arguments \(0 given\)')

    with pytest.raises(ValueError) as excinfo:
        triang = _tri.Triangulation([], [1], [[]], None, None, None, False)
    excinfo.match(r'x and y must be 1D arrays of the same length')

    x = [0, 1, 1]
    y = [0, 0, 1]
    with pytest.raises(ValueError) as excinfo:
        triang = _tri.Triangulation(x, y, [[0, 1]], None, None, None, False)
    excinfo.match(r'triangles must be a 2D array of shape \(\?,3\)')

    tris = [[0, 1, 2]]
    with pytest.raises(ValueError) as excinfo:
        triang = _tri.Triangulation(x, y, tris, [0, 1], None, None, False)
    excinfo.match(r'mask must be a 1D array with the same length as the ' +
                  r'triangles array')

    with pytest.raises(ValueError) as excinfo:
        triang = _tri.Triangulation(x, y, tris, None, [[1]], None, False)
    excinfo.match(r'edges must be a 2D array with shape \(\?,2\)')

    with pytest.raises(ValueError) as excinfo:
        triang = _tri.Triangulation(x, y, tris, None, None, [[-1]], False)
    excinfo.match(r'neighbors must be a 2D array with the same shape as the ' +
                  r'triangles array')

    triang = _tri.Triangulation(x, y, tris, None, None, None, False)

    with pytest.raises(ValueError) as excinfo:
        triang.calculate_plane_coefficients([])
    excinfo.match(r'z array must have same length as triangulation x and y ' +
                  r'arrays')

    with pytest.raises(ValueError) as excinfo:
        triang.set_mask([0, 1])
    excinfo.match(r'mask must be a 1D array with the same length as the ' +
                  r'triangles array')

    # C++ TriContourGenerator.
    with pytest.raises(TypeError) as excinfo:
        tcg = _tri.TriContourGenerator()
    excinfo.match(r'function takes exactly 2 arguments \(0 given\)')

    with pytest.raises(ValueError) as excinfo:
        tcg = _tri.TriContourGenerator(triang, [1])
    excinfo.match(r'z must be a 1D array with the same length as the x and ' +
                  r'y arrays')

    z = [0, 1, 2]
    tcg = _tri.TriContourGenerator(triang, z)

    with pytest.raises(ValueError) as excinfo:
        tcg.create_filled_contour(1, 0)
    excinfo.match(r'filled contour levels must be increasing')

    # C++ TrapezoidMapTriFinder.
    with pytest.raises(TypeError) as excinfo:
        trifinder = _tri.TrapezoidMapTriFinder()
    excinfo.match(r'function takes exactly 1 argument \(0 given\)')

    trifinder = _tri.TrapezoidMapTriFinder(triang)

    with pytest.raises(ValueError) as excinfo:
        trifinder.find_many([0], [0, 1])
    excinfo.match(r'x and y must be array_like with same shape')