web-player: add Vitest, unit tests and pure queue operations
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { findConflict, genreHue } from './genres';
|
||||
|
||||
describe('genreHue', () => {
|
||||
it('is stable and within 0-359', () => {
|
||||
for (const genre of ['rock', 'something-unknown', 'ñandú']) {
|
||||
const hue = genreHue(genre);
|
||||
expect(hue).toBe(genreHue(genre));
|
||||
expect(hue).toBeGreaterThanOrEqual(0);
|
||||
expect(hue).toBeLessThan(360);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
describe('findConflict', () => {
|
||||
const options = [
|
||||
{ genre: 'a', incompatibleWith: ['b'] },
|
||||
{ genre: 'b', incompatibleWith: ['a'] },
|
||||
{ genre: 'c', incompatibleWith: [] }
|
||||
];
|
||||
it('returns the first incompatible pair', () => {
|
||||
expect(findConflict(['c', 'a', 'b'], options)).toEqual(['a', 'b']);
|
||||
});
|
||||
it('returns undefined when compatible or unknown', () => {
|
||||
expect(findConflict(['a', 'c'], options)).toBeUndefined();
|
||||
expect(findConflict(['x', 'y'], options)).toBeUndefined();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user