github.com/saracen/git-lfs@v2.5.2+incompatible/tasklog/percentage_task_test.go (about) 1 package tasklog 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 func TestPercentageTaskCalculuatesPercentages(t *testing.T) { 10 task := NewPercentageTask("example", 10) 11 12 assert.Equal(t, "example: 0% (0/10)", (<-task.Updates()).S) 13 14 n := task.Count(3) 15 assert.EqualValues(t, 3, n) 16 17 assert.Equal(t, "example: 30% (3/10)", (<-task.Updates()).S) 18 } 19 20 func TestPercentageTaskCalculatesPercentWithoutTotal(t *testing.T) { 21 task := NewPercentageTask("example", 0) 22 23 select { 24 case v, ok := <-task.Updates(): 25 if ok { 26 assert.Equal(t, "example: 100% (0/0)", v.S) 27 } else { 28 t.Fatal("expected channel to be open") 29 } 30 default: 31 } 32 } 33 34 func TestPercentageTaskCallsDoneWhenComplete(t *testing.T) { 35 task := NewPercentageTask("example", 10) 36 37 select { 38 case v, ok := <-task.Updates(): 39 if ok { 40 assert.Equal(t, "example: 0% (0/10)", v.S) 41 } else { 42 t.Fatal("expected channel to be open") 43 } 44 default: 45 } 46 47 assert.EqualValues(t, 10, task.Count(10)) 48 assert.Equal(t, "example: 100% (10/10)", (<-task.Updates()).S) 49 50 if _, ok := <-task.Updates(); ok { 51 t.Fatalf("expected channel to be closed") 52 } 53 } 54 55 func TestPercentageTaskIsThrottled(t *testing.T) { 56 task := NewPercentageTask("example", 10) 57 58 throttled := task.Throttled() 59 60 assert.True(t, throttled, 61 "tasklog: expected *PercentageTask to be Throttle()-d") 62 } 63 64 func TestPercentageTaskPanicsWhenOvercounted(t *testing.T) { 65 task := NewPercentageTask("example", 0) 66 defer func() { 67 assert.Equal(t, "tasklog: counted too many items", recover()) 68 }() 69 70 task.Count(1) 71 }