55 lines
2.1 KiB
TypeScript
55 lines
2.1 KiB
TypeScript
import {
|
|
FLOW_DISPLAY_UNIT,
|
|
metricForResultProperty,
|
|
networkResultUnitsFromOptions,
|
|
toDisplayValue,
|
|
toM3h,
|
|
toModelDisplayValue,
|
|
} from "./units";
|
|
|
|
describe("flow display units", () => {
|
|
it("uses cubic meters per hour as the flow display unit", () => {
|
|
expect(FLOW_DISPLAY_UNIT).toBe("m³/h");
|
|
});
|
|
|
|
it("converts L/s values to m³/h", () => {
|
|
expect(toM3h(10, "lps")).toBe(36);
|
|
expect(toM3h(10, "L/s")).toBe(36);
|
|
});
|
|
|
|
it("centralizes model and SCADA conversion for all UI consumers", () => {
|
|
expect(toDisplayValue(2, "flow", "MLD")).toBeCloseTo(83.3333333334);
|
|
expect(toDisplayValue(10, "pressure", "KPA")).toBeCloseTo(1.019716213);
|
|
expect(toDisplayValue(2, "velocity", "ft/s")).toBeCloseTo(0.6096);
|
|
expect(toDisplayValue(36, "flow", "m3/h")).toBe(36);
|
|
});
|
|
|
|
it("maps result properties to their physical metrics", () => {
|
|
expect(metricForResultProperty("flow")).toBe("flow");
|
|
expect(metricForResultProperty("base_demand")).toBe("flow");
|
|
expect(metricForResultProperty("actual_demand")).toBe("flow");
|
|
expect(metricForResultProperty("pressure")).toBe("pressure");
|
|
expect(metricForResultProperty("velocity")).toBe("velocity");
|
|
expect(metricForResultProperty("headloss")).toBeNull();
|
|
});
|
|
|
|
it("resolves legacy and v3 model options in one place", () => {
|
|
expect(
|
|
networkResultUnitsFromOptions({
|
|
FLOW_UNITS: "MLD",
|
|
PRESSURE_UNITS: "METERS",
|
|
}),
|
|
).toEqual({ flow: "MLD", pressure: "METERS", velocity: "m/s" });
|
|
expect(networkResultUnitsFromOptions({ UNITS: "GPM", PRESSURE: "PSI" }))
|
|
.toEqual({ flow: "GPM", pressure: "PSI", velocity: "ft/s" });
|
|
});
|
|
|
|
it("converts model properties using project result units", () => {
|
|
const units = { flow: "MLD", pressure: "KPA", velocity: "ft/s" };
|
|
expect(toModelDisplayValue(2, "flow", units)).toBeCloseTo(83.3333333334);
|
|
expect(toModelDisplayValue(10, "pressure", units)).toBeCloseTo(1.019716213);
|
|
expect(toModelDisplayValue(2, "velocity", units)).toBeCloseTo(0.6096);
|
|
expect(toModelDisplayValue(3, "headloss", units)).toBe(3);
|
|
});
|
|
});
|