diff --git a/internal/exp/diffview/diffview_test.go b/internal/exp/diffview/diffview_test.go index ebfa2f99f808c29b4393ae1e6214add8734cb335..7d5abeab92444c32822642decb87108310fb826a 100644 --- a/internal/exp/diffview/diffview_test.go +++ b/internal/exp/diffview/diffview_test.go @@ -26,84 +26,83 @@ var TestNarrowBefore string //go:embed testdata/TestNarrow.after var TestNarrowAfter string -func TestDefault(t *testing.T) { - dv := diffview.New(). - Before("main.go", TestDefaultBefore). - After("main.go", TestDefaultAfter) - - t.Run("LightMode", func(t *testing.T) { - dv = dv.Style(diffview.DefaultLightStyle) - golden.RequireEqual(t, []byte(dv.String())) - }) - - t.Run("DarkMode", func(t *testing.T) { - dv = dv.Style(diffview.DefaultDarkStyle) - golden.RequireEqual(t, []byte(dv.String())) - }) -} - -func TestNoLineNumbers(t *testing.T) { - dv := diffview.New(). - Before("main.go", TestDefaultBefore). - After("main.go", TestDefaultAfter). - LineNumbers(false) - - t.Run("LightMode", func(t *testing.T) { - dv = dv.Style(diffview.DefaultLightStyle) - golden.RequireEqual(t, []byte(dv.String())) - }) - - t.Run("DarkMode", func(t *testing.T) { - dv = dv.Style(diffview.DefaultDarkStyle) - golden.RequireEqual(t, []byte(dv.String())) - }) -} - -func TestMultipleHunks(t *testing.T) { - dv := diffview.New(). - Before("main.go", TestMultipleHunksBefore). - After("main.go", TestMultipleHunksAfter) - - t.Run("LightMode", func(t *testing.T) { - dv = dv.Style(diffview.DefaultLightStyle) - golden.RequireEqual(t, []byte(dv.String())) - }) - - t.Run("DarkMode", func(t *testing.T) { - dv = dv.Style(diffview.DefaultDarkStyle) - golden.RequireEqual(t, []byte(dv.String())) - }) -} - -func TestCustomContextLines(t *testing.T) { - dv := diffview.New(). - Before("main.go", TestMultipleHunksBefore). - After("main.go", TestMultipleHunksAfter). - ContextLines(4) - - t.Run("LightMode", func(t *testing.T) { - dv = dv.Style(diffview.DefaultLightStyle) - golden.RequireEqual(t, []byte(dv.String())) - }) - - t.Run("DarkMode", func(t *testing.T) { - dv = dv.Style(diffview.DefaultDarkStyle) - golden.RequireEqual(t, []byte(dv.String())) - }) -} - -func TestNarrow(t *testing.T) { - dv := diffview.New(). - Before("text.txt", TestNarrowBefore). - After("text.txt", TestNarrowAfter) +type ( + TestFunc func(dv *diffview.DiffView) *diffview.DiffView + TestFuncs map[string]TestFunc +) - t.Run("LightMode", func(t *testing.T) { - dv = dv.Style(diffview.DefaultLightStyle) - golden.RequireEqual(t, []byte(dv.String())) - }) +var ( + UnifiedFunc = func(dv *diffview.DiffView) *diffview.DiffView { + return dv.Unified() + } + + DefaultFunc = func(dv *diffview.DiffView) *diffview.DiffView { + return dv. + Before("main.go", TestDefaultBefore). + After("main.go", TestDefaultAfter) + } + NoLineNumbersFunc = func(dv *diffview.DiffView) *diffview.DiffView { + return dv. + Before("main.go", TestDefaultBefore). + After("main.go", TestDefaultAfter). + LineNumbers(false) + } + MultipleHunksFunc = func(dv *diffview.DiffView) *diffview.DiffView { + return dv. + Before("main.go", TestMultipleHunksBefore). + After("main.go", TestMultipleHunksAfter) + } + CustomContextLinesFunc = func(dv *diffview.DiffView) *diffview.DiffView { + return dv. + Before("main.go", TestMultipleHunksBefore). + After("main.go", TestMultipleHunksAfter). + ContextLines(4) + } + NarrowFunc = func(dv *diffview.DiffView) *diffview.DiffView { + return dv. + Before("text.txt", TestNarrowBefore). + After("text.txt", TestNarrowAfter) + } + + LightModeFunc = func(dv *diffview.DiffView) *diffview.DiffView { + return dv.Style(diffview.DefaultLightStyle) + } + DarkModeFunc = func(dv *diffview.DiffView) *diffview.DiffView { + return dv.Style(diffview.DefaultDarkStyle) + } + + LayoutFuncs = TestFuncs{ + "Unified": UnifiedFunc, + } + BehaviorFuncs = TestFuncs{ + "Default": DefaultFunc, + "NoLineNumbers": NoLineNumbersFunc, + "MultipleHunks": MultipleHunksFunc, + "CustomContextLines": CustomContextLinesFunc, + "Narrow": NarrowFunc, + } + ThemeFuncs = TestFuncs{ + "LightMode": LightModeFunc, + "DarkMode": DarkModeFunc, + } +) - t.Run("DarkMode", func(t *testing.T) { - dv = dv.Style(diffview.DefaultDarkStyle) - golden.RequireEqual(t, []byte(dv.String())) - }) +func TestDiffView(t *testing.T) { + for layoutName, layoutFunc := range LayoutFuncs { + t.Run(layoutName, func(t *testing.T) { + for behaviorName, behaviorFunc := range BehaviorFuncs { + t.Run(behaviorName, func(t *testing.T) { + for themeName, themeFunc := range ThemeFuncs { + t.Run(themeName, func(t *testing.T) { + dv := diffview.New() + dv = layoutFunc(dv) + dv = behaviorFunc(dv) + dv = themeFunc(dv) + golden.RequireEqual(t, []byte(dv.String())) + }) + } + }) + } + }) + } } diff --git a/internal/exp/diffview/testdata/TestCustomContextLines/DarkMode.golden b/internal/exp/diffview/testdata/TestDiffView/Unified/CustomContextLines/DarkMode.golden similarity index 100% rename from internal/exp/diffview/testdata/TestCustomContextLines/DarkMode.golden rename to internal/exp/diffview/testdata/TestDiffView/Unified/CustomContextLines/DarkMode.golden diff --git a/internal/exp/diffview/testdata/TestCustomContextLines/LightMode.golden b/internal/exp/diffview/testdata/TestDiffView/Unified/CustomContextLines/LightMode.golden similarity index 100% rename from internal/exp/diffview/testdata/TestCustomContextLines/LightMode.golden rename to internal/exp/diffview/testdata/TestDiffView/Unified/CustomContextLines/LightMode.golden diff --git a/internal/exp/diffview/testdata/TestDefault/DarkMode.golden b/internal/exp/diffview/testdata/TestDiffView/Unified/Default/DarkMode.golden similarity index 100% rename from internal/exp/diffview/testdata/TestDefault/DarkMode.golden rename to internal/exp/diffview/testdata/TestDiffView/Unified/Default/DarkMode.golden diff --git a/internal/exp/diffview/testdata/TestDefault/LightMode.golden b/internal/exp/diffview/testdata/TestDiffView/Unified/Default/LightMode.golden similarity index 100% rename from internal/exp/diffview/testdata/TestDefault/LightMode.golden rename to internal/exp/diffview/testdata/TestDiffView/Unified/Default/LightMode.golden diff --git a/internal/exp/diffview/testdata/TestMultipleHunks/DarkMode.golden b/internal/exp/diffview/testdata/TestDiffView/Unified/MultipleHunks/DarkMode.golden similarity index 100% rename from internal/exp/diffview/testdata/TestMultipleHunks/DarkMode.golden rename to internal/exp/diffview/testdata/TestDiffView/Unified/MultipleHunks/DarkMode.golden diff --git a/internal/exp/diffview/testdata/TestMultipleHunks/LightMode.golden b/internal/exp/diffview/testdata/TestDiffView/Unified/MultipleHunks/LightMode.golden similarity index 100% rename from internal/exp/diffview/testdata/TestMultipleHunks/LightMode.golden rename to internal/exp/diffview/testdata/TestDiffView/Unified/MultipleHunks/LightMode.golden diff --git a/internal/exp/diffview/testdata/TestNarrow/DarkMode.golden b/internal/exp/diffview/testdata/TestDiffView/Unified/Narrow/DarkMode.golden similarity index 100% rename from internal/exp/diffview/testdata/TestNarrow/DarkMode.golden rename to internal/exp/diffview/testdata/TestDiffView/Unified/Narrow/DarkMode.golden diff --git a/internal/exp/diffview/testdata/TestNarrow/LightMode.golden b/internal/exp/diffview/testdata/TestDiffView/Unified/Narrow/LightMode.golden similarity index 100% rename from internal/exp/diffview/testdata/TestNarrow/LightMode.golden rename to internal/exp/diffview/testdata/TestDiffView/Unified/Narrow/LightMode.golden diff --git a/internal/exp/diffview/testdata/TestNoLineNumbers/DarkMode.golden b/internal/exp/diffview/testdata/TestDiffView/Unified/NoLineNumbers/DarkMode.golden similarity index 100% rename from internal/exp/diffview/testdata/TestNoLineNumbers/DarkMode.golden rename to internal/exp/diffview/testdata/TestDiffView/Unified/NoLineNumbers/DarkMode.golden diff --git a/internal/exp/diffview/testdata/TestNoLineNumbers/LightMode.golden b/internal/exp/diffview/testdata/TestDiffView/Unified/NoLineNumbers/LightMode.golden similarity index 100% rename from internal/exp/diffview/testdata/TestNoLineNumbers/LightMode.golden rename to internal/exp/diffview/testdata/TestDiffView/Unified/NoLineNumbers/LightMode.golden