Small preact-based (like React.js) project
https://inga-lovinde.github.io/static/komoot-demo/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.5 KiB
49 lines
1.5 KiB
import t from 'tap';
|
|
import { reorderElements } from './collections.js';
|
|
|
|
void t.test('reorderElements', (t) => {
|
|
const checkReordering = (
|
|
oldIndex: number,
|
|
newIndex: number,
|
|
expected: string,
|
|
) => {
|
|
t.match(
|
|
reorderElements('abcde'.split(''), oldIndex, newIndex),
|
|
expected.split(''),
|
|
);
|
|
};
|
|
|
|
checkReordering(0, -1, 'bcde');
|
|
checkReordering(1, -1, 'acde');
|
|
checkReordering(2, -1, 'abde');
|
|
checkReordering(3, -1, 'abce');
|
|
checkReordering(4, -1, 'abcd');
|
|
checkReordering(5, -1, 'abcde');
|
|
|
|
checkReordering(0, 0, 'abcde');
|
|
checkReordering(0, 1, 'bacde');
|
|
checkReordering(0, 2, 'bcade');
|
|
checkReordering(0, 3, 'bcdae');
|
|
checkReordering(0, 4, 'bcdea');
|
|
checkReordering(1, 0, 'bacde');
|
|
checkReordering(1, 1, 'abcde');
|
|
checkReordering(1, 2, 'acbde');
|
|
checkReordering(1, 3, 'acdbe');
|
|
checkReordering(1, 4, 'acdeb');
|
|
checkReordering(2, 0, 'cabde');
|
|
checkReordering(2, 1, 'acbde');
|
|
checkReordering(2, 2, 'abcde');
|
|
checkReordering(2, 3, 'abdce');
|
|
checkReordering(2, 4, 'abdec');
|
|
checkReordering(3, 0, 'dabce');
|
|
checkReordering(3, 1, 'adbce');
|
|
checkReordering(3, 2, 'abdce');
|
|
checkReordering(3, 3, 'abcde');
|
|
checkReordering(3, 4, 'abced');
|
|
checkReordering(4, 0, 'eabcd');
|
|
checkReordering(4, 1, 'aebcd');
|
|
checkReordering(4, 2, 'abecd');
|
|
checkReordering(4, 3, 'abced');
|
|
checkReordering(4, 4, 'abcde');
|
|
t.end();
|
|
});
|
|
|