support semicolon-separated data when importing delimiter-separated values files / data (#458)

This commit is contained in:
MaysWind
2026-01-22 22:01:59 +08:00
parent 8b405e513f
commit b3b9d9293b
23 changed files with 54 additions and 0 deletions
@@ -29,6 +29,7 @@ import (
var supportedFileTypeSeparators = map[string]rune{
"custom_csv": ',',
"custom_tsv": '\t',
"custom_ssv": ';',
}
var supportedFileEncodings = map[string]encoding.Encoding{
@@ -17,10 +17,12 @@ import (
func TestIsDelimiterSeparatedValuesFileType(t *testing.T) {
assert.True(t, IsDelimiterSeparatedValuesFileType("custom_csv"))
assert.True(t, IsDelimiterSeparatedValuesFileType("custom_tsv"))
assert.True(t, IsDelimiterSeparatedValuesFileType("custom_ssv"))
assert.False(t, IsDelimiterSeparatedValuesFileType("dsv"))
assert.False(t, IsDelimiterSeparatedValuesFileType("csv"))
assert.False(t, IsDelimiterSeparatedValuesFileType("tsv"))
assert.False(t, IsDelimiterSeparatedValuesFileType("ssv"))
}
func TestCustomTransactionDataDsvFileParser_ParseDsvFileLines(t *testing.T) {
@@ -65,6 +67,26 @@ func TestCustomTransactionDataDsvFileParser_ParseDsvFileLines(t *testing.T) {
assert.Equal(t, "2024-09-01 23:59:59", allLines[1][0])
assert.Equal(t, "T", allLines[1][1])
assert.Equal(t, "0.05", allLines[1][2])
importer, err = CreateNewCustomTransactionDataDsvFileParser("custom_ssv", "utf-8")
assert.Nil(t, err)
allLines, err = importer.ParseDsvFileLines(context, []byte(
"2024-09-01 12:34:56;E;1.00\n"+
"2024-09-01 23:59:59;T;0.05"))
assert.Nil(t, err)
assert.Equal(t, 2, len(allLines))
assert.Equal(t, 3, len(allLines[0]))
assert.Equal(t, "2024-09-01 12:34:56", allLines[0][0])
assert.Equal(t, "E", allLines[0][1])
assert.Equal(t, "1.00", allLines[0][2])
assert.Equal(t, 3, len(allLines[1]))
assert.Equal(t, "2024-09-01 23:59:59", allLines[1][0])
assert.Equal(t, "T", allLines[1][1])
assert.Equal(t, "0.05", allLines[1][2])
}
func TestCustomTransactionDataDsvFileImporter_MinimumValidData(t *testing.T) {