mirror of
https://github.com/iib0011/omni-tools.git
synced 2025-12-29 16:16:02 +00:00
62 lines
2.6 KiB
TypeScript
62 lines
2.6 KiB
TypeScript
|
|
import { expect, describe, it } from 'vitest';
|
||
|
|
import { duplicateList } from './service';
|
||
|
|
|
||
|
|
describe('duplicateList function', () => {
|
||
|
|
it('should duplicate elements correctly with symbol split', () => {
|
||
|
|
const input = "Hello World";
|
||
|
|
const result = duplicateList('symbol', ' ', ' ', input, true, false, 2);
|
||
|
|
expect(result).toBe("Hello World Hello World");
|
||
|
|
});
|
||
|
|
|
||
|
|
it('should duplicate elements correctly with regex split', () => {
|
||
|
|
const input = "Hello||World";
|
||
|
|
const result = duplicateList('regex', '\\|\\|', ' ', input, true, false, 2);
|
||
|
|
expect(result).toBe("Hello World Hello World");
|
||
|
|
});
|
||
|
|
|
||
|
|
it('should handle fractional duplication', () => {
|
||
|
|
const input = "Hello World";
|
||
|
|
const result = duplicateList('symbol', ' ', ' ', input, true, false, 1.5);
|
||
|
|
expect(result).toBe("Hello World Hello");
|
||
|
|
});
|
||
|
|
|
||
|
|
it('should handle reverse option correctly', () => {
|
||
|
|
const input = "Hello World";
|
||
|
|
const result = duplicateList('symbol', ' ', ' ', input, true, true, 2);
|
||
|
|
expect(result).toBe("Hello World World Hello");
|
||
|
|
});
|
||
|
|
|
||
|
|
it('should handle concatenate option correctly', () => {
|
||
|
|
const input = "Hello World";
|
||
|
|
const result = duplicateList('symbol', ' ', ' ', input, false, false, 2);
|
||
|
|
expect(result).toBe("Hello Hello World World");
|
||
|
|
});
|
||
|
|
|
||
|
|
it('should handle interweaving option correctly', () => {
|
||
|
|
const input = "Hello World";
|
||
|
|
const result = duplicateList('symbol', ' ', ' ', input, false, false, 2);
|
||
|
|
expect(result).toBe("Hello Hello World World");
|
||
|
|
});
|
||
|
|
|
||
|
|
it('should throw an error for negative copies', () => {
|
||
|
|
expect(() => duplicateList('symbol', ' ', ' ', "Hello World", true, false, -1)).toThrow("Number of copies cannot be negative");
|
||
|
|
});
|
||
|
|
|
||
|
|
it('should handle interweaving option correctly 2', () => {
|
||
|
|
const input = "je m'appelle king";
|
||
|
|
const result = duplicateList('symbol', ' ', ', ', input, false, true, 2.1);
|
||
|
|
expect(result).toBe("je, king, m'appelle, m'appelle, king, je");
|
||
|
|
});
|
||
|
|
|
||
|
|
it('should handle interweaving option correctly 3', () => {
|
||
|
|
const input = "je m'appelle king";
|
||
|
|
const result = duplicateList('symbol', ' ', ', ', input, false, true, 1);
|
||
|
|
expect(result).toBe("je, m'appelle, king");
|
||
|
|
});
|
||
|
|
|
||
|
|
it('should handle interweaving option correctly 3', () => {
|
||
|
|
const input = "je m'appelle king";
|
||
|
|
const result = duplicateList('symbol', ' ', ', ', input, true, true, 2.7);
|
||
|
|
expect(result).toBe("je, m'appelle, king, king, m'appelle, je, king, m'appelle");
|
||
|
|
});
|
||
|
|
});
|