blob: 9a55536b6aa6027019885928a5d37069ac7242ad [file]
import {
parse_requested_sdl_version,
SdlVersion,
SdlRelease,
SdlReleaseType,
} from "./version";
import { describe, expect, test } from "@jest/globals";
describe("testing parsing of version string", () => {
function add_parse_to_version_test(
input: string,
major: number,
minor: number,
patch: number,
type: SdlReleaseType
) {
test(`test ${input}`, () => {
const result = parse_requested_sdl_version(input);
expect(result).toBeTruthy();
if (result) {
expect(result.version).toStrictEqual(
new SdlVersion({ major: major, minor: minor, patch: patch })
);
expect(result.type).toStrictEqual(type);
}
});
}
function add_invalid_version_test(input: string) {
test(`test ${input}`, () => {
const result = parse_requested_sdl_version(input);
expect(result).toBeNull();
});
}
add_parse_to_version_test("2-any", 2, 0, 0, SdlReleaseType.Any);
add_parse_to_version_test("sdl2-any", 2, 0, 0, SdlReleaseType.Any);
add_parse_to_version_test("SDL2-any", 2, 0, 0, SdlReleaseType.Any);
add_parse_to_version_test("3-any", 3, 0, 0, SdlReleaseType.Any);
add_parse_to_version_test("SDL3-any", 3, 0, 0, SdlReleaseType.Any);
add_parse_to_version_test("sdl3-any", 3, 0, 0, SdlReleaseType.Any);
add_parse_to_version_test("2-head", 2, 0, 0, SdlReleaseType.Head);
add_parse_to_version_test("sdl2-head", 2, 0, 0, SdlReleaseType.Head);
add_parse_to_version_test("SDL2-head", 2, 0, 0, SdlReleaseType.Head);
add_parse_to_version_test("3-head", 3, 0, 0, SdlReleaseType.Head);
add_parse_to_version_test("SDL3-head", 3, 0, 0, SdlReleaseType.Head);
add_parse_to_version_test("sdl3-head", 3, 0, 0, SdlReleaseType.Head);
add_parse_to_version_test("2-latest", 2, 0, 0, SdlReleaseType.Latest);
add_parse_to_version_test("sdl2-latest", 2, 0, 0, SdlReleaseType.Latest);
add_parse_to_version_test("SDL2-latest", 2, 0, 0, SdlReleaseType.Latest);
add_parse_to_version_test("3-latest", 3, 0, 0, SdlReleaseType.Latest);
add_parse_to_version_test("SDL3-latest", 3, 0, 0, SdlReleaseType.Latest);
add_parse_to_version_test("sdl3-latest", 3, 0, 0, SdlReleaseType.Latest);
add_parse_to_version_test("2.22.1", 2, 22, 1, SdlReleaseType.Exact);
add_parse_to_version_test("2.0.18", 2, 0, 18, SdlReleaseType.Exact);
add_parse_to_version_test("3.2.0", 3, 2, 0, SdlReleaseType.Exact);
add_parse_to_version_test("3.2.2", 3, 2, 2, SdlReleaseType.Exact);
add_parse_to_version_test("SDL2.22.1", 2, 22, 1, SdlReleaseType.Exact);
add_parse_to_version_test("SDL2.0.18", 2, 0, 18, SdlReleaseType.Exact);
add_parse_to_version_test("SDL3.2.0", 3, 2, 0, SdlReleaseType.Exact);
add_parse_to_version_test("SDL3.2.2", 3, 2, 2, SdlReleaseType.Exact);
add_invalid_version_test("f168f9c81326ad374aade49d1dc46f245b20d07a");
add_invalid_version_test("main");
add_invalid_version_test("SDL2");
});
describe("test finding a release", () => {
expect(SdlRelease.get_releases()).toBeTruthy();
test(`test finding exact 2.0.22 release`, () => {
const v = new SdlVersion({ major: 2, minor: 0, patch: 22 });
const rel = SdlRelease.find_release(v, true, SdlReleaseType.Exact);
expect(rel).not.toBeNull();
if (rel) {
expect(rel.version).toStrictEqual(v);
expect(rel.prerelease).toBeFalsy();
}
});
test(`test finding exact 2.26.1 release`, () => {
const v = new SdlVersion({ major: 2, minor: 26, patch: 1 });
const rel = SdlRelease.find_release(v, true, SdlReleaseType.Exact);
expect(rel).not.toBeNull();
if (rel) {
expect(rel.version).toStrictEqual(v);
expect(rel.prerelease).toBeFalsy();
}
});
test(`test finding latest 2 release`, () => {
const v = new SdlVersion({ major: 2, minor: 0, patch: 0 });
const rel = SdlRelease.find_release(v, true, SdlReleaseType.Latest);
expect(rel).not.toBeNull();
if (rel) {
// 2.26.5 exists, so the result must be > 2.26.4
expect(rel.version.compare(new SdlVersion("2.26.4"))).toBeLessThan(0);
expect(rel.version.major).toBe(2);
}
});
test(`test finding latest non-prerelease 2 release`, () => {
const v = new SdlVersion({ major: 2, minor: 0, patch: 0 });
const rel = SdlRelease.find_release(v, false, SdlReleaseType.Latest);
expect(rel).not.toBeNull();
if (rel) {
// 2.26.5 exists, so the result must be > 2.26.4
expect(rel.version.compare(new SdlVersion("2.26.4"))).toBeLessThan(0);
expect(rel.version.major).toBe(2);
expect(rel.prerelease).toBeFalsy();
}
});
test(`test finding any 2 release`, () => {
const v = new SdlVersion({ major: 2, minor: 0, patch: 0 });
const rel = SdlRelease.find_release(v, true, SdlReleaseType.Any);
expect(rel).not.toBeNull();
if (rel) {
// 2.26.5 exists, so the result must be > 2.26.4
expect(rel.version.major).toBe(2);
}
});
test(`test finding any 3 release`, () => {
const v = new SdlVersion({ major: 3, minor: 0, patch: 0 });
const rel = SdlRelease.find_release(v, true, SdlReleaseType.Any);
expect(rel).not.toBeNull();
if (rel) {
// FIXME: Only 3.0.0-prerelease exists at the moment
expect(rel.version.compare(new SdlVersion("3.0.0"))).toBeLessThanOrEqual(
0
);
expect(rel.version.major).toBe(3);
}
});
});