73 lines
2.4 KiB
Go
73 lines
2.4 KiB
Go
package entity_test
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
|
|
"git.loyso.art/frx/eway/internal/entity"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestDimension_AdjustTo(t *testing.T) {
|
|
// Test adjusting from smaller dimension to larger one
|
|
d := entity.Dimension{Value: 5.0, Kind: entity.DimensionKindCentimeter}
|
|
expected := entity.Dimension{Value: 0.05, Kind: entity.DimensionKindMeter}
|
|
actual := d.AdjustTo(entity.DimensionKindMeter)
|
|
|
|
assert.EqualValues(t, expected.Value, actual.Value)
|
|
assert.Equal(t, expected.Kind, actual.Kind)
|
|
|
|
// Test adjusting from larger dimension to smaller one
|
|
d = entity.Dimension{Value: 0.05, Kind: entity.DimensionKindMeter}
|
|
expected = entity.Dimension{Value: 50.0, Kind: entity.DimensionKindMilimeter}
|
|
actual = d.AdjustTo(entity.DimensionKindMilimeter)
|
|
|
|
assert.EqualValues(t, expected.Value, actual.Value)
|
|
assert.Equal(t, expected.Kind, actual.Kind)
|
|
}
|
|
|
|
func TestParseDimension_Success(t *testing.T) {
|
|
// Test parsing a valid dimension string with RU locale
|
|
input := "10 см"
|
|
expected := entity.Dimension{Value: 10.0, Kind: entity.DimensionKindCentimeter}
|
|
|
|
actual, err := entity.ParseDimention(input, entity.DimensionLocalRU)
|
|
require.NoError(t, err)
|
|
|
|
assert.EqualValues(t, expected.Value, actual.Value)
|
|
assert.Equal(t, expected.Kind, actual.Kind)
|
|
}
|
|
|
|
func TestParseDimensionComplex_Success(t *testing.T) {
|
|
// Test parsing a valid dimension string with RU locale
|
|
input := "10 256.20 см"
|
|
expected := entity.Dimension{Value: 10256.20, Kind: entity.DimensionKindCentimeter}
|
|
|
|
actual, err := entity.ParseDimention(input, entity.DimensionLocalRU)
|
|
require.NoError(t, err)
|
|
|
|
assert.EqualValues(t, expected.Value, actual.Value)
|
|
assert.Equal(t, expected.Kind, actual.Kind)
|
|
}
|
|
|
|
func TestParseDimension_InvalidInputFormat(t *testing.T) {
|
|
// Test parsing an invalid dimension string with RU locale
|
|
input := "invalid value 2"
|
|
expectedErr := errors.New("expected 2 values after split for value invalid value 2")
|
|
|
|
_, err := entity.ParseDimention(input, entity.DimensionLocalRU)
|
|
assert.Error(t, err)
|
|
assert.EqualError(t, err, expectedErr.Error())
|
|
}
|
|
|
|
func TestParseDimension_InvalidLocale(t *testing.T) {
|
|
// Test parsing a dimension string with an unsupported locale
|
|
input := "10 мм"
|
|
expectedErr := errors.New("unknown locale for parse")
|
|
|
|
_, err := entity.ParseDimention(input, 3) // An invalid locale value is used here for demonstration purposes
|
|
assert.EqualError(t, err, expectedErr.Error())
|
|
}
|