UNPKG

als-store

Version:

Library for streamlined file management and advanced data caching, featuring intelligent file searching, dynamic cache control, and flexible file operations

80 lines (66 loc) 2.83 kB
const { nameToParams, paramsToName, encode, decode } = require('../lib/name-params') const assert = require('node:assert') const { describe, it } = require('node:test') describe('Filename encoding and decoding', () => { // Тесты для encode it('encode replaces invalid characters', () => { assert(encode('age>20') === 'age_x3E20'); assert(encode('file:name') === 'file_x3Aname'); }); it('encode replaces reserved names', () => { const r = new RegExp(/^_r/) assert(r.test(encode('con'))) assert(r.test(encode('lpt1'))) }); it('decode restores invalid characters', () => { assert(decode('age_x3E20') === 'age>20'); assert(decode('file_x3Aname') === 'file:name'); }); it('decode restores reserved names', () => { const encodedCon = encode('con'); const encodedLpt1 = encode('lpt1'); assert(decode(encodedCon) === 'con'); assert(decode(encodedLpt1) === 'lpt1'); }); // Тестирование обратимости it('encode and decode are reversible', () => { const originalString = 'test>file:con'; const encodedString = encode(originalString); assert(decode(encodedString) === originalString); }); }); describe('Filename encoding and decoding edge cases', () => { it('correctly handles empty strings', () => { assert(encode('') === ''); assert(decode('') === undefined); }); it('leaves strings without invalid characters unchanged', () => { const validString = 'validFilename123'; assert(encode(validString) === validString); assert(decode(validString) === validString); }); it('handles invalid characters in various positions', () => { assert(encode('>age') === '_x3Eage'); assert(encode('age>') === 'age_x3E'); assert(encode('a>ge') === 'a_x3Ege'); }); it('processes multiple consecutive invalid characters', () => { assert(encode('>>') === '_x3E_x3E'); assert(decode('_x3E_x3E') === '>>'); }); }); describe('paramsToName and nameToParams', () => { it('dots in a middle', () => { assert(paramsToName(['value1',undefined,'value2',undefined,'value3']) === 'value1..value2..value3') assert.deepEqual(nameToParams('value1..value2..value3'),['value1',undefined,'value2',undefined,'value3']) }) it('dots at the end', () => { assert(paramsToName(['value1',undefined,'value2',undefined,undefined]) === 'value1..value2') assert.deepEqual(nameToParams('value1..value2'),['value1',undefined,'value2']) }) it('empty string',() => { assert.throws(() => paramsToName([])) assert(paramsToName([undefined]) === '[^]') assert.deepEqual(nameToParams('[^]'),[undefined]) }) })