orchard/pkg/resource/v1/resources_test.go

120 lines
2.6 KiB
Go

package v1_test
import (
v1 "github.com/cirruslabs/orchard/pkg/resource/v1"
"github.com/stretchr/testify/require"
"math"
"testing"
)
func TestResourcesAdd(t *testing.T) {
resources := v1.Resources{
v1.ResourceTartVMs: 1,
}
resources.Add(v1.Resources{v1.ResourceTartVMs: 3})
require.Equal(t, v1.Resources{v1.ResourceTartVMs: 4}, resources)
}
func TestResourcesAdded(t *testing.T) {
resources := v1.Resources{
v1.ResourceTartVMs: 1,
}
resources = resources.Added(v1.Resources{v1.ResourceTartVMs: 3})
require.Equal(t, v1.Resources{v1.ResourceTartVMs: 4}, resources)
}
func TestResourcesSubtract(t *testing.T) {
resources := v1.Resources{
v1.ResourceTartVMs: 2,
}
resources.Subtract(v1.Resources{
v1.ResourceTartVMs: 1,
})
require.False(t, resources.CanFit(v1.Resources{
v1.ResourceTartVMs: 2,
}))
}
func TestResourcesSubtracted(t *testing.T) {
resources := v1.Resources{
v1.ResourceTartVMs: 2,
}
resources = resources.Subtracted(v1.Resources{
v1.ResourceTartVMs: 1,
})
require.False(t, resources.CanFit(v1.Resources{
v1.ResourceTartVMs: 2,
}))
}
func TestResourcesCanFit(t *testing.T) {
resources := v1.Resources{
v1.ResourceTartVMs: 2,
}
require.True(t, resources.CanFit(v1.Resources{
v1.ResourceTartVMs: 0,
}))
require.True(t, resources.CanFit(v1.Resources{
v1.ResourceTartVMs: 1,
}))
require.True(t, resources.CanFit(v1.Resources{
v1.ResourceTartVMs: 2,
}))
require.False(t, resources.CanFit(v1.Resources{
v1.ResourceTartVMs: 3,
}))
require.False(t, resources.CanFit(v1.Resources{
v1.ResourceTartVMs: math.MaxUint64,
}))
}
func TestResourcesMerge(t *testing.T) {
resources := v1.Resources{
v1.ResourceTartVMs: 2,
"some-other": 5,
}
resources.Merge(v1.Resources{
v1.ResourceTartVMs: 4,
})
require.Equal(t, v1.Resources{
v1.ResourceTartVMs: 4,
"some-other": 5,
}, resources)
}
func TestResourcesMerged(t *testing.T) {
resources := v1.Resources{
v1.ResourceTartVMs: 2,
"some-other": 5,
}
require.Equal(t, v1.Resources{
v1.ResourceTartVMs: 4,
"some-other": 5,
}, resources.Merged(v1.Resources{
v1.ResourceTartVMs: 4,
}))
}
func TestEqual(t *testing.T) {
//nolint:gocritic // "dupArg: suspicious method call with the same argument and receiver" // it's not suspicious at all
require.True(t, v1.Resources{}.Equal(v1.Resources{}))
require.True(t, v1.Resources{"a": 10.0}.Equal(v1.Resources{"a": 10.0}))
require.False(t, v1.Resources{"a": 10.0}.Equal(v1.Resources{"a": 10.0, "b": 15.0}))
require.False(t, v1.Resources{"a": 10.0, "b": 15.0}.Equal(v1.Resources{"a": 10.0}))
require.False(t, v1.Resources{"a": 0.0}.Equal(v1.Resources{"b": 0.0}))
}