You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
UnitCommitment.jl/web/src/components/CaseBuilder/Buses/BusesTable.test.ts

56 lines
1.7 KiB

/*
* UnitCommitment.jl: Optimization Package for Security-Constrained Unit Commitment
* Copyright (C) 2020-2025, UChicago Argonne, LLC. All rights reserved.
* Released under the modified BSD license. See COPYING.md for more details.
*/
import assert from "node:assert";
import { generateBusesCsv, parseBusesCsv } from "./BusesTable";
import { BUS_TEST_DATA_1 } from "./BusOperations.test";
test("generate CSV", () => {
const actualCsv = generateBusesCsv(BUS_TEST_DATA_1);
const expectedCsv =
"Name,Load 0,Load 1,Load 2,Load 3,Load 4\n" +
"b1,35.79534,34.38835,33.45083,32.89729,33.25044\n" +
"b2,14.03739,13.48563,13.11797,12.9009,13.03939\n" +
"b3,27.3729,26.29698,25.58005,25.15675,25.4268";
assert.strictEqual(actualCsv, expectedCsv);
});
test("parse valid CSV", () => {
const csvContents =
"Name,Load 0,Load 1,Load 2,Load 3,Load 4\n" +
"b1,0,1,2,3,4\n" +
"b3,27.3729,26.29698,25.58005,25.15675,25.4268";
const newScenario = parseBusesCsv(BUS_TEST_DATA_1, csvContents);
assert.deepEqual(newScenario.Buses, {
b1: {
"Load (MW)": [0, 1, 2, 3, 4],
},
b3: {
"Load (MW)": [27.3729, 26.29698, 25.58005, 25.15675, 25.4268],
},
});
});
test("parse invalid CSV (wrong headers)", () => {
const csvContents =
"Name,Load 5,Load 7,Load 23,Load 3,Load 4\n" +
"b1,0,1,2,3,4\n" +
"b3,27.3729,26.29698,25.58005,25.15675,25.4268";
expect(() => {
parseBusesCsv(BUS_TEST_DATA_1, csvContents);
}).toThrow(Error);
});
test("parse invalid CSV (wrong data length)", () => {
const csvContents =
"Name,Load 0,Load 1,Load 2,Load 3,Load 4\n" +
"b1,0,1,2,3\n" +
"b3,27.3729,26.29698,25.58005,25.15675,25.4268";
expect(() => {
parseBusesCsv(BUS_TEST_DATA_1, csvContents);
}).toThrow(Error);
});