141 lines
3.3 KiB
Go
141 lines
3.3 KiB
Go
package datatable
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestCreateSubBasicTable_WithValidInput(t *testing.T) {
|
|
columns := []string{"Col1", "Col2", "Col3"}
|
|
rows := []*testBasicDataTableRow{
|
|
{
|
|
rowId: "1",
|
|
rowColumns: []string{"A1", "B1", "C1"},
|
|
},
|
|
{
|
|
rowId: "2",
|
|
rowColumns: []string{"A2", "B2", "C2"},
|
|
},
|
|
{
|
|
rowId: "3",
|
|
rowColumns: []string{"A3", "B3", "C3"},
|
|
},
|
|
}
|
|
|
|
basicDataTable := &testBasicDataTable{
|
|
headerColumns: columns,
|
|
rows: rows,
|
|
}
|
|
|
|
subTable := CreateSubBasicTable(basicDataTable, 1, 2)
|
|
assert.Equal(t, 1, subTable.DataRowCount())
|
|
assert.Equal(t, columns, subTable.HeaderColumnNames())
|
|
}
|
|
|
|
func TestCreateSubBasicTable_WithInvalidInput(t *testing.T) {
|
|
columns := []string{"Col1", "Col2", "Col3"}
|
|
rows := []*testBasicDataTableRow{
|
|
{
|
|
rowId: "1",
|
|
rowColumns: []string{"A1", "B1", "C1"},
|
|
},
|
|
{
|
|
rowId: "2",
|
|
rowColumns: []string{"A2", "B2", "C2"},
|
|
},
|
|
}
|
|
|
|
basicDataTable := &testBasicDataTable{
|
|
headerColumns: columns,
|
|
rows: rows,
|
|
}
|
|
|
|
subTable := CreateSubBasicTable(basicDataTable, -1, 2)
|
|
assert.Equal(t, 0, subTable.fromIndex)
|
|
assert.Equal(t, 2, subTable.toIndex)
|
|
|
|
subTable = CreateSubBasicTable(basicDataTable, 5, 2)
|
|
assert.Equal(t, 2, subTable.fromIndex)
|
|
assert.Equal(t, 2, subTable.toIndex)
|
|
|
|
subTable = CreateSubBasicTable(basicDataTable, 0, 5)
|
|
assert.Equal(t, 0, subTable.fromIndex)
|
|
assert.Equal(t, 2, subTable.toIndex)
|
|
|
|
subTable = CreateSubBasicTable(basicDataTable, 2, 1)
|
|
assert.Equal(t, 2, subTable.fromIndex)
|
|
assert.Equal(t, 2, subTable.toIndex)
|
|
}
|
|
|
|
func TestSubBasicDataTable_DataRowIterator(t *testing.T) {
|
|
columns := []string{"Col1", "Col2", "Col3"}
|
|
rows := []*testBasicDataTableRow{
|
|
{
|
|
rowId: "1",
|
|
rowColumns: []string{"A1", "B1", "C1"},
|
|
},
|
|
{
|
|
rowId: "2",
|
|
rowColumns: []string{"A2", "B2", "C2"},
|
|
},
|
|
{
|
|
rowId: "3",
|
|
rowColumns: []string{"A3", "B3", "C3"},
|
|
},
|
|
}
|
|
|
|
basicDataTable := &testBasicDataTable{
|
|
headerColumns: columns,
|
|
rows: rows,
|
|
}
|
|
|
|
subTable := CreateSubBasicTable(basicDataTable, 1, 3)
|
|
iterator := subTable.DataRowIterator()
|
|
|
|
assert.True(t, iterator.HasNext())
|
|
firstRow := iterator.Next()
|
|
assert.NotNil(t, firstRow)
|
|
assert.Equal(t, "2", iterator.CurrentRowId())
|
|
assert.Equal(t, "A2", firstRow.GetData(0))
|
|
assert.Equal(t, "B2", firstRow.GetData(1))
|
|
assert.Equal(t, "C2", firstRow.GetData(2))
|
|
|
|
assert.True(t, iterator.HasNext())
|
|
secondRow := iterator.Next()
|
|
assert.NotNil(t, secondRow)
|
|
assert.Equal(t, "3", iterator.CurrentRowId())
|
|
assert.Equal(t, "A3", secondRow.GetData(0))
|
|
assert.Equal(t, "B3", secondRow.GetData(1))
|
|
assert.Equal(t, "C3", secondRow.GetData(2))
|
|
|
|
assert.False(t, iterator.HasNext())
|
|
assert.Nil(t, iterator.Next())
|
|
}
|
|
|
|
func TestSubBasicDataTable_EmptyDataRange(t *testing.T) {
|
|
columns := []string{"Col1", "Col2", "Col3"}
|
|
rows := []*testBasicDataTableRow{
|
|
{
|
|
rowId: "1",
|
|
rowColumns: []string{"A1", "B1", "C1"},
|
|
},
|
|
{
|
|
rowId: "2",
|
|
rowColumns: []string{"A2", "B2", "C2"},
|
|
},
|
|
}
|
|
|
|
basicDataTable := &testBasicDataTable{
|
|
headerColumns: columns,
|
|
rows: rows,
|
|
}
|
|
|
|
subTable := CreateSubBasicTable(basicDataTable, 1, 1)
|
|
assert.Equal(t, 0, subTable.DataRowCount())
|
|
|
|
iterator := subTable.DataRowIterator()
|
|
assert.False(t, iterator.HasNext())
|
|
assert.Nil(t, iterator.Next())
|
|
}
|