Files
swift-estimated-pressures-core/Tests/EstimatedPressureTests/EstimatedPressureTests.swift

99 lines
2.4 KiB
Swift

import Dependencies
import EstimatedPressureDependency
import SharedModels
import XCTest
import Testing
final class PositiveNumericTests: XCTestCase {
override func invokeTest() {
withDependencies {
$0.estimatedPressuresClient = .liveValue
} operation: {
super.invokeTest()
}
}
func testEstimatedAirflow() async throws {
@Dependency(\.estimatedPressuresClient.estimatedAirflow) var estimatedAirflow
let sut = try await estimatedAirflow(.init(
existingAirflow: 1501,
existingPressure: 0.874,
targetPressure: 0.5
))
XCTAssertNotNil(sut)
XCTAssertEqual(round(sut.positiveValue), 1135)
}
func testEstimatedPressure() async throws {
@Dependency(\.estimatedPressuresClient.estimatedPressure) var estimatedPressure
let sut = try await estimatedPressure(.init(
existingPressure: 0.3,
existingAirflow: 1084,
targetAirflow: 1050
))
XCTAssertEqual(round(sut.positiveValue * 1000) / 1000, 0.281)
}
func testExternalStaticPressure() {
var envelope = EquipmentMeasurement.furnaceAndCoil(
.init(
airflow: 1200,
manufacturersIncludedFilterPressureDrop: 0,
returnPlenumPressure: -0.1,
postFilterPressure: -0.2, // here to test it makes positive.
preCoilPressure: 0.4,
supplyPlenumPressure: 0.1
)
)
var sut = envelope.externalStaticPressure.positiveValue
XCTAssertEqual(round(sut * 10) / 10, 0.6)
envelope = .airHandler(
.init(
airflow: 1200,
manufacturersIncludedFilterPressureDrop: 0,
returnPlenumPressure: -0.2,
postFilterPressure: 0.3,
postCoilPressure: 0.5,
supplyPlenumPressure: 0.3)
)
sut = envelope.externalStaticPressure.positiveValue
XCTAssertEqual(round(sut * 10) / 10, 0.7)
}
@Test(
"Values are positive only",
.tags(.sharedModel),
arguments: [
0.1,
-0.1
]
)
func valuesArePositiveOnly(value: Double) {
let positive = Positive<Double>(value)
#expect(positive.positiveValue == 0.1)
}
@Test(
"PlenumDimension area calculation",
.tags(.sharedModel),
arguments: [
(PlenumDimension.rectangular(width: 24, height: 12), 2),
(PlenumDimension.round(16), 1.4)
]
)
func plenumDimensionArea(dimension: PlenumDimension, expectation: Double) {
let sut = round(dimension.areaInSquareFeet * 100) / 100
#expect(sut == expectation)
}
}