mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2025-03-07 11:04:36 +01:00
TEST: Add savegame continuity test (#645)
This commit is contained in:
74
test/jest/FullSave.test.ts
Normal file
74
test/jest/FullSave.test.ts
Normal file
@ -0,0 +1,74 @@
|
||||
import { saveObject } from "../../src/SaveObject";
|
||||
import { Factions, initFactions } from "../../src/Faction/Factions";
|
||||
import { Player, setPlayer } from "../../src/Player";
|
||||
import { PlayerObject } from "../../src/PersonObjects/Player/PlayerObject";
|
||||
import { joinFaction } from "../../src/Faction/FactionHelpers";
|
||||
import { AugmentationName, CrimeType, FactionName } from "../../src/Enums";
|
||||
import { Augmentations } from "../../src/Augmentation/Augmentations";
|
||||
import { SleeveCrimeWork } from "../../src/PersonObjects/Sleeve/Work/SleeveCrimeWork";
|
||||
|
||||
describe("Check Save File Continuity", () => {
|
||||
establishInitialConditions();
|
||||
// Calling getSaveString forces save info to update
|
||||
saveObject.getSaveString();
|
||||
|
||||
const savesToTest = ["FactionsSave", "PlayerSave"] as const;
|
||||
for (const saveToTest of savesToTest) {
|
||||
test(`${saveToTest} continuity`, () => {
|
||||
const parsed = JSON.parse(saveObject[saveToTest]);
|
||||
expect(parsed).toMatchSnapshot();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
function establishInitialConditions() {
|
||||
// Jest overrides to produce static savedata
|
||||
jest.useFakeTimers().setSystemTime(1687611703623);
|
||||
let i = 0.5;
|
||||
Math.random = () => {
|
||||
return (++i % 37) / 37;
|
||||
};
|
||||
|
||||
// Game initializers
|
||||
setPlayer(new PlayerObject());
|
||||
Player.init();
|
||||
Player.identifier = "Overwritten identifier";
|
||||
initFactions();
|
||||
Player.sleevesFromCovenant = 1;
|
||||
Player.sourceFiles.set(10, 1);
|
||||
Player.prestigeAugmentation();
|
||||
/* Not comparing servers yet
|
||||
// Just to reduce snapshot size, reduce server map to home + 2 servers
|
||||
for (let i = serverMetadata.length - 1; i >= 0; i--) {
|
||||
if (!["zer0", "n00dles"].includes(serverMetadata[i].hostname)) serverMetadata.splice(i, 1);
|
||||
}
|
||||
initForeignServers(Player.getHomeComputer());
|
||||
*/
|
||||
|
||||
// not comparing companies yet
|
||||
// initCompanies()
|
||||
|
||||
// Sleeves (already added in game initializers section)
|
||||
Player.sleeves[0].installAugmentation(Augmentations[AugmentationName.BionicArms]);
|
||||
Player.sleeves[0].startWork(new SleeveCrimeWork(CrimeType.homicide));
|
||||
|
||||
// Factions
|
||||
const bladeburnerFaction = Factions[FactionName.Bladeburners];
|
||||
const csec = Factions[FactionName.CyberSec];
|
||||
const slumSnakes = Factions[FactionName.SlumSnakes];
|
||||
joinFaction(bladeburnerFaction);
|
||||
joinFaction(csec);
|
||||
joinFaction(slumSnakes);
|
||||
csec.playerReputation = 1e6;
|
||||
csec.favor = 20;
|
||||
|
||||
// Bladeburner. Adding rank will also add bladeburner faction rep.
|
||||
Player.startBladeburner();
|
||||
Player.bladeburner?.changeRank(Player, 2000);
|
||||
|
||||
// Corp
|
||||
Player.startCorporation("Test Corp", false);
|
||||
|
||||
// Gang
|
||||
Player.startGang(FactionName.SlumSnakes, false);
|
||||
}
|
1733
test/jest/__snapshots__/FullSave.test.ts.snap
Normal file
1733
test/jest/__snapshots__/FullSave.test.ts.snap
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user