Added enum for Forge environment types

This commit is contained in:
Kir_Antipov 2023-03-09 15:34:01 +00:00
parent a8cce57c4b
commit 56083ad40b
2 changed files with 73 additions and 0 deletions

View file

@ -0,0 +1,44 @@
import { Enum, EnumOptions } from "@/utils/enum";
/**
* Represents the different physical sides that a Forge mod can run on.
*/
enum ForgeEnvironmentTypeValues {
/**
* Present on the client side.
*/
CLIENT = "CLIENT",
/**
* Present on the dedicated server.
*/
SERVER = "SERVER",
/**
* Present on both the client and server side.
*/
BOTH = "BOTH",
}
/**
* Options for configuring the behavior of the `ForgeEnvironmentType` enum.
*/
const ForgeEnvironmentTypeOptions: EnumOptions = {
/**
* Ignore the case of the environment type string when parsing.
*/
ignoreCase: true,
};
/**
* Represents the different physical sides that a Forge mod can run on.
*/
export const ForgeEnvironmentType = Enum.create(
ForgeEnvironmentTypeValues,
ForgeEnvironmentTypeOptions,
);
/**
* Represents the different physical sides that a Forge mod can run on.
*/
export type ForgeEnvironmentType = Enum<typeof ForgeEnvironmentTypeValues>;

View file

@ -0,0 +1,29 @@
import { ForgeEnvironmentType } from "@/loaders/forge/forge-environment-type";
describe("ForgeEnvironmentType", () => {
describe("parse", () => {
test("parses all its own formatted values", () => {
for (const value of ForgeEnvironmentType.values()) {
expect(ForgeEnvironmentType.parse(ForgeEnvironmentType.format(value))).toBe(value);
}
});
test("parses all friendly names of its own values", () => {
for (const value of ForgeEnvironmentType.values()) {
expect(ForgeEnvironmentType.parse(ForgeEnvironmentType.friendlyNameOf(value))).toBe(value);
}
});
test("parses all its own formatted values in lowercase", () => {
for (const value of ForgeEnvironmentType.values()) {
expect(ForgeEnvironmentType.parse(ForgeEnvironmentType.format(value).toLowerCase())).toBe(value);
}
});
test("parses all its own formatted values in UPPERCASE", () => {
for (const value of ForgeEnvironmentType.values()) {
expect(ForgeEnvironmentType.parse(ForgeEnvironmentType.format(value).toUpperCase())).toBe(value);
}
});
});
});