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
17 lines
428 B
Python
17 lines
428 B
Python
"""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)
|