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}
71
72func TestCustomContextLines(t *testing.T) {
73 dv := diffview.New().
74 Before("main.go", TestMultipleHunksBefore).
75 After("main.go", TestMultipleHunksAfter).
76 ContextLines(4)
77
78 t.Run("LightMode", func(t *testing.T) {
79 dv = dv.Style(diffview.DefaultLightStyle)
80 golden.RequireEqual(t, []byte(dv.String()))
81 })
82
83 t.Run("DarkMode", func(t *testing.T) {
84 dv = dv.Style(diffview.DefaultDarkStyle)
85 golden.RequireEqual(t, []byte(dv.String()))
86 })
87}