initial import
This commit is contained in:
78
core/syncx/immutableresource_test.go
Normal file
78
core/syncx/immutableresource_test.go
Normal file
@@ -0,0 +1,78 @@
|
||||
package syncx
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestImmutableResource(t *testing.T) {
|
||||
var count int
|
||||
r := NewImmutableResource(func() (interface{}, error) {
|
||||
count++
|
||||
return "hello", nil
|
||||
})
|
||||
|
||||
res, err := r.Get()
|
||||
assert.Equal(t, "hello", res)
|
||||
assert.Equal(t, 1, count)
|
||||
assert.Nil(t, err)
|
||||
|
||||
// again
|
||||
res, err = r.Get()
|
||||
assert.Equal(t, "hello", res)
|
||||
assert.Equal(t, 1, count)
|
||||
assert.Nil(t, err)
|
||||
}
|
||||
|
||||
func TestImmutableResourceError(t *testing.T) {
|
||||
var count int
|
||||
r := NewImmutableResource(func() (interface{}, error) {
|
||||
count++
|
||||
return nil, errors.New("any")
|
||||
})
|
||||
|
||||
res, err := r.Get()
|
||||
assert.Nil(t, res)
|
||||
assert.NotNil(t, err)
|
||||
assert.Equal(t, "any", err.Error())
|
||||
assert.Equal(t, 1, count)
|
||||
|
||||
// again
|
||||
res, err = r.Get()
|
||||
assert.Nil(t, res)
|
||||
assert.NotNil(t, err)
|
||||
assert.Equal(t, "any", err.Error())
|
||||
assert.Equal(t, 1, count)
|
||||
|
||||
r.refreshInterval = 0
|
||||
time.Sleep(time.Millisecond)
|
||||
res, err = r.Get()
|
||||
assert.Nil(t, res)
|
||||
assert.NotNil(t, err)
|
||||
assert.Equal(t, "any", err.Error())
|
||||
assert.Equal(t, 2, count)
|
||||
}
|
||||
|
||||
func TestImmutableResourceErrorRefreshAlways(t *testing.T) {
|
||||
var count int
|
||||
r := NewImmutableResource(func() (interface{}, error) {
|
||||
count++
|
||||
return nil, errors.New("any")
|
||||
}, WithRefreshIntervalOnFailure(0))
|
||||
|
||||
res, err := r.Get()
|
||||
assert.Nil(t, res)
|
||||
assert.NotNil(t, err)
|
||||
assert.Equal(t, "any", err.Error())
|
||||
assert.Equal(t, 1, count)
|
||||
|
||||
// again
|
||||
res, err = r.Get()
|
||||
assert.Nil(t, res)
|
||||
assert.NotNil(t, err)
|
||||
assert.Equal(t, "any", err.Error())
|
||||
assert.Equal(t, 2, count)
|
||||
}
|
||||
Reference in New Issue
Block a user