package pool import ( "github.com/stretchr/testify/assert" "testing" ) func TestPool_Add(t *testing.T) { p := &Pool{ Max: 10, Value: 3, } p.Add(4) } func TestPool_Add_Overflows(t *testing.T) { shad := &Pool{ Max: 5, Value: 0, } dist := &Pool{ OverflowsTo: shad, Max: 5, Value: 0, } dist.Add(8) assert.Equal(t, shad.Value, 3) } func TestPool_Subtract(t *testing.T) { p := &Pool{ Max: 10, Value: 8, } p.Subtract(6) assert.Equal(t, 2, p.Value) } func TestPool_Subtract_Empties(t *testing.T) { p := &Pool{ Max: 10, Value: 4, } p.Subtract(8) assert.Equal(t, 0, p.Value) } func TestPool_Subtract_Flows(t *testing.T) { dest := &Pool{ Value: 0, Max: Infinite, } p := &Pool{ SubtractsTo: dest, Max: Infinite, Value: 10, } p.Subtract(8) assert.Equal(t, 8, dest.Value) assert.Equal(t, 2, p.Value) } func TestPool_Subtract_Flows_Empties(t *testing.T) { dest := &Pool{ Value: 0, Max: Infinite, } p := &Pool{ SubtractsTo: dest, Max: Infinite, Value: 5, } p.Subtract(8) assert.Equal(t, 5, dest.Value) assert.Equal(t, 0, p.Value) }