2022-10-03 20:11:44 +03:00
|
|
|
package lipgloss
|
|
|
|
|
|
|
|
import (
|
2023-08-01 15:23:15 +03:00
|
|
|
"io"
|
2022-10-03 20:11:44 +03:00
|
|
|
"os"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/muesli/termenv"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestRendererHasDarkBackground(t *testing.T) {
|
2023-03-03 00:53:19 +03:00
|
|
|
r1 := NewRenderer(os.Stdout)
|
|
|
|
r1.SetHasDarkBackground(false)
|
2022-10-03 20:11:44 +03:00
|
|
|
if r1.HasDarkBackground() {
|
|
|
|
t.Error("Expected renderer to have light background")
|
|
|
|
}
|
2023-03-03 00:53:19 +03:00
|
|
|
r2 := NewRenderer(os.Stdout)
|
|
|
|
r2.SetHasDarkBackground(true)
|
2022-10-03 20:11:44 +03:00
|
|
|
if !r2.HasDarkBackground() {
|
|
|
|
t.Error("Expected renderer to have dark background")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestRendererWithOutput(t *testing.T) {
|
|
|
|
f, err := os.Create(t.Name())
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
defer f.Close()
|
|
|
|
defer os.Remove(f.Name())
|
2023-03-03 00:53:19 +03:00
|
|
|
r := NewRenderer(f)
|
|
|
|
r.SetColorProfile(termenv.TrueColor)
|
2023-08-01 15:23:15 +03:00
|
|
|
if r.ColorProfile() != termenv.TrueColor {
|
2022-10-03 20:11:44 +03:00
|
|
|
t.Error("Expected renderer to use true color")
|
|
|
|
}
|
|
|
|
}
|
2023-08-01 15:23:15 +03:00
|
|
|
|
|
|
|
func TestRace(t *testing.T) {
|
|
|
|
r := NewRenderer(io.Discard)
|
|
|
|
o := r.Output()
|
|
|
|
|
|
|
|
for i := 0; i < 100; i++ {
|
|
|
|
t.Run("SetColorProfile", func(t *testing.T) {
|
|
|
|
t.Parallel()
|
|
|
|
r.SetHasDarkBackground(false)
|
|
|
|
r.HasDarkBackground()
|
|
|
|
r.SetOutput(o)
|
|
|
|
r.SetColorProfile(termenv.ANSI256)
|
|
|
|
r.SetHasDarkBackground(true)
|
|
|
|
r.Output()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|