package fmm import ( "testing" "github.com/stretchr/testify/require" ) func TestNewDependency(t *testing.T) { tests := []struct { input string name string version *Version kind DependencyKind req VersionCmpRes }{ {"flib", "flib", nil, DependencyRequired, VersionAny}, {"\tflib ", "flib", nil, DependencyRequired, VersionAny}, {"! flib", "flib", nil, DependencyIncompatible, VersionAny}, {"flib >= 0.10", "flib", &Version{0, 10, 0}, DependencyRequired, VersionGtEq}, {"flib >= 0.10.0", "flib", &Version{0, 10, 0}, DependencyRequired, VersionGtEq}, {"flib > 0.10", "flib", &Version{0, 10, 0}, DependencyRequired, VersionGt}, {"flib>=0.10", "flib", &Version{0, 10, 0}, DependencyRequired, VersionGtEq}, } for _, test := range tests { dep, err := NewDependency(test.input) if err != nil { t.Error(err) } require.Equal(t, test.name, dep.Name) if test.version == nil { require.Nil(t, dep.Version) } else { require.NotNil(t, dep.Version) } require.Equal(t, test.kind, dep.Kind) require.Equal(t, test.req, dep.Req) } } func TestDependencyTest(t *testing.T) { tests := []struct { dep string version Version result bool }{ {"flib", Version{0, 1, 1}, true}, {"! flib", Version{0, 1, 1}, false}, {"flib >= 0.10", Version{0, 1, 1}, false}, {"flib >= 0.10", Version{0, 10, 0}, true}, {"flib >= 0.10.0", Version{0, 10, 0}, true}, {"flib > 0.10", Version{0, 10, 0}, false}, {"flib>=0.10", Version{0, 10, 0}, true}, } for _, test := range tests { dep, err := NewDependency(test.dep) require.NoError(t, err) require.Equal(t, dep.Test(&test.version), test.result) } }