mirror of
https://github.com/zoriya/bubbles.git
synced 2026-08-05 04:36:07 +00:00
95 lines
1.9 KiB
Go
95 lines
1.9 KiB
Go
package progress
|
|
|
|
import (
|
|
"image/color"
|
|
"testing"
|
|
|
|
"charm.land/lipgloss/v2"
|
|
"github.com/charmbracelet/x/exp/golden"
|
|
)
|
|
|
|
func TestBlend(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
options []Option
|
|
width int
|
|
percent float64
|
|
}{
|
|
{
|
|
name: "10w-red-to-green-50perc",
|
|
options: []Option{
|
|
WithColors(lipgloss.Color("#FF0000"), lipgloss.Color("#00FF00")),
|
|
WithScaled(false),
|
|
WithoutPercentage(),
|
|
},
|
|
width: 10,
|
|
percent: 0.5,
|
|
},
|
|
{
|
|
name: "10w-red-to-green-50perc-full-block",
|
|
options: []Option{
|
|
WithColors(lipgloss.Color("#FF0000"), lipgloss.Color("#00FF00")),
|
|
WithFillCharacters('█', DefaultEmptyCharBlock),
|
|
WithoutPercentage(),
|
|
},
|
|
width: 10,
|
|
percent: 0.5,
|
|
},
|
|
{
|
|
name: "30w-red-to-green-100perc",
|
|
options: []Option{
|
|
WithColors(lipgloss.Color("#FF0000"), lipgloss.Color("#00FF00")),
|
|
WithScaled(false),
|
|
WithoutPercentage(),
|
|
},
|
|
width: 30,
|
|
percent: 1.0,
|
|
},
|
|
{
|
|
name: "10w-red-to-green-scaled-50perc",
|
|
options: []Option{
|
|
WithColors(lipgloss.Color("#FF0000"), lipgloss.Color("#00FF00")),
|
|
WithScaled(true),
|
|
WithoutPercentage(),
|
|
},
|
|
width: 10,
|
|
percent: 0.5,
|
|
},
|
|
{
|
|
name: "30w-red-to-green-scaled-100perc",
|
|
options: []Option{
|
|
WithColors(lipgloss.Color("#FF0000"), lipgloss.Color("#00FF00")),
|
|
WithScaled(true),
|
|
WithoutPercentage(),
|
|
},
|
|
width: 30,
|
|
percent: 1.0,
|
|
},
|
|
{
|
|
name: "30w-colorfunc-rgb-100perc",
|
|
options: []Option{
|
|
WithColorFunc(func(_, current float64) color.Color {
|
|
if current <= 0.3 {
|
|
return lipgloss.Color("#FF0000")
|
|
}
|
|
if current <= 0.7 {
|
|
return lipgloss.Color("#00FF00")
|
|
}
|
|
return lipgloss.Color("#0000FF")
|
|
}),
|
|
WithoutPercentage(),
|
|
},
|
|
width: 30,
|
|
percent: 1.0,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
p := New(tt.options...)
|
|
p.SetWidth(tt.width)
|
|
golden.RequireEqual(t, []byte(p.ViewAs(tt.percent)))
|
|
})
|
|
}
|
|
}
|