feat: show default node/element names in table
Some checks failed
CI / lint (push) Has been cancelled
CI / test (macos-latest, 3.10) (push) Has been cancelled
CI / test (macos-latest, 3.11) (push) Has been cancelled
CI / test (macos-latest, 3.12) (push) Has been cancelled
CI / test (ubuntu-latest, 3.10) (push) Has been cancelled
CI / test (ubuntu-latest, 3.11) (push) Has been cancelled
CI / test (ubuntu-latest, 3.12) (push) Has been cancelled
CI / test (windows-latest, 3.10) (push) Has been cancelled
CI / test (windows-latest, 3.11) (push) Has been cancelled
CI / test (windows-latest, 3.12) (push) Has been cancelled
Some checks failed
CI / lint (push) Has been cancelled
CI / test (macos-latest, 3.10) (push) Has been cancelled
CI / test (macos-latest, 3.11) (push) Has been cancelled
CI / test (macos-latest, 3.12) (push) Has been cancelled
CI / test (ubuntu-latest, 3.10) (push) Has been cancelled
CI / test (ubuntu-latest, 3.11) (push) Has been cancelled
CI / test (ubuntu-latest, 3.12) (push) Has been cancelled
CI / test (windows-latest, 3.10) (push) Has been cancelled
CI / test (windows-latest, 3.11) (push) Has been cancelled
CI / test (windows-latest, 3.12) (push) Has been cancelled
This commit is contained in:
parent
8f1aae4370
commit
13bb5d1d91
8 changed files with 172 additions and 21 deletions
93
tests/unit/test_display_name.py
Normal file
93
tests/unit/test_display_name.py
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
"""Unit tests for the display-only ``display_name`` fallback on entities."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from otko.core import (
|
||||
BeamWithHingesElement,
|
||||
CorotTrussElement,
|
||||
DispBeamColumn,
|
||||
ElasticBeamColumn,
|
||||
ElementBase,
|
||||
ForceBeamColumn,
|
||||
Node,
|
||||
QuadElement,
|
||||
TrussElement,
|
||||
ZeroLengthElement,
|
||||
ZeroLengthSectionElement,
|
||||
)
|
||||
from otko.core._base import Entity
|
||||
|
||||
_ALL_ELEMENT_TYPES = (
|
||||
TrussElement,
|
||||
CorotTrussElement,
|
||||
ElasticBeamColumn,
|
||||
ForceBeamColumn,
|
||||
DispBeamColumn,
|
||||
ZeroLengthElement,
|
||||
ZeroLengthSectionElement,
|
||||
BeamWithHingesElement,
|
||||
QuadElement,
|
||||
)
|
||||
|
||||
|
||||
class TestEntityBase:
|
||||
def test_base_fallback_is_empty(self) -> None:
|
||||
e = Entity(id=1)
|
||||
assert e.default_name == ""
|
||||
assert e.display_name == ""
|
||||
|
||||
def test_display_name_is_not_persisted(self) -> None:
|
||||
assert "display_name" not in Entity(id=1).model_dump()
|
||||
assert "default_name" not in Entity(id=1).model_dump()
|
||||
assert "display_name" not in Node(id=1, coords=(0, 0, 0)).model_dump()
|
||||
|
||||
|
||||
class TestNodeDisplayName:
|
||||
def test_blank_name_falls_back(self) -> None:
|
||||
n = Node(id=1, coords=(0, 0, 0))
|
||||
assert n.display_name == "N1"
|
||||
|
||||
def test_explicit_name_is_returned(self) -> None:
|
||||
n = Node(id=1, name="Support A", coords=(0, 0, 0))
|
||||
assert n.display_name == "Support A"
|
||||
|
||||
def test_whitespace_only_name_falls_back(self) -> None:
|
||||
n = Node(id=2, name=" ", coords=(0, 0, 0))
|
||||
assert n.display_name == "N2"
|
||||
|
||||
def test_explicit_name_is_stripped(self) -> None:
|
||||
n = Node(id=1, name=" A1 ", coords=(0, 0, 0))
|
||||
assert n.display_name == "A1"
|
||||
|
||||
def test_display_only_never_writes_back(self) -> None:
|
||||
n = Node(id=1, coords=(0, 0, 0))
|
||||
assert n.display_name == "N1"
|
||||
assert n.name == ""
|
||||
|
||||
|
||||
class TestElementDisplayName:
|
||||
def test_all_element_types_share_element_base(self) -> None:
|
||||
for cls in _ALL_ELEMENT_TYPES:
|
||||
assert issubclass(cls, ElementBase)
|
||||
|
||||
def test_blank_truss_name_falls_back(self) -> None:
|
||||
t = TrussElement(id=1, nodes=(1, 2), area=0.01, material_id=1)
|
||||
assert t.display_name == "E1"
|
||||
|
||||
def test_explicit_truss_name_is_returned(self) -> None:
|
||||
t = TrussElement(id=1, name="Chord", nodes=(1, 2), area=0.01, material_id=1)
|
||||
assert t.display_name == "Chord"
|
||||
|
||||
def test_whitespace_only_truss_name_falls_back(self) -> None:
|
||||
t = TrussElement(id=3, name=" ", nodes=(1, 2), area=0.01, material_id=1)
|
||||
assert t.display_name == "E3"
|
||||
|
||||
def test_blank_quad_name_falls_back(self) -> None:
|
||||
q = QuadElement(id=1, nodes=(1, 2, 3, 4), thickness=0.1, material_id=1)
|
||||
assert q.display_name == "E1"
|
||||
|
||||
def test_display_only_never_writes_back(self) -> None:
|
||||
t = TrussElement(id=1, nodes=(1, 2), area=0.01, material_id=1)
|
||||
assert t.display_name == "E1"
|
||||
assert t.name == ""
|
||||
assert "display_name" not in t.model_dump()
|
||||
Loading…
Reference in a new issue