61 lines
1.3 KiB
Go
61 lines
1.3 KiB
Go
|
|
package cli
|
||
|
|
|
||
|
|
import (
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
"github.com/stretchr/testify/assert"
|
||
|
|
"github.com/stretchr/testify/require"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestProgressBar_Good_Create(t *testing.T) {
|
||
|
|
pb := NewProgressBar(100)
|
||
|
|
require.NotNil(t, pb)
|
||
|
|
assert.Equal(t, 0, pb.Current())
|
||
|
|
assert.Equal(t, 100, pb.Total())
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestProgressBar_Good_Increment(t *testing.T) {
|
||
|
|
pb := NewProgressBar(10)
|
||
|
|
pb.Increment()
|
||
|
|
assert.Equal(t, 1, pb.Current())
|
||
|
|
pb.Increment()
|
||
|
|
assert.Equal(t, 2, pb.Current())
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestProgressBar_Good_SetMessage(t *testing.T) {
|
||
|
|
pb := NewProgressBar(10)
|
||
|
|
pb.SetMessage("Processing file.go")
|
||
|
|
assert.Equal(t, "Processing file.go", pb.message)
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestProgressBar_Good_Set(t *testing.T) {
|
||
|
|
pb := NewProgressBar(100)
|
||
|
|
pb.Set(50)
|
||
|
|
assert.Equal(t, 50, pb.Current())
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestProgressBar_Good_Done(t *testing.T) {
|
||
|
|
pb := NewProgressBar(5)
|
||
|
|
for i := 0; i < 5; i++ {
|
||
|
|
pb.Increment()
|
||
|
|
}
|
||
|
|
pb.Done()
|
||
|
|
// After Done, Current == Total
|
||
|
|
assert.Equal(t, 5, pb.Current())
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestProgressBar_Bad_ExceedsTotal(t *testing.T) {
|
||
|
|
pb := NewProgressBar(2)
|
||
|
|
pb.Increment()
|
||
|
|
pb.Increment()
|
||
|
|
pb.Increment() // Should clamp to total
|
||
|
|
assert.Equal(t, 2, pb.Current())
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestProgressBar_Good_Render(t *testing.T) {
|
||
|
|
pb := NewProgressBar(10)
|
||
|
|
pb.Set(5)
|
||
|
|
rendered := pb.String()
|
||
|
|
assert.Contains(t, rendered, "50%")
|
||
|
|
}
|