feat: named case-result load combinations with full GUI support
Snapshots the current development tree, headlined by proper load combinations (user request): a reusable LoadCombination entity of weighted completed static-case results (e.g. 1.2xDead + 1.6xLive). - core: LoadCombination/LoadCombinationItem entities, Project integration (lookup, unique ids, reference validation) - services: combinations.py (linear superposition + envelope), exported via services __init__ - commands: undoable Add/Delete/Update for combinations - GUI: Load Combinations manager dialog, Run-dialog evaluation, envelope display in Results panel, Combinations tab in Table dock - tests: unit coverage (validation, math, error paths) + integration superposition check vs a single factored run
This commit is contained in:
commit
f361fee969
560 changed files with 178701 additions and 0 deletions
17
tests/unit/test_smoke.py
Normal file
17
tests/unit/test_smoke.py
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
"""Smoke tests — verify the package imports and exposes its version."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import otko
|
||||
|
||||
|
||||
def test_version_exposed() -> None:
|
||||
assert isinstance(otko.__version__, str)
|
||||
assert otko.__version__.count(".") >= 2
|
||||
|
||||
|
||||
def test_app_module_importable() -> None:
|
||||
"""The bootstrap module must import without instantiating QApplication."""
|
||||
from otko import app
|
||||
|
||||
assert callable(app.run)
|
||||
Loading…
Reference in a new issue