69 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			69 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 += 1
 | |
| }
 | |
| 
 | |
| 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 += 1
 | |
| 
 | |
| 		if counter <= 1 {
 | |
| 			return false, nil
 | |
| 		} else {
 | |
| 			return true, 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)
 | |
| 	}
 | |
| }
 |