code: def test_attribute_chains(self):
      # Attribute Chaining
      # See also ticket #151.
      p = Polygon([(0.0, 0.0), (0.0, 1.0), (-1.0, 1.0), (-1.0, 0.0)])
      assert list(p.boundary.coords) == [
          (0.0, 0.0),
          (0.0, 1.0),
          (-1.0, 1.0),
          (-1.0, 0.0),
          (0.0, 0.0),
      ]
  
      ec = list(Point(0.0, 0.0).buffer(1.0, 1).exterior.coords)
      assert isinstance(ec, list)  # TODO: this is a poor test
  
      # Test chained access to interiors
      p = Polygon(
          [(0.0, 0.0), (0.0, 1.0), (-1.0, 1.0), (-1.0, 0.0)],
          [
              [
                  (-0.25, 0.25),
                  (-0.25, 0.75),
                  (-0.75, 0.75),
                  (-0.75, 0.25),
              ]
          ],
      )
      assert p.area == 0.75
  
      """Not so much testing the exact values here, which are the
          responsibility of the geometry engine (GEOS), but that we can get
          chain functions and properties using anonymous references.
          """
      assert list(p.interiors[0].coords) == [
          (-0.25, 0.25),
          (-0.25, 0.75),
          (-0.75, 0.75),
          (-0.75, 0.25),
          (-0.25, 0.25),
      ]
      xy = list(p.interiors[0].buffer(1).exterior.coords)[0]
      assert len(xy) == 2
  
      # Test multiple operators, boundary of a buffer
      ec = list(p.buffer(1).boundary.coords)
      assert isinstance(ec, list)
  
imports: import numpy
  import pytest
  from shapely import LinearRing, LineString, Point, Polygon
  from shapely.coords import CoordinateSequence
  from shapely.errors import TopologicalError
  from shapely.wkb import loads
label_desc: Use image node_id 5 for calling the TestPolygon obj's underlying member method code with example usage: obj.test_attribute_chains() without return types