diffview_test.go

 1package diffview_test
 2
 3import (
 4	_ "embed"
 5	"testing"
 6
 7	"github.com/charmbracelet/x/exp/golden"
 8	"github.com/opencode-ai/opencode/internal/exp/diffview"
 9)
10
11//go:embed testdata/TestDefault.before
12var TestDefaultBefore string
13
14//go:embed testdata/TestDefault.after
15var TestDefaultAfter string
16
17//go:embed testdata/TestMultipleHunks.before
18var TestMultipleHunksBefore string
19
20//go:embed testdata/TestMultipleHunks.after
21var TestMultipleHunksAfter string
22
23func TestDefault(t *testing.T) {
24	dv := diffview.New().
25		Before("main.go", TestDefaultBefore).
26		After("main.go", TestDefaultAfter)
27
28	t.Run("LightMode", func(t *testing.T) {
29		dv = dv.Style(diffview.DefaultLightStyle)
30		golden.RequireEqual(t, []byte(dv.String()))
31	})
32
33	t.Run("DarkMode", func(t *testing.T) {
34		dv = dv.Style(diffview.DefaultDarkStyle)
35		golden.RequireEqual(t, []byte(dv.String()))
36	})
37}
38
39func TestNoLineNumbers(t *testing.T) {
40	dv := diffview.New().
41		Before("main.go", TestDefaultBefore).
42		After("main.go", TestDefaultAfter).
43		LineNumbers(false)
44
45	t.Run("LightMode", func(t *testing.T) {
46		dv = dv.Style(diffview.DefaultLightStyle)
47		golden.RequireEqual(t, []byte(dv.String()))
48	})
49
50	t.Run("DarkMode", func(t *testing.T) {
51		dv = dv.Style(diffview.DefaultDarkStyle)
52		golden.RequireEqual(t, []byte(dv.String()))
53	})
54}
55
56func TestMultipleHunks(t *testing.T) {
57	dv := diffview.New().
58		Before("main.go", TestMultipleHunksBefore).
59		After("main.go", TestMultipleHunksAfter)
60
61	t.Run("LightMode", func(t *testing.T) {
62		dv = dv.Style(diffview.DefaultLightStyle)
63		golden.RequireEqual(t, []byte(dv.String()))
64	})
65
66	t.Run("DarkMode", func(t *testing.T) {
67		dv = dv.Style(diffview.DefaultDarkStyle)
68		golden.RequireEqual(t, []byte(dv.String()))
69	})
70}