parent
79f0b1a50b
commit
befb6bea22
7 changed files with 355 additions and 140 deletions
|
@ -19,9 +19,9 @@ func TestCSVDiff(t *testing.T) {
|
|||
diff string
|
||||
base string
|
||||
head string
|
||||
cells [][2]TableDiffCellType
|
||||
cells [][]TableDiffCellType
|
||||
}{
|
||||
// case 0
|
||||
// case 0 - initial commit of a csv
|
||||
{
|
||||
diff: `diff --git a/unittest.csv b/unittest.csv
|
||||
--- a/unittest.csv
|
||||
|
@ -29,11 +29,14 @@ func TestCSVDiff(t *testing.T) {
|
|||
@@ -0,0 +1,2 @@
|
||||
+col1,col2
|
||||
+a,a`,
|
||||
base: "",
|
||||
head: "col1,col2\na,a",
|
||||
cells: [][2]TableDiffCellType{{TableDiffCellAdd, TableDiffCellAdd}, {TableDiffCellAdd, TableDiffCellAdd}},
|
||||
base: "",
|
||||
head: `col1,col2
|
||||
a,a`,
|
||||
cells: [][]TableDiffCellType{
|
||||
{TableDiffCellAdd, TableDiffCellAdd},
|
||||
{TableDiffCellAdd, TableDiffCellAdd}},
|
||||
},
|
||||
// case 1
|
||||
// case 1 - adding 1 row at end
|
||||
{
|
||||
diff: `diff --git a/unittest.csv b/unittest.csv
|
||||
--- a/unittest.csv
|
||||
|
@ -43,11 +46,17 @@ func TestCSVDiff(t *testing.T) {
|
|||
-a,a
|
||||
+a,a
|
||||
+b,b`,
|
||||
base: "col1,col2\na,a",
|
||||
head: "col1,col2\na,a\nb,b",
|
||||
cells: [][2]TableDiffCellType{{TableDiffCellEqual, TableDiffCellEqual}, {TableDiffCellEqual, TableDiffCellEqual}, {TableDiffCellAdd, TableDiffCellAdd}},
|
||||
base: `col1,col2
|
||||
a,a`,
|
||||
head: `col1,col2
|
||||
a,a
|
||||
b,b`,
|
||||
cells: [][]TableDiffCellType{
|
||||
{TableDiffCellUnchanged, TableDiffCellUnchanged}, {TableDiffCellUnchanged, TableDiffCellUnchanged},
|
||||
{TableDiffCellAdd, TableDiffCellAdd},
|
||||
},
|
||||
},
|
||||
// case 2
|
||||
// case 2 - row deleted
|
||||
{
|
||||
diff: `diff --git a/unittest.csv b/unittest.csv
|
||||
--- a/unittest.csv
|
||||
|
@ -56,11 +65,17 @@ func TestCSVDiff(t *testing.T) {
|
|||
col1,col2
|
||||
-a,a
|
||||
b,b`,
|
||||
base: "col1,col2\na,a\nb,b",
|
||||
head: "col1,col2\nb,b",
|
||||
cells: [][2]TableDiffCellType{{TableDiffCellEqual, TableDiffCellEqual}, {TableDiffCellDel, TableDiffCellDel}, {TableDiffCellEqual, TableDiffCellEqual}},
|
||||
base: `col1,col2
|
||||
a,a
|
||||
b,b`,
|
||||
head: `col1,col2
|
||||
b,b`,
|
||||
cells: [][]TableDiffCellType{
|
||||
{TableDiffCellUnchanged, TableDiffCellUnchanged}, {TableDiffCellDel, TableDiffCellDel},
|
||||
{TableDiffCellUnchanged, TableDiffCellUnchanged},
|
||||
},
|
||||
},
|
||||
// case 3
|
||||
// case 3 - row changed
|
||||
{
|
||||
diff: `diff --git a/unittest.csv b/unittest.csv
|
||||
--- a/unittest.csv
|
||||
|
@ -69,11 +84,16 @@ func TestCSVDiff(t *testing.T) {
|
|||
col1,col2
|
||||
-b,b
|
||||
+b,c`,
|
||||
base: "col1,col2\nb,b",
|
||||
head: "col1,col2\nb,c",
|
||||
cells: [][2]TableDiffCellType{{TableDiffCellEqual, TableDiffCellEqual}, {TableDiffCellEqual, TableDiffCellChanged}},
|
||||
base: `col1,col2
|
||||
b,b`,
|
||||
head: `col1,col2
|
||||
b,c`,
|
||||
cells: [][]TableDiffCellType{
|
||||
{TableDiffCellUnchanged, TableDiffCellUnchanged},
|
||||
{TableDiffCellUnchanged, TableDiffCellChanged},
|
||||
},
|
||||
},
|
||||
// case 4
|
||||
// case 4 - all deleted
|
||||
{
|
||||
diff: `diff --git a/unittest.csv b/unittest.csv
|
||||
--- a/unittest.csv
|
||||
|
@ -81,9 +101,88 @@ func TestCSVDiff(t *testing.T) {
|
|||
@@ -1,2 +0,0 @@
|
||||
-col1,col2
|
||||
-b,c`,
|
||||
base: "col1,col2\nb,c",
|
||||
head: "",
|
||||
cells: [][2]TableDiffCellType{{TableDiffCellDel, TableDiffCellDel}, {TableDiffCellDel, TableDiffCellDel}},
|
||||
base: `col1,col2
|
||||
b,c`,
|
||||
head: "",
|
||||
cells: [][]TableDiffCellType{
|
||||
{TableDiffCellDel, TableDiffCellDel},
|
||||
{TableDiffCellDel, TableDiffCellDel},
|
||||
},
|
||||
},
|
||||
// case 5 - renames first column
|
||||
{
|
||||
diff: `diff --git a/unittest.csv b/unittest.csv
|
||||
--- a/unittest.csv
|
||||
+++ b/unittest.csv
|
||||
@@ -1,3 +1,3 @@
|
||||
-col1,col2,col3
|
||||
+cola,col2,col3
|
||||
a,b,c`,
|
||||
base: `col1,col2,col3
|
||||
a,b,c`,
|
||||
head: `cola,col2,col3
|
||||
a,b,c`,
|
||||
cells: [][]TableDiffCellType{
|
||||
{TableDiffCellDel, TableDiffCellAdd, TableDiffCellUnchanged, TableDiffCellUnchanged},
|
||||
{TableDiffCellDel, TableDiffCellAdd, TableDiffCellUnchanged, TableDiffCellUnchanged},
|
||||
},
|
||||
},
|
||||
// case 6 - inserts a column after first, deletes last column
|
||||
{
|
||||
diff: `diff --git a/unittest.csv b/unittest.csv
|
||||
--- a/unittest.csv
|
||||
+++ b/unittest.csv
|
||||
@@ -1,2 +1,2 @@
|
||||
-col1,col2,col3
|
||||
-a,b,c
|
||||
+col1,col1a,col2
|
||||
+a,d,b`,
|
||||
base: `col1,col2,col3
|
||||
a,b,c`,
|
||||
head: `col1,col1a,col2
|
||||
a,d,b`,
|
||||
cells: [][]TableDiffCellType{
|
||||
{TableDiffCellUnchanged, TableDiffCellAdd, TableDiffCellDel, TableDiffCellMovedUnchanged},
|
||||
{TableDiffCellUnchanged, TableDiffCellAdd, TableDiffCellDel, TableDiffCellMovedUnchanged},
|
||||
},
|
||||
},
|
||||
// case 7 - deletes first column, inserts column after last
|
||||
{
|
||||
diff: `diff --git a/unittest.csv b/unittest.csv
|
||||
--- a/unittest.csv
|
||||
+++ b/unittest.csv
|
||||
@@ -1,2 +1,2 @@
|
||||
-col1,col2,col3
|
||||
-a,b,c
|
||||
+col2,col3,col4
|
||||
+b,c,d`,
|
||||
base: `col1,col2,col3
|
||||
a,b,c`,
|
||||
head: `col2,col3,col4
|
||||
b,c,d`,
|
||||
cells: [][]TableDiffCellType{
|
||||
{TableDiffCellDel, TableDiffCellUnchanged, TableDiffCellUnchanged, TableDiffCellAdd},
|
||||
{TableDiffCellDel, TableDiffCellUnchanged, TableDiffCellUnchanged, TableDiffCellAdd},
|
||||
},
|
||||
},
|
||||
// case 8 - two columns deleted, 2 added
|
||||
{
|
||||
diff: `diff --git a/unittest.csv b/unittest.csv
|
||||
--- a/unittest.csv
|
||||
+++ b/unittest.csv
|
||||
@@ -1,2 +1,2 @@
|
||||
-col1,col2,col
|
||||
-a,b,c
|
||||
+col3,col4,col5
|
||||
+c,d,e`,
|
||||
base: `col1,col2,col3
|
||||
a,b,c`,
|
||||
head: `col3,col4,col5
|
||||
c,d,e`,
|
||||
cells: [][]TableDiffCellType{
|
||||
{TableDiffCellDel, TableDiffCellMovedUnchanged, TableDiffCellDel, TableDiffCellAdd, TableDiffCellAdd},
|
||||
{TableDiffCellDel, TableDiffCellMovedUnchanged, TableDiffCellDel, TableDiffCellAdd, TableDiffCellAdd},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -116,7 +215,7 @@ func TestCSVDiff(t *testing.T) {
|
|||
assert.Len(t, section.Rows, len(c.cells), "case %d: should be %d rows", n, len(c.cells))
|
||||
|
||||
for i, row := range section.Rows {
|
||||
assert.Len(t, row.Cells, 2, "case %d: row %d should have two cells", n, i)
|
||||
assert.Len(t, row.Cells, len(c.cells[i]), "case %d: row %d should have %d cells", n, i, len(c.cells[i]))
|
||||
for j, cell := range row.Cells {
|
||||
assert.Equal(t, c.cells[i][j], cell.Type, "case %d: row %d cell %d should be equal", n, i, j)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue