...

Source file src/github.com/jedib0t/go-pretty/v6/progress/tracker_test.go

Documentation: github.com/jedib0t/go-pretty/v6/progress

     1  package progress
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestTracker_ETA(t *testing.T) {
    11  	timeDelayUnit := time.Millisecond
    12  	timeDelay := timeDelayUnit * 25
    13  
    14  	tracker := Tracker{}
    15  	assert.Equal(t, time.Duration(0), tracker.ETA())
    16  
    17  	tracker.Total = 100
    18  	tracker.start()
    19  	assert.Equal(t, time.Duration(0), tracker.ETA())
    20  	time.Sleep(timeDelay)
    21  	tracker.Increment(50)
    22  	assert.NotEqual(t, time.Duration(0), tracker.ETA())
    23  	tracker.Increment(50)
    24  	assert.Equal(t, time.Duration(0), tracker.ETA())
    25  
    26  	tracker = Tracker{Total: 100, ExpectedDuration: timeDelay}
    27  	tracker.start()
    28  	assert.True(t, tracker.ETA() <= tracker.ExpectedDuration)
    29  	time.Sleep(timeDelay)
    30  	tracker.Increment(50)
    31  	assert.NotEqual(t, time.Duration(0), tracker.ETA())
    32  	tracker.Increment(50)
    33  	assert.Equal(t, time.Duration(0), tracker.ETA())
    34  }
    35  
    36  func TestTracker_Increment(t *testing.T) {
    37  	tracker := Tracker{Total: 100}
    38  	assert.Equal(t, int64(0), tracker.value)
    39  	assert.Equal(t, int64(100), tracker.Total)
    40  
    41  	tracker.Increment(10)
    42  	assert.Equal(t, int64(10), tracker.value)
    43  	assert.Equal(t, int64(100), tracker.Total)
    44  
    45  	tracker.Increment(100)
    46  	assert.Equal(t, int64(110), tracker.value)
    47  	assert.Equal(t, int64(110), tracker.Total)
    48  	assert.False(t, tracker.timeStop.IsZero())
    49  	assert.True(t, tracker.IsDone())
    50  }
    51  
    52  func TestTracker_IncrementWithError(t *testing.T) {
    53  	tracker := Tracker{Total: 100}
    54  	assert.Equal(t, int64(0), tracker.value)
    55  	assert.Equal(t, int64(100), tracker.Total)
    56  	assert.False(t, tracker.IsErrored())
    57  
    58  	tracker.IncrementWithError(10)
    59  	assert.Equal(t, int64(10), tracker.value)
    60  	assert.Equal(t, int64(100), tracker.Total)
    61  	assert.True(t, tracker.IsErrored())
    62  
    63  	tracker.IncrementWithError(100)
    64  	assert.Equal(t, int64(110), tracker.value)
    65  	assert.Equal(t, int64(110), tracker.Total)
    66  	assert.False(t, tracker.timeStop.IsZero())
    67  	assert.True(t, tracker.IsErrored())
    68  	assert.True(t, tracker.IsDone())
    69  }
    70  
    71  func TestTracker_IsDone(t *testing.T) {
    72  	tracker := Tracker{Total: 10}
    73  	assert.False(t, tracker.IsDone())
    74  
    75  	tracker.Increment(10)
    76  	assert.True(t, tracker.IsDone())
    77  }
    78  
    79  func TestTracker_IsIndeterminate(t *testing.T) {
    80  	tracker := Tracker{Total: 10}
    81  	assert.False(t, tracker.IsIndeterminate())
    82  
    83  	tracker.Total = 0
    84  	assert.True(t, tracker.IsIndeterminate())
    85  }
    86  
    87  func TestTracker_MarkAsDone(t *testing.T) {
    88  	tracker := Tracker{}
    89  	assert.False(t, tracker.IsDone())
    90  	assert.False(t, tracker.IsErrored())
    91  	assert.True(t, tracker.timeStop.IsZero())
    92  
    93  	tracker.MarkAsDone()
    94  	assert.True(t, tracker.IsDone())
    95  	assert.False(t, tracker.IsErrored())
    96  	assert.False(t, tracker.timeStop.IsZero())
    97  
    98  	tracker.MarkAsErrored()
    99  	assert.True(t, tracker.IsDone())
   100  	assert.False(t, tracker.IsErrored())
   101  	assert.False(t, tracker.timeStop.IsZero())
   102  }
   103  
   104  func TestTracker_MarkAsError(t *testing.T) {
   105  	tracker := Tracker{}
   106  	assert.False(t, tracker.IsDone())
   107  	assert.False(t, tracker.IsErrored())
   108  	assert.True(t, tracker.timeStop.IsZero())
   109  
   110  	tracker.MarkAsErrored()
   111  	assert.True(t, tracker.IsDone())
   112  	assert.True(t, tracker.IsErrored())
   113  	assert.False(t, tracker.timeStop.IsZero())
   114  
   115  	tracker.MarkAsDone()
   116  	assert.True(t, tracker.IsDone())
   117  	assert.True(t, tracker.IsErrored())
   118  	assert.False(t, tracker.timeStop.IsZero())
   119  }
   120  
   121  func TestTracker_PercentDone(t *testing.T) {
   122  	tracker := Tracker{}
   123  	assert.Equal(t, 0.00, tracker.PercentDone())
   124  
   125  	tracker.Total = 100
   126  	assert.Equal(t, 0.00, tracker.PercentDone())
   127  
   128  	for idx := 1; idx <= 100; idx++ {
   129  		tracker.Increment(1)
   130  		assert.Equal(t, float64(idx), tracker.PercentDone())
   131  	}
   132  }
   133  
   134  func TestTracker_Reset(t *testing.T) {
   135  	tracker := Tracker{Total: 100}
   136  	assert.False(t, tracker.done)
   137  	assert.Equal(t, time.Time{}, tracker.timeStart)
   138  	assert.Equal(t, time.Time{}, tracker.timeStop)
   139  	assert.Equal(t, int64(0), tracker.value)
   140  
   141  	tracker.start()
   142  	tracker.Increment(tracker.Total)
   143  	tracker.stop()
   144  	assert.True(t, tracker.done)
   145  	assert.NotEqual(t, time.Time{}, tracker.timeStart)
   146  	assert.NotEqual(t, time.Time{}, tracker.timeStop)
   147  	assert.Equal(t, tracker.Total, tracker.value)
   148  
   149  	tracker.Reset()
   150  	assert.False(t, tracker.done)
   151  	assert.Equal(t, time.Time{}, tracker.timeStart)
   152  	assert.Equal(t, time.Time{}, tracker.timeStop)
   153  	assert.Equal(t, int64(0), tracker.value)
   154  }
   155  
   156  func TestTracker_SetValue(t *testing.T) {
   157  	tracker := Tracker{Total: 100}
   158  	assert.Equal(t, int64(0), tracker.value)
   159  	assert.False(t, tracker.done)
   160  
   161  	tracker.SetValue(5)
   162  	assert.Equal(t, int64(5), tracker.value)
   163  	assert.False(t, tracker.done)
   164  
   165  	tracker.SetValue(tracker.Total)
   166  	assert.Equal(t, tracker.Total, tracker.value)
   167  	assert.True(t, tracker.done)
   168  }
   169  
   170  func TestTracker_Value(t *testing.T) {
   171  	tracker := Tracker{}
   172  	assert.Equal(t, int64(0), tracker.value)
   173  	assert.Equal(t, int64(0), tracker.Value())
   174  
   175  	tracker.SetValue(5)
   176  	assert.Equal(t, int64(5), tracker.value)
   177  	assert.Equal(t, int64(5), tracker.Value())
   178  }
   179  
   180  func TestTracker_UpdateMessage(t *testing.T) {
   181  	tracker := Tracker{Message: "foo"}
   182  	assert.Equal(t, "foo", tracker.message())
   183  
   184  	tracker.UpdateMessage("bar")
   185  	assert.Equal(t, "bar", tracker.message())
   186  }
   187  

View as plain text