...
This commit is contained in:
80
lib/biz/spreadsheet/sheet_export_csv_test.v
Normal file
80
lib/biz/spreadsheet/sheet_export_csv_test.v
Normal file
@@ -0,0 +1,80 @@
|
||||
module spreadsheet
|
||||
|
||||
fn test_sheet_export_csv() {
|
||||
// Create a test sheet
|
||||
mut sheet := sheet_new(name: 'test_sheet', nrcol: 12)!
|
||||
|
||||
// Add some test rows with data
|
||||
mut row1 := sheet.row_new(
|
||||
name: 'row1',
|
||||
descr: 'First test row',
|
||||
tags: 'test,row,first'
|
||||
)!
|
||||
|
||||
mut row2 := sheet.row_new(
|
||||
name: 'row2',
|
||||
descr: 'Second test row with | pipe character',
|
||||
tags: 'test,row,second'
|
||||
)!
|
||||
|
||||
// Set some cell values
|
||||
row1.cells[0].val = 10.5
|
||||
row1.cells[0].empty = false
|
||||
row1.cells[1].val = 20.75
|
||||
row1.cells[1].empty = false
|
||||
row1.cells[2].val = 1500
|
||||
row1.cells[2].empty = false
|
||||
row1.cells[3].val = 0.0
|
||||
row1.cells[3].empty = false
|
||||
|
||||
row2.cells[0].val = 5.25
|
||||
row2.cells[0].empty = false
|
||||
row2.cells[1].val = 0.0
|
||||
row2.cells[1].empty = false
|
||||
row2.cells[2].val = 2500
|
||||
row2.cells[2].empty = false
|
||||
row2.cells[3].val = 3.333
|
||||
row2.cells[3].empty = false
|
||||
|
||||
// Test default export with pipe separator
|
||||
csv_output := sheet.export_csv(path: '')!
|
||||
lines := csv_output.split('\n')
|
||||
|
||||
// Verify header line
|
||||
assert lines.len > 0
|
||||
assert lines[0].starts_with('Name|Description|AggregateType|Tags|Subgroup|')
|
||||
|
||||
// Verify data lines
|
||||
assert lines.len >= 3 // Header + 2 data rows
|
||||
assert lines[1].starts_with('row1|First test row|sum|test,row,first|')
|
||||
|
||||
// Check for the cell values in the output
|
||||
assert lines[1].contains('|10.5|')
|
||||
assert lines[1].contains('|20.75|')
|
||||
assert lines[1].contains('|1500|')
|
||||
|
||||
// Test with custom separator and include_empty option
|
||||
csv_output2 := sheet.export_csv(
|
||||
path: '',
|
||||
separator: ',',
|
||||
include_empty: true
|
||||
)!
|
||||
lines2 := csv_output2.split('\n')
|
||||
|
||||
// Verify that empty cells are included as '0'
|
||||
assert lines2[1].contains('0')
|
||||
|
||||
// When using comma separator, the comma in tags should be quoted, not the pipe character
|
||||
assert lines2[2].contains('Second test row with | pipe character')
|
||||
assert lines2[2].contains('"test,row,second"')
|
||||
|
||||
// Test with different separator
|
||||
csv_output3 := sheet.export_csv(
|
||||
path: '',
|
||||
separator: ';'
|
||||
)!
|
||||
lines3 := csv_output3.split('\n')
|
||||
|
||||
// Verify separator is used correctly
|
||||
assert lines3[0].starts_with('Name;Description;AggregateType;Tags;Subgroup;')
|
||||
}
|
||||
Reference in New Issue
Block a user