| 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`)) |
| } |