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.
 
 
 
test-assignment-komoot/src/shared/collections.test.ts

74 lines
2.1 KiB

import t from 'tap';
import { reorderElements, toPairs } from './collections.js';
void t.test('reorderElements', (t) => {
const checkReordering = (
oldIndex: number,
newIndex: number,
expected: string,
) => {
t.matchOnlyStrict(
reorderElements('abcde'.split(''), oldIndex, newIndex),
expected.split(''),
);
};
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();
});
void t.test('toPairs', (t) => {
t.matchOnlyStrict(toPairs([]), []);
t.matchOnlyStrict(toPairs(['a']), []);
t.matchOnlyStrict(toPairs(['a', 'b']), [['a', 'b']]);
t.matchOnlyStrict(toPairs(['a', 'b', 'c']), [
['a', 'b'],
['b', 'c'],
]);
t.matchOnlyStrict(toPairs(['a', 'b', 'c', 'd']), [
['a', 'b'],
['b', 'c'],
['c', 'd'],
]);
t.matchOnlyStrict(toPairs([undefined, 'b', 'c']), [
[undefined, 'b'],
['b', 'c'],
]);
t.matchOnlyStrict(toPairs(['a', undefined, 'c']), [
['a', undefined],
[undefined, 'c'],
]);
t.matchOnlyStrict(toPairs(['a', 'b', undefined]), [
['a', 'b'],
['b', undefined],
]);
t.matchOnlyStrict(toPairs([undefined, undefined, undefined]), [
[undefined, undefined],
[undefined, undefined],
]);
t.end();
});