mirror of
https://github.com/iib0011/omni-tools.git
synced 2025-09-21 06:59:33 +02:00
feat: transpose-CSV
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
import { expect, describe, it } from 'vitest';
|
||||
import { transposeCSV } from './service';
|
||||
import { InitialValuesType } from './types';
|
||||
|
||||
describe('transposeCsv', () => {
|
||||
it('should transpose a simple CSV', () => {
|
||||
const options: InitialValuesType = {
|
||||
separator: ',',
|
||||
commentCharacter: '#',
|
||||
customFill: false,
|
||||
customFillValue: 'x',
|
||||
quoteChar: '"'
|
||||
};
|
||||
const input = 'a,b,c\n1,2,3';
|
||||
const expectedOutput = 'a,1\nb,2\nc,3';
|
||||
const result = transposeCSV(input, options);
|
||||
expect(result).toEqual(expectedOutput);
|
||||
});
|
||||
|
||||
it('should handle an empty CSV', () => {
|
||||
const options: InitialValuesType = {
|
||||
separator: ',',
|
||||
commentCharacter: '#',
|
||||
customFill: false,
|
||||
customFillValue: 'x',
|
||||
quoteChar: '"'
|
||||
};
|
||||
const input = '';
|
||||
const expectedOutput = '';
|
||||
const result = transposeCSV(input, options);
|
||||
expect(result).toEqual(expectedOutput);
|
||||
});
|
||||
|
||||
it('should handle a single row CSV', () => {
|
||||
const options: InitialValuesType = {
|
||||
separator: ',',
|
||||
commentCharacter: '#',
|
||||
customFill: false,
|
||||
customFillValue: 'x',
|
||||
quoteChar: '"'
|
||||
};
|
||||
const input = 'a,b,c';
|
||||
const expectedOutput = 'a\nb\nc';
|
||||
const result = transposeCSV(input, options);
|
||||
expect(result).toEqual(expectedOutput);
|
||||
});
|
||||
|
||||
it('should handle a single column CSV', () => {
|
||||
const options: InitialValuesType = {
|
||||
separator: ',',
|
||||
commentCharacter: '#',
|
||||
customFill: false,
|
||||
customFillValue: 'x',
|
||||
quoteChar: '"'
|
||||
};
|
||||
const input = 'a\nb\nc';
|
||||
const expectedOutput = 'a,b,c';
|
||||
const result = transposeCSV(input, options);
|
||||
expect(result).toEqual(expectedOutput);
|
||||
});
|
||||
|
||||
it('should handle uneven rows in the CSV', () => {
|
||||
const options: InitialValuesType = {
|
||||
separator: ',',
|
||||
commentCharacter: '#',
|
||||
customFill: true,
|
||||
customFillValue: 'x',
|
||||
quoteChar: '"'
|
||||
};
|
||||
const input = 'a,b\n1,2,3';
|
||||
const expectedOutput = 'a,1\nb,2\nx,3';
|
||||
const result = transposeCSV(input, options);
|
||||
expect(result).toEqual(expectedOutput);
|
||||
});
|
||||
|
||||
it('should skip comment in the CSV', () => {
|
||||
const options: InitialValuesType = {
|
||||
separator: ',',
|
||||
commentCharacter: '#',
|
||||
customFill: true,
|
||||
customFillValue: 'x',
|
||||
quoteChar: '"'
|
||||
};
|
||||
const input = 'a,b\n1,2\n#c,3\nd,4';
|
||||
const expectedOutput = 'a,1,d\nb,2,4';
|
||||
const result = transposeCSV(input, options);
|
||||
expect(result).toEqual(expectedOutput);
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user