Added NeoForgeEnvironmentType

This commit is contained in:
Kir_Antipov 2024-01-15 16:55:21 +03:00
parent 883bd31e30
commit db98decdd8
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 NeoForge mod can run on.
*/
enum NeoForgeEnvironmentTypeValues {
/**
* 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 `NeoForgeEnvironmentType` enum.
*/
const NeoForgeEnvironmentTypeOptions: EnumOptions = {
/**
* Ignore the case of the environment type string when parsing.
*/
ignoreCase: true,
};
/**
* Represents the different physical sides that a NeoForge mod can run on.
*/
export const NeoForgeEnvironmentType = Enum.create(
NeoForgeEnvironmentTypeValues,
NeoForgeEnvironmentTypeOptions,
);
/**
* Represents the different physical sides that a NeoForge mod can run on.
*/
export type NeoForgeEnvironmentType = Enum<typeof NeoForgeEnvironmentTypeValues>;

View file

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