lainTSX/__tests__/utils/node.test.ts
2022-07-25 16:36:47 +04:00

125 lines
4.7 KiB
TypeScript

import { Direction, GameSite } from "@/types";
import {
findNode,
findNodeFromWord,
getNode,
isNodeVisible,
} from "@/utils/node";
import gameProgressJson from "@/json/initial_progress.json";
import { useStore } from "@/store";
it("Finds nodes from words properly", () => {
expect(findNodeFromWord("father", getNode("0606b")).name).toEqual("Lda151");
expect(findNodeFromWord("father", getNode("0105b")).name).toEqual("Lda155");
expect(findNodeFromWord("father", getNode("0123b")).name).toEqual("Lda164");
expect(findNodeFromWord("father", getNode("0502b")).name).toEqual("Lda200");
expect(findNodeFromWord("father", getNode("1118b")).name).toEqual("Cou041");
expect(findNodeFromWord("father", getNode("0606b")).name).toEqual("Lda151");
expect(findNodeFromWord("chaos", getNode("0115b")).name).toEqual("Tda056");
expect(findNodeFromWord("chaos", getNode("0311b")).name).toEqual("Tda059");
expect(findNodeFromWord("prompt", getNode("0115b")).name).toEqual("Tda072");
expect(findNodeFromWord("abuse", getNode("1622a")).name).toEqual("Lda005");
expect(findNodeFromWord("abuse", getNode("0718a")).name).toEqual("Dc1012");
});
it("Finds node by it's id", () => {
expect(getNode("0422a").name).toEqual("Tda028");
expect(getNode("0000a").name).toEqual("Env001");
expect(getNode("0616a").name).toEqual("Cou015");
expect(getNode("0100b").name).toEqual("SSkn04#");
expect(getNode("0101b").name).toEqual("Dc1025");
});
it("Checks if the node is visible", () => {
const oneViewCount = { ...gameProgressJson, final_video_viewcount: 1 };
const twoViewCount = { ...gameProgressJson, final_video_viewcount: 2 };
const threeViewCount = { ...gameProgressJson, final_video_viewcount: 3 };
const fourViewCount = { ...gameProgressJson, final_video_viewcount: 4 };
expect(isNodeVisible(getNode("0422a"), gameProgressJson)).toEqual(true);
expect(isNodeVisible(getNode("0413a"), gameProgressJson)).toEqual(true);
expect(isNodeVisible(getNode("0406a"), gameProgressJson)).toEqual(false);
expect(isNodeVisible(getNode("0410a"), gameProgressJson)).toEqual(false);
expect(isNodeVisible(getNode("0406a"), oneViewCount)).toEqual(true);
expect(isNodeVisible(getNode("0612a"), gameProgressJson)).toEqual(false);
expect(isNodeVisible(getNode("0612a"), oneViewCount)).toEqual(true);
expect(isNodeVisible(getNode("0612a"), twoViewCount)).toEqual(true);
expect(isNodeVisible(getNode("0801a"), fourViewCount)).toEqual(true);
expect(isNodeVisible(getNode("0801a"), threeViewCount)).toEqual(false);
});
/*
visual representation of the state we're working with
[null, "0517", null, null],
[null, null, "0510", "0513"],
["0506", null, null, null],
|
[null, null, null, "0422"], ["0422", "0417", null, null], [null, "0416", "0417", "0420"],
[null, null, null, "0414"], - ["0414", null, null, "0413"], - ["0413", null, null, null],
[null, null, null, null], [null, null, null, "0405"], ["0405", null, null, null],
|
[null, null, null, null] [null, null, null, null], [null, null, null, null],
[null, null, null, null], [null, null, null, null], [null, null, null, null],
[null, null, null, null], [null, null, null, null], [null, null, null, null],
*/
it("Finds which node to go to", () => {
const state0414 = useStore.getState();
// from 0414 left
expect(findNode(state0414, Direction.Left, true)).toEqual({
node: getNode("0414a"),
nodeMatrixIndex: { row: 1, col: 3 },
siteSegment: 7,
level: 4,
didMove: true,
});
// from 0414 down
expect(findNode(state0414, Direction.Down, true)).toEqual({
node: getNode("0405a"),
nodeMatrixIndex: { row: 2, col: 3 },
siteSegment: 6,
level: 4,
didMove: false,
});
const state0405 = {
...state0414,
node: getNode("0405a"),
nodeMatrixIndex: { row: 2, col: 3 },
};
// from 0405 down
expect(findNode(state0405, Direction.Down, true)).toEqual({
node: null,
nodeMatrixIndex: { row: 2, col: 3 },
siteSegment: 6,
level: 3,
didMove: true,
});
// from 0405 left
expect(findNode(state0405, Direction.Left, true)).toEqual({
node: getNode("0417a"),
nodeMatrixIndex: { row: 0, col: 1 },
siteSegment: 6,
level: 4,
didMove: false,
});
const state0506 = {
...state0414,
node: getNode("0506a"),
nodeMatrixIndex: { row: 3, col: 0 },
level: 5,
};
// from 0506 down
expect(findNode(state0506, Direction.Down, true)).toEqual({
node: getNode("0422a"),
nodeMatrixIndex: { row: 0, col: 0 },
siteSegment: 6,
level: 4,
didMove: true,
});
});