mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-20 12:11:28 -07:00
55 lines
1.5 KiB
TypeScript
55 lines
1.5 KiB
TypeScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
|
|
import { applyControllerConfigUpdate } from './controller-config-update.js';
|
|
|
|
test('applyControllerConfigUpdate replaces binding descriptors instead of deep-merging them', () => {
|
|
const next = applyControllerConfigUpdate(
|
|
{
|
|
preferredGamepadId: 'pad-1',
|
|
bindings: {
|
|
toggleLookup: { kind: 'axis', axisIndex: 4, direction: 'positive' },
|
|
closeLookup: { kind: 'button', buttonIndex: 1 },
|
|
},
|
|
},
|
|
{
|
|
bindings: {
|
|
toggleLookup: { kind: 'button', buttonIndex: 11 },
|
|
},
|
|
},
|
|
);
|
|
|
|
assert.deepEqual(next.bindings?.toggleLookup, { kind: 'button', buttonIndex: 11 });
|
|
assert.deepEqual(next.bindings?.closeLookup, { kind: 'button', buttonIndex: 1 });
|
|
});
|
|
|
|
test('applyControllerConfigUpdate merges buttonIndices while replacing only updated binding leaves', () => {
|
|
const next = applyControllerConfigUpdate(
|
|
{
|
|
buttonIndices: {
|
|
select: 6,
|
|
buttonSouth: 0,
|
|
},
|
|
bindings: {
|
|
toggleLookup: { kind: 'button', buttonIndex: 0 },
|
|
closeLookup: { kind: 'button', buttonIndex: 1 },
|
|
},
|
|
},
|
|
{
|
|
buttonIndices: {
|
|
buttonSouth: 9,
|
|
},
|
|
bindings: {
|
|
closeLookup: { kind: 'none' },
|
|
},
|
|
},
|
|
);
|
|
|
|
assert.deepEqual(next.buttonIndices, {
|
|
select: 6,
|
|
buttonSouth: 9,
|
|
});
|
|
assert.deepEqual(next.bindings?.toggleLookup, { kind: 'button', buttonIndex: 0 });
|
|
assert.deepEqual(next.bindings?.closeLookup, { kind: 'none' });
|
|
});
|