64 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
package retryutil
 | 
						|
 | 
						|
import (
 | 
						|
	"errors"
 | 
						|
	"testing"
 | 
						|
)
 | 
						|
 | 
						|
type mockTicker struct {
 | 
						|
	test    *testing.T
 | 
						|
	counter int
 | 
						|
}
 | 
						|
 | 
						|
func (t *mockTicker) Stop() {}
 | 
						|
 | 
						|
func (t *mockTicker) Tick() {
 | 
						|
	t.counter++
 | 
						|
}
 | 
						|
 | 
						|
func TestRetryWorkerSuccess(t *testing.T) {
 | 
						|
	tick := &mockTicker{t, 0}
 | 
						|
	result := RetryWorker(10, 20, tick, func() (bool, error) {
 | 
						|
		return true, nil
 | 
						|
	})
 | 
						|
 | 
						|
	if result != nil {
 | 
						|
		t.Errorf("Wrong result, expected: %#v, got: %#v", nil, result)
 | 
						|
	}
 | 
						|
 | 
						|
	if tick.counter != 0 {
 | 
						|
		t.Errorf("Ticker was started once, but it shouldn't be")
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestRetryWorkerOneFalse(t *testing.T) {
 | 
						|
	var counter = 0
 | 
						|
 | 
						|
	tick := &mockTicker{t, 0}
 | 
						|
	result := RetryWorker(1, 3, tick, func() (bool, error) {
 | 
						|
		counter++
 | 
						|
		return counter > 1, nil
 | 
						|
	})
 | 
						|
 | 
						|
	if result != nil {
 | 
						|
		t.Errorf("Wrong result, expected: %#v, got: %#v", nil, result)
 | 
						|
	}
 | 
						|
 | 
						|
	if tick.counter != 1 {
 | 
						|
		t.Errorf("Ticker was started %#v, but supposed to be just once", tick.counter)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestRetryWorkerError(t *testing.T) {
 | 
						|
	fail := errors.New("Error")
 | 
						|
 | 
						|
	tick := &mockTicker{t, 0}
 | 
						|
	result := RetryWorker(1, 3, tick, func() (bool, error) {
 | 
						|
		return false, fail
 | 
						|
	})
 | 
						|
 | 
						|
	if result != fail {
 | 
						|
		t.Errorf("Wrong result, expected: %#v, got: %#v", fail, result)
 | 
						|
	}
 | 
						|
}
 |