Files
Entropyk/bindings/python/tests/test_boundary.py

94 lines
2.7 KiB
Python

import pytest
import warnings
from entropyk import (
Concentration,
VolumeFlow,
RelativeHumidity,
VaporQuality,
RefrigerantSource,
RefrigerantSink,
BrineSource,
BrineSink,
AirSource,
AirSink,
FlowSource,
FlowSink,
System,
)
def test_physical_types_instantiation():
"""Test instantiation and constraints of new physical types."""
c = Concentration(0.3)
assert c.value == 0.3
with pytest.raises(ValueError):
Concentration(1.5)
vf = VolumeFlow(0.1)
assert vf.value == 0.1
with pytest.raises(ValueError):
VolumeFlow(-0.1)
rh = RelativeHumidity(0.5)
assert rh.value == 0.5
with pytest.raises(ValueError):
RelativeHumidity(-0.1)
vq = VaporQuality(0.8)
assert vq.value == 0.8
with pytest.raises(ValueError):
VaporQuality(1.1)
def test_refrigerant_boundary():
"""Test RefrigerantSource and RefrigerantSink instantiation."""
source = RefrigerantSource(fluid="R134a", pressure_pa=200000.0, quality=0.5)
sink = RefrigerantSink(fluid="R134a", p_back_pa=100000.0, quality=1.0)
assert "R134a" in repr(source)
assert "0.50" in repr(source)
assert "R134a" in repr(sink)
sys = System()
sys.add_component(source)
sys.add_component(sink)
def test_brine_boundary():
"""Test BrineSource and BrineSink instantiation."""
source = BrineSource(fluid="EthyleneGlycol", concentration=0.3, temperature_k=280.0, pressure_pa=200000.0)
sink = BrineSink(p_back_pa=150000.0)
assert "EthyleneGlycol" in repr(source)
assert "0.30" in repr(source)
assert "150000" in repr(sink)
sys = System()
sys.add_component(source)
sys.add_component(sink)
def test_air_boundary():
"""Test AirSource and AirSink instantiation."""
source = AirSource(temperature_k=293.15, relative_humidity=0.5, pressure_pa=101325.0)
sink = AirSink(p_back_pa=101325.0)
assert "293.1" in repr(source)
assert "0.50" in repr(source)
sys = System()
sys.add_component(source)
sys.add_component(sink)
def test_deprecated_flow_boundary():
"""Test that FlowSource and FlowSink raise deprecation warnings."""
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter("always")
FlowSource(pressure_pa=100000.0, temperature_k=300.0, fluid="Water")
assert len(w) == 1
assert issubclass(w[-1].category, DeprecationWarning)
assert "deprecated" in str(w[-1].message).lower()
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter("always")
FlowSink()
assert len(w) == 1
assert issubclass(w[-1].category, DeprecationWarning)
assert "deprecated" in str(w[-1].message).lower()