| package slicesx | |
| import ( | |
| "testing" | |
| "github.com/stretchr/testify/assert" | |
| ) | |
| func TestDiff(t *testing.T) { | |
| tests := []struct { | |
| Name string | |
| Base []string | |
| New []string | |
| ExpectedAdditions []string | |
| ExpectedRemovals []string | |
| }{ | |
| { | |
| Name: "No change", | |
| Base: []string{ | |
| "diff-1", | |
| "diff-2", | |
| }, | |
| New: []string{ | |
| "diff-2", | |
| "diff-1", | |
| }, | |
| }, | |
| { | |
| Name: "Add new item", | |
| Base: []string{ | |
| "diff-1", | |
| "diff-2", | |
| "diff-3", | |
| }, | |
| New: []string{ | |
| "diff-2", | |
| "diff-1", | |
| }, | |
| ExpectedAdditions: []string{ | |
| "diff-3", | |
| }, | |
| }, | |
| { | |
| Name: "Remove old item", | |
| Base: []string{ | |
| "diff-2", | |
| }, | |
| New: []string{ | |
| "diff-2", | |
| "diff-1", | |
| }, | |
| ExpectedRemovals: []string{ | |
| "diff-1", | |
| }, | |
| }, | |
| { | |
| Name: "Add and remove items", | |
| Base: []string{ | |
| "diff-1", | |
| "diff-3", | |
| }, | |
| New: []string{ | |
| "diff-2", | |
| "diff-1", | |
| }, | |
| ExpectedAdditions: []string{ | |
| "diff-3", | |
| }, | |
| ExpectedRemovals: []string{ | |
| "diff-2", | |
| }, | |
| }, | |
| } | |
| for _, test := range tests { | |
| t.Run(test.Name, func(t *testing.T) { | |
| diff := NewDiff(test.Base, test.New) | |
| assert.ElementsMatch(t, test.ExpectedAdditions, diff.Additions()) | |
| assert.ElementsMatch(t, test.ExpectedRemovals, diff.Removals()) | |
| }) | |
| } | |
| } | |