Merge pull request #1114 from threehams/autocomplete

Add tests for autocomplete
This commit is contained in:
hydroflame 2021-08-30 22:08:16 -04:00 committed by GitHub
commit 2d2c20bfc7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 238 additions and 0 deletions

@ -43,6 +43,7 @@ export interface IPlayer {
homeComputer: string; homeComputer: string;
hp: number; hp: number;
jobs: IMap<string>; jobs: IMap<string>;
init: () => void;
isWorking: boolean; isWorking: boolean;
karma: number; karma: number;
location: LocationName; location: LocationName;

@ -0,0 +1,237 @@
import { Player } from "../../src/Player";
import { determineAllPossibilitiesForTabCompletion } from "../../src/Terminal/determineAllPossibilitiesForTabCompletion";
import { Server } from "../../src/Server/Server";
import {
AddToAllServers,
prestigeAllServers,
} from "../../src/Server/AllServers";
import { LocationName } from "../../src/Locations/data/LocationNames";
import { Message } from "../../src/Message/Message";
import { CodingContract } from "../../src/CodingContracts";
describe("determineAllPossibilitiesForTabCompletion", function () {
let closeServer: Server;
let farServer: Server;
beforeEach(() => {
prestigeAllServers();
Player.init();
closeServer = new Server({
ip: "8.8.8.8",
hostname: "near",
hackDifficulty: 1,
moneyAvailable: 70000,
numOpenPortsRequired: 0,
organizationName: LocationName.NewTokyoNoodleBar,
requiredHackingSkill: 1,
serverGrowth: 3000,
});
farServer = new Server({
ip: "4.4.4.4",
hostname: "far",
hackDifficulty: 1,
moneyAvailable: 70000,
numOpenPortsRequired: 0,
organizationName: LocationName.Aevum,
requiredHackingSkill: 1,
serverGrowth: 3000,
});
Player.getHomeComputer().serversOnNetwork.push(closeServer.ip);
closeServer.serversOnNetwork.push(Player.getHomeComputer().ip);
closeServer.serversOnNetwork.push(farServer.ip);
farServer.serversOnNetwork.push(closeServer.ip);
AddToAllServers(closeServer);
AddToAllServers(farServer);
});
it("completes the connect command", () => {
const options = determineAllPossibilitiesForTabCompletion(
Player,
"connect ",
0,
);
expect(options).toEqual(["8.8.8.8", "near"]);
});
it("completes the buy command", () => {
const options = determineAllPossibilitiesForTabCompletion(
Player,
"buy ",
0,
);
expect(options).toEqual([
"BruteSSH.exe",
"FTPCrack.exe",
"relaySMTP.exe",
"HTTPWorm.exe",
"SQLInject.exe",
"DeepscanV1.exe",
"DeepscanV2.exe",
"AutoLink.exe",
"ServerProfiler.exe",
]);
});
it("completes the scp command", () => {
Player.getHomeComputer().writeToTextFile("note.txt", "oh hai mark");
Player.getHomeComputer().messages.push("af.lit");
Player.getHomeComputer().writeToScriptFile(
"/www/script.js",
"oh hai mark",
);
const options1 = determineAllPossibilitiesForTabCompletion(
Player,
"scp ",
0,
);
expect(options1).toEqual([
"/www/script.js",
"af.lit",
"note.txt",
"www/",
]);
const options2 = determineAllPossibilitiesForTabCompletion(
Player,
"scp note.txt ",
1,
);
expect(options2).toEqual([
Player.getHomeComputer().ip,
"home",
"8.8.8.8",
"near",
"4.4.4.4",
"far",
]);
});
it("completes the kill, tail, mem, and check commands", () => {
Player.getHomeComputer().writeToScriptFile(
"/www/script.js",
"oh hai mark",
);
for (const command of ["kill", "tail", "mem", "check"]) {
expect(
determineAllPossibilitiesForTabCompletion(
Player,
`${command} `,
0,
),
).toEqual(["/www/script.js", "www/"]);
}
});
it("completes the nano commands", () => {
Player.getHomeComputer().writeToScriptFile(
"/www/script.js",
"oh hai mark",
);
Player.getHomeComputer().writeToTextFile("note.txt", "oh hai mark");
expect(
determineAllPossibilitiesForTabCompletion(Player, "nano ", 0),
).toEqual(["/www/script.js", "note.txt", ".fconf", "www/"]);
});
it("completes the rm command", () => {
Player.getHomeComputer().writeToTextFile("note.txt", "oh hai mark");
Player.getHomeComputer().writeToScriptFile(
"/www/script.js",
"oh hai mark",
);
Player.getHomeComputer().contracts.push(
new CodingContract("linklist.cct"),
);
Player.getHomeComputer().messages.push(new Message("asl.msg"));
Player.getHomeComputer().messages.push("af.lit");
expect(
determineAllPossibilitiesForTabCompletion(Player, "rm ", 0),
).toEqual([
"/www/script.js",
"NUKE.exe",
"af.lit",
"note.txt",
"linklist.cct",
"www/",
]);
});
it("completes the run command", () => {
Player.getHomeComputer().writeToScriptFile(
"/www/script.js",
"oh hai mark",
);
Player.getHomeComputer().contracts.push(
new CodingContract("linklist.cct"),
);
expect(
determineAllPossibilitiesForTabCompletion(Player, "run ", 0),
).toEqual(["/www/script.js", "NUKE.exe", "linklist.cct", "www/"]);
});
it("completes the cat command", () => {
Player.getHomeComputer().writeToTextFile(
"/www/note.txt",
"oh hai mark",
);
Player.getHomeComputer().messages.push(new Message("asl.msg"));
Player.getHomeComputer().messages.push("af.lit");
expect(
determineAllPossibilitiesForTabCompletion(Player, "cat ", 0),
).toEqual(["asl.msg", "af.lit", "/www/note.txt", "www/"]);
});
it("completes the download and mv commands", () => {
Player.getHomeComputer().writeToScriptFile(
"/www/script.js",
"oh hai mark",
);
Player.getHomeComputer().writeToTextFile("note.txt", "oh hai mark");
for (const command of ["download", "mv"]) {
expect(
determineAllPossibilitiesForTabCompletion(
Player,
`${command} `,
0,
),
).toEqual(["/www/script.js", "note.txt", "www/"]);
}
});
it("completes the cd command", () => {
Player.getHomeComputer().writeToScriptFile(
"/www/script.js",
"oh hai mark",
);
expect(
determineAllPossibilitiesForTabCompletion(Player, "cd ", 0),
).toEqual(["www/"]);
});
it("completes the ls and cd commands", () => {
Player.getHomeComputer().writeToScriptFile(
"/www/script.js",
"oh hai mark",
);
for (const command of ["ls", "cd"]) {
expect(
determineAllPossibilitiesForTabCompletion(
Player,
`${command} `,
0,
),
).toEqual(["www/"]);
}
});
it("completes commands starting with ./", () => {
Player.getHomeComputer().writeToScriptFile(
"/www/script.js",
"oh hai mark",
);
expect(
determineAllPossibilitiesForTabCompletion(Player, "run ./", 0),
).toEqual([".//www/script.js", "NUKE.exe", "./www/"]);
});
});