1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
package opts
import (
"testing"
"gotest.tools/v3/assert"
is "gotest.tools/v3/assert/cmp"
)
func TestSetOpts(t *testing.T) {
tmpMap := make(map[string]bool)
o := NewSetOpts(tmpMap)
assert.NilError(t, o.Set("feature-a=1"))
assert.NilError(t, o.Set("feature-b=true"))
assert.NilError(t, o.Set("feature-c=0"))
assert.NilError(t, o.Set("feature-d=false"))
assert.NilError(t, o.Set("feature-e"))
expected := "map[feature-a:true feature-b:true feature-c:false feature-d:false feature-e:true]"
assert.Check(t, is.Equal(expected, o.String()))
expectedValue := map[string]bool{"feature-a": true, "feature-b": true, "feature-c": false, "feature-d": false, "feature-e": true}
assert.Check(t, is.DeepEqual(expectedValue, o.GetAll()))
err := o.Set("feature=not-a-bool")
assert.Check(t, is.Error(err, `strconv.ParseBool: parsing "not-a-bool": invalid syntax`))
err = o.Set("feature=")
assert.Check(t, is.Error(err, `strconv.ParseBool: parsing "": invalid syntax`))
err = o.Set("=true")
assert.Check(t, is.Error(err, `invalid option name: =true`))
}
func TestNamedSetOpts(t *testing.T) {
tmpMap := make(map[string]bool)
o := NewNamedSetOpts("features", tmpMap)
assert.Check(t, is.Equal("features", o.Name()))
assert.NilError(t, o.Set("feature-a=1"))
assert.NilError(t, o.Set("feature-b=true"))
assert.NilError(t, o.Set("feature-c=0"))
assert.NilError(t, o.Set("feature-d=false"))
assert.NilError(t, o.Set("feature-e"))
expected := "map[feature-a:true feature-b:true feature-c:false feature-d:false feature-e:true]"
assert.Check(t, is.Equal(expected, o.String()))
expectedValue := map[string]bool{"feature-a": true, "feature-b": true, "feature-c": false, "feature-d": false, "feature-e": true}
assert.Check(t, is.DeepEqual(expectedValue, o.GetAll()))
err := o.Set("feature=not-a-bool")
assert.Check(t, is.Error(err, `strconv.ParseBool: parsing "not-a-bool": invalid syntax`))
err = o.Set("feature=")
assert.Check(t, is.Error(err, `strconv.ParseBool: parsing "": invalid syntax`))
err = o.Set("=true")
assert.Check(t, is.Error(err, `invalid option name: =true`))
}
|