120 lines
2.6 KiB
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}))
|
|
}
|