use super::Substance;
use crate::fluid::backend::Backend;
#[derive(Clone, Debug, PartialEq)]
pub struct SubstanceWithBackend {
pub substance: Substance,
pub backend: Backend,
}
impl SubstanceWithBackend {
#[must_use]
pub fn name(&self) -> String {
format!("{}::{}", self.backend.name(), self.substance.name())
}
}
#[cfg(test)]
mod tests {
use rstest::*;
use super::*;
use crate::{fluid::backend::*, substance::*};
#[rstest]
#[case(Substance::from(Pure::R32).into_with_default_backend(), "HEOS::R32")]
#[case(Substance::from(Pure::Water).into_with_backend(BaseBackend::If97), "IF97::Water")]
#[case(
Substance::from(Pure::Water).into_with_backend(BaseBackend::Srk.with(TabularMethod::Ttse)),
"TTSE&SRK::Water"
)]
#[case(Substance::from(IncompPure::Water).into_with_default_backend(), "INCOMP::Water")]
#[case(Substance::from(PredefinedMix::R444A).into_with_default_backend(), "HEOS::R444A.mix")]
#[case(
Substance::from(BinaryMixKind::MPG.with_fraction(0.4).unwrap()).into_with_default_backend(),
"INCOMP::MPG[0.4]"
)]
#[case(
Substance::from(CustomMix::mole_based(
[(Pure::Methanol, 0.1), (Pure::Ethanol, 0.1), (Pure::Water, 0.8)]
).unwrap()).into_with_default_backend(),
"HEOS::Water[0.8]&Ethanol[0.1]&Methanol[0.1]"
)]
fn name(#[case] sut: SubstanceWithBackend, #[case] expected: &str) {
let res = sut.name();
assert_eq!(res, expected);
}
}