|
|
"""Tests for the ``sympy.physics.biomechanics._mixin.py`` module.""" |
|
|
|
|
|
import pytest |
|
|
|
|
|
from sympy.physics.biomechanics._mixin import _NamedMixin |
|
|
|
|
|
|
|
|
class TestNamedMixin: |
|
|
|
|
|
@staticmethod |
|
|
def test_subclass(): |
|
|
|
|
|
class Subclass(_NamedMixin): |
|
|
|
|
|
def __init__(self, name): |
|
|
self.name = name |
|
|
|
|
|
instance = Subclass('name') |
|
|
assert instance.name == 'name' |
|
|
|
|
|
@pytest.fixture(autouse=True) |
|
|
def _named_mixin_fixture(self): |
|
|
|
|
|
class Subclass(_NamedMixin): |
|
|
|
|
|
def __init__(self, name): |
|
|
self.name = name |
|
|
|
|
|
self.Subclass = Subclass |
|
|
|
|
|
@pytest.mark.parametrize('name', ['a', 'name', 'long_name']) |
|
|
def test_valid_name_argument(self, name): |
|
|
instance = self.Subclass(name) |
|
|
assert instance.name == name |
|
|
|
|
|
@pytest.mark.parametrize('invalid_name', [0, 0.0, None, False]) |
|
|
def test_invalid_name_argument_not_str(self, invalid_name): |
|
|
with pytest.raises(TypeError): |
|
|
_ = self.Subclass(invalid_name) |
|
|
|
|
|
def test_invalid_name_argument_zero_length_str(self): |
|
|
with pytest.raises(ValueError): |
|
|
_ = self.Subclass('') |
|
|
|
|
|
def test_name_attribute_is_immutable(self): |
|
|
instance = self.Subclass('name') |
|
|
with pytest.raises(AttributeError): |
|
|
instance.name = 'new_name' |
|
|
|