bitburner-src/test/netscript/tb_functions.script
2022-01-26 05:35:21 -05:00

119 lines
4.6 KiB
Plaintext

import {test} from "tb_basic.script";
test("run", (args.length === 1 && args[0] === "OK"));
//scan
res = scan();
test("scan1", res.includes("iron-gym") && res.includes("foodnstuff") &&
res.includes("sigma-cosmetics") && res.includes("joesguns") &&
res.includes("hong-fang-tea") && res.includes("harakiri-sushi"));
test("scan2", res.length === 6);
res = scan("foodnstuff");
test("scan3", res.includes("home"));
//hasRootAccess and nuke
svr = "foodnstuff";
test("hasRootAccess1", !hasRootAccess(svr));
test("nuke", nuke(svr));
test("hasRootAccess2", hasRootAccess(svr));
//sleep and Date.now();
time = Date.now();
sleep(10000);
time2 = Date.now();
test("sleep", time2 - time > 8000);
//hack, grow, weaken, and their effects
FORTIFYAMOUNT = 0.002;
WEAKENAMOUNT = 0.05;
playerStartingMoney = getServerMoneyAvailable("home");
serverStartingMoney = getServerMoneyAvailable("foodnstuff");
startingSecLvl = getServerSecurityLevel("foodnstuff");
res = hack(svr);
playerEndingMoney = getServerMoneyAvailable("home");
serverEndingMoney = getServerMoneyAvailable("foodnstuff");
endingSecLvl = getServerSecurityLevel("foodnstuff");
success = !(res == 0);
if (success) {
tprint("Hack succeeded");
test("hackplyrmoney", res === (playerEndingMoney - playerStartingMoney));
test("hacksvrmoney", res === (serverStartingMoney - serverEndingMoney));
//Dumb JS precision
test("seclevel", (endingSecLvl - startingSecLvl) - FORTIFYAMOUNT < 1e2 * Number.EPSILON);
} else {
tprint("Hack failed");
test("hackres", res === 0);
test("hackplymoney", playerEndingMoney === playerStartingMoney);
test("hacksvrmoney", serverEndingMoney === serverStartingMoney);
test("seclevel", endingSecLvl === startingSecLvl);
}
serverStartingMoney = getServerMoneyAvailable(svr);
res = grow(svr);
serverEndingMoney = getServerMoneyAvailable(svr);
test("grow", serverEndingMoney > serverStartingMoney);
test("growtest", res * serverStartingMoney - serverEndingMoney < Number.EPSILON);
startingSecLvl = getServerSecurityLevel(svr);
res = weaken(svr);
endingSecLvl = getServerSecurityLevel(svr);
test("weaken", res === WEAKENAMOUNT);
test("weakenres", startingSecLvl - endingSecLvl - res < 1e2 * Number.EPSILON);
//misc getter functions
test("getHostname", getHostname() === "home");
test("getHackingLevel", getHackingLevel() >= 1); //Can vary based on aug mults
res = getHackingMultipliers();
test("getHackingMultipliers", res.chance >= 1 && res.speed >= 1 &&
res.money >= 1 && res.growth >= 1);
svr = "joesguns";
baseSecLvl = getServerBaseSecurityLevel(svr);
minSecLvl = getServerMinSecurityLevel(svr);
test("getServerBase/MinSecurityLevel1", minSecLvl < baseSecLvl);
test("getServerBase/MinSecurityLevel1", minSecLvl === Math.max(1, Math.round(baseSecLvl / 3)));
test("getServerRequiredHackingLevel", getServerRequiredHackingLevel(svr) === 10);
test("getServerMaxMoney", getServerMaxMoney(svr) > getServerMoneyAvailable(svr)); //Can vary by BN
test("getServerGrowth", getServerGrowth(svr) >= 1); //Can vary by BN
test("getServerNumPortsRequired1", getServerNumPortsRequired(svr) === 0);
test("getServerNumPortsRequired1", getServerNumPortsRequired("neo-net") === 1);
test("getServerRam", getServerRam("home")[0] === 8 ||
getServerRam("home")[0] === 16 ||
getServerRam("home")[0] === 32);
test("serverExists1", serverExists("home"));
test("serverExists2", !serverExists("foofooofofofof"));
test("fileExists1", fileExists("tb_start.script"));
test("fileExists2", !fileExists("tosdifoodafgbiofdagbaod.txt"));
//run a misc script
test("isRunning1", !isRunning("tb_foo.script", "home"));
run("tb_foo.script", 1, 1, 2, 3);
test("isRunning2", !isRunning("tb_foo.script", "home", "foo"));
test("isRunning3", isRunning("tb_foo.script", "home", 1, 2, 3));
//kill
kill("tb_foo.script", "home", "fee");
sleep(10000);
test("isRunning4", isRunning("tb_foo.script", "home", 1, 2, 3));
kill("tb_foo.script", "home", 1, 2, 3);
sleep(10000);
test("isRunning4", !isRunning("tb_foo.script", "home", 1, 2, 3));
//scp
svr = "foodnstuff";
test("fileExists3", !fileExists("tb_remote.script", svr));
test("fileExists4", !fileExists("tb_basic.script", svr));
scp("tb_remote.script", "home", svr);
scp("tb_basic.script", svr);
test("fileExists5", fileExists("tb_remote.script", svr));
test("fileExists6", fileExists("tb_basic.script", svr));
write("tb_results.txt", ",tb_functions"); //Done, pretty much
//exec and spawn
exec("tb_remote.script", "foodnstuff", 1, "OK");
spawn("tb_functions2.script", 1, "OK");