Skip to content

Commit

Permalink
Adding metadata to CurvedPolygon.
Browse files Browse the repository at this point in the history
This is (for now) a private member intended to be used only for
testing purposes.
  • Loading branch information
dhermes committed Jan 8, 2018
1 parent 3b4cd6e commit 871d23d
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 4 deletions.
16 changes: 12 additions & 4 deletions src/bezier/curved_polygon.py
Expand Up @@ -127,16 +127,24 @@ class CurvedPolygon(object):
Args:
edges (Tuple[~bezier.curve.Curve, ...]): The boundary edges
of the curved polygon.
kwargs: The only keyword argument accepted is ``_verify``, which is
a :class:`bool` indicating if the edges should be verified as
having shared endpoints. It defaults to :data:`True`.
kwargs: There are two keyword arguments accepted:
* ``metadata`` (:class:`~typing.Sequence`): A sequence of triples
associated with this curved polygon. This is intended to be used
by callers that have created a curved polygon as an intersection
between two B |eacute| zier surfaces.
* ``_verify`` (:class:`bool`): Indicates if the edges should be
verified as having shared endpoints. Defaults to :data:`True`.
Other keyword arguments specified will be silently ignored.
"""

__slots__ = ('_edges', '_num_sides')
__slots__ = ('_edges', '_num_sides', '_metadata')

def __init__(self, *edges, **kwargs):
self._edges = edges
self._num_sides = len(edges)
self._metadata = kwargs.pop('metadata', None)
if kwargs.pop('_verify', True):
self._verify()

Expand Down
16 changes: 16 additions & 0 deletions tests/unit/test_curved_polygon.py
Expand Up @@ -56,6 +56,7 @@ def test_constructor(self):
curved_poly = self._make_one(edge0, edge1)
self.assertEqual(curved_poly._edges, (edge0, edge1))
self.assertEqual(curved_poly._num_sides, 2)
self.assertIsNone(curved_poly._metadata)

def test_constructor_without_verify(self):
import bezier
Expand All @@ -67,6 +68,21 @@ def test_constructor_without_verify(self):
curved_poly = self._make_one(edge0, _verify=False)
self.assertEqual(curved_poly._edges, (edge0,))
self.assertEqual(curved_poly._num_sides, 1)
self.assertIsNone(curved_poly._metadata)

def test_constructor_with_metadata(self):
import bezier

edge0 = bezier.Curve(self.NODES0, 2)
edge1 = bezier.Curve(self.NODES1, 2)
metadata = (
(0, 0.0, 0.5),
(4, 0.5, 1.0),
)
curved_poly = self._make_one(edge0, edge1, metadata=metadata)
self.assertEqual(curved_poly._edges, (edge0, edge1))
self.assertEqual(curved_poly._num_sides, 2)
self.assertEqual(curved_poly._metadata, metadata)

def test__verify_too_few(self):
with self.assertRaises(ValueError):
Expand Down

0 comments on commit 871d23d

Please sign in to comment.