mirror of
https://github.com/captbaritone/webamp.git
synced 2026-01-23 02:15:01 +00:00
Fixup winamp-eqf tests
This commit is contained in:
parent
f471cd1e69
commit
e641c61b64
7 changed files with 80 additions and 106 deletions
|
|
@ -8,6 +8,8 @@ module.exports = {
|
|||
"dist",
|
||||
// TODO: Add these as we can...
|
||||
"/packages/webamp/",
|
||||
"/packages/ani-cursor/",
|
||||
"/packages/winamp-eqf/",
|
||||
// TODO: Fix config import so that this can work.
|
||||
"/packages/webamp-modern/src/__tests__/integration*",
|
||||
],
|
||||
|
|
|
|||
|
|
@ -41,7 +41,9 @@
|
|||
},
|
||||
"jest": {
|
||||
"projects": [
|
||||
"config/jest.*.js"
|
||||
"config/jest.*.js",
|
||||
"packages/ani-cursor",
|
||||
"packages/winamp-eqf"
|
||||
]
|
||||
},
|
||||
"dependencies": {},
|
||||
|
|
|
|||
|
|
@ -1,94 +0,0 @@
|
|||
const { join } = require("path");
|
||||
const { readFileSync } = require("fs");
|
||||
const { parser, creator } = require("./");
|
||||
var bufferToArrayBuffer = require("buffer-to-arraybuffer");
|
||||
|
||||
// TODO: Abstract this into its own library.
|
||||
expect.extend({
|
||||
arrayBufferToEqual(received, argument) {
|
||||
if (received.byteLength !== argument.byteLength) {
|
||||
return {
|
||||
message: `ArrayBuffers do not match. Expected length ${received.byteLength} but got ${argument.byteLenth}`,
|
||||
pass: false,
|
||||
};
|
||||
}
|
||||
const a = new Uint8Array(received);
|
||||
const b = new Uint8Array(argument);
|
||||
for (var i = 0; i < a.length; i++) {
|
||||
if (a[i] !== b[i]) {
|
||||
return {
|
||||
message: `ArrayBuffers do not match. Expected ${a[i]} to equal ${b[i]} at index ${i}`,
|
||||
pass: false,
|
||||
};
|
||||
}
|
||||
}
|
||||
return {
|
||||
message: `ArrayBuffers are equal.`,
|
||||
pass: true,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
const fixtures = [
|
||||
// All bands max, preamp mid
|
||||
"max.EQF",
|
||||
// All bands min, preamp mid
|
||||
"min.EQF",
|
||||
// All bands mid, preamp mid
|
||||
"midline.EQF",
|
||||
// All bands mid, preamp max
|
||||
"preampMax.EQF",
|
||||
// All bands mid, preamp min
|
||||
"preampMin.EQF",
|
||||
"random.EQF",
|
||||
"winamp_sample.q1",
|
||||
"winamp.q1",
|
||||
];
|
||||
|
||||
describe("parser", () => {
|
||||
fixtures.forEach((fileName) => {
|
||||
const buffer = readFileSync(join(__dirname, "sample_data", fileName));
|
||||
const arrayBuffer = bufferToArrayBuffer(buffer);
|
||||
it(`can parse ${fileName}`, () => {
|
||||
const data = parser(arrayBuffer);
|
||||
expect(data).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe("creator", () => {
|
||||
fixtures.forEach((fileName) => {
|
||||
const buffer = readFileSync(join(__dirname, "sample_data", fileName));
|
||||
const arrayBuffer = bufferToArrayBuffer(buffer);
|
||||
const data = parser(arrayBuffer);
|
||||
it(`can create and parse ${fileName}`, () => {
|
||||
expect(parser(creator(data))).toEqual(data);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
const eqfFixtures = [
|
||||
// All bands max, preamp mid
|
||||
"max.EQF",
|
||||
// All bands min, preamp mid
|
||||
"min.EQF",
|
||||
// All bands mid, preamp mid
|
||||
"midline.EQF",
|
||||
// All bands mid, preamp max
|
||||
"preampMax.EQF",
|
||||
// All bands mid, preamp min
|
||||
"preampMin.EQF",
|
||||
"random.EQF",
|
||||
];
|
||||
|
||||
describe("creator", () => {
|
||||
eqfFixtures.forEach((fileName) => {
|
||||
const buffer = readFileSync(join(__dirname, "sample_data", fileName));
|
||||
const arrayBuffer = bufferToArrayBuffer(buffer);
|
||||
const data = parser(arrayBuffer);
|
||||
it(`can create ${fileName}`, () => {
|
||||
data.type = "foo";
|
||||
expect(creator(data)).arrayBufferToEqual(arrayBuffer);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -23,6 +23,7 @@
|
|||
"scripts": {
|
||||
"build": "tsc",
|
||||
"prepublishOnly": "npm run build",
|
||||
"test": "jest",
|
||||
"type-check": "tsc --noEmit"
|
||||
},
|
||||
"files": [
|
||||
|
|
@ -42,9 +43,23 @@
|
|||
"node": ">=14.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@swc/jest": "^0.2.24",
|
||||
"@types/jest": "^30.0.0",
|
||||
"@types/node": "^24.0.10",
|
||||
"buffer-to-arraybuffer": "0.0.4",
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"jest": {
|
||||
"modulePathIgnorePatterns": [
|
||||
"built"
|
||||
],
|
||||
"testEnvironment": "jsdom",
|
||||
"extensionsToTreatAsEsm": [".ts"],
|
||||
"moduleNameMapper": {
|
||||
"^(\\.{1,2}/.*)\\.js$": "$1"
|
||||
},
|
||||
"transform": {
|
||||
"^.+\\.(t|j)sx?$": ["@swc/jest"]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
23
packages/winamp-eqf/src/__snapshots__/index.test.ts.snap
Normal file
23
packages/winamp-eqf/src/__snapshots__/index.test.ts.snap
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`parser parsed file snapshot 1`] = `
|
||||
{
|
||||
"presets": [
|
||||
{
|
||||
"hz1000": 33,
|
||||
"hz12000": 15,
|
||||
"hz14000": 47,
|
||||
"hz16000": 33,
|
||||
"hz170": 35,
|
||||
"hz3000": 48,
|
||||
"hz310": 1,
|
||||
"hz60": 64,
|
||||
"hz600": 33,
|
||||
"hz6000": 33,
|
||||
"name": "Entry1",
|
||||
"preamp": 55,
|
||||
},
|
||||
],
|
||||
"type": "Winamp EQ library file v1.1",
|
||||
}
|
||||
`;
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
import { join } from "path";
|
||||
import { readFileSync } from "fs";
|
||||
import { parser, creator } from "../src";
|
||||
import * as bufferToArrayBuffer from "buffer-to-arraybuffer";
|
||||
import { parser, creator } from "./index.js";
|
||||
import bufferToArrayBuffer from "buffer-to-arraybuffer";
|
||||
|
||||
// TODO: Abstract this into its own library.
|
||||
declare global {
|
||||
|
|
@ -75,10 +75,31 @@ describe("creator", () => {
|
|||
fixtures.forEach((fileName) => {
|
||||
const buffer = readFileSync(join(__dirname, "../sample_data", fileName));
|
||||
const arrayBuffer = bufferToArrayBuffer(buffer);
|
||||
test(`round trip: ${fileName}`, () => {
|
||||
const data = parser(arrayBuffer);
|
||||
const recreated = creator(data);
|
||||
expect(recreated).arrayBufferToEqual(arrayBuffer);
|
||||
const data = parser(arrayBuffer);
|
||||
test(`functional round trip: ${fileName}`, () => {
|
||||
// Test that parsing the created data returns the same logical data
|
||||
expect(parser(creator(data))).toEqual(data);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Only test byte-for-byte equality on .EQF files, not .q1 files
|
||||
const eqfFixtures = [
|
||||
"max.EQF",
|
||||
"min.EQF",
|
||||
"midline.EQF",
|
||||
"preampMax.EQF",
|
||||
"preampMin.EQF",
|
||||
"random.EQF",
|
||||
];
|
||||
|
||||
describe("creator byte-for-byte", () => {
|
||||
eqfFixtures.forEach((fileName) => {
|
||||
const buffer = readFileSync(join(__dirname, "../sample_data", fileName));
|
||||
const arrayBuffer = bufferToArrayBuffer(buffer);
|
||||
const data = parser(arrayBuffer);
|
||||
test(`byte-for-byte round trip: ${fileName}`, () => {
|
||||
expect(creator(data)).arrayBufferToEqual(arrayBuffer);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -90,12 +111,14 @@ describe("integration", () => {
|
|||
);
|
||||
const arrayBuffer = bufferToArrayBuffer(buffer);
|
||||
const data = parser(arrayBuffer);
|
||||
expect(data.presets).toHaveLength(3);
|
||||
expect(data.presets[0].name).toEqual("Classical");
|
||||
expect(data.presets[1].name).toEqual("Club");
|
||||
expect(data.presets[2].name).toEqual("Dance");
|
||||
expect(data.presets).toHaveLength(4);
|
||||
expect(data.presets[0].name).toEqual("Normal");
|
||||
expect(data.presets[1].name).toEqual("Clear");
|
||||
expect(data.presets[2].name).toEqual("Alex");
|
||||
expect(data.presets[3].name).toEqual("Tare");
|
||||
|
||||
// Functional round-trip test for .q1 files (not byte-for-byte)
|
||||
const recreated = creator(data);
|
||||
expect(recreated).arrayBufferToEqual(arrayBuffer);
|
||||
expect(parser(recreated)).toEqual(data);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
3
pnpm-lock.yaml
generated
3
pnpm-lock.yaml
generated
|
|
@ -602,6 +602,9 @@ importers:
|
|||
|
||||
packages/winamp-eqf:
|
||||
devDependencies:
|
||||
'@swc/jest':
|
||||
specifier: ^0.2.24
|
||||
version: 0.2.36(@swc/core@1.4.12(@swc/helpers@0.5.15))
|
||||
'@types/jest':
|
||||
specifier: ^30.0.0
|
||||
version: 30.0.0
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue