blob: d8dd9fb898d2aa0047cba2b36def6b785762cef6 [file] [log] [blame]
package common
import (
"testing"
assert "github.com/stretchr/testify/require"
"go.skia.org/infra/go/deepequal"
"go.skia.org/infra/go/testutils/unittest"
)
func TestMultiString(t *testing.T) {
unittest.SmallTest(t)
// Test basic operation.
defaults := []string{"mydefault", "mydefault2"}
var values []string
m := &multiString{
values: &values,
}
addAndCheck := func(newVal string, expect []string) {
assert.NoError(t, m.Set(newVal))
deepequal.AssertDeepEqual(t, expect, *m.values)
deepequal.AssertDeepEqual(t, expect, values)
// Sanity check.
deepequal.AssertDeepEqual(t, []string{"mydefault", "mydefault2"}, defaults)
}
addAndCheck("alpha", []string{"alpha"})
addAndCheck("beta,gamma", []string{"alpha", "beta", "gamma"})
addAndCheck("delta", []string{"alpha", "beta", "gamma", "delta"})
// Test MultiStringFlagVar behavior.
values = nil
m = newMultiString(&values, defaults)
deepequal.AssertDeepEqual(t, defaults, *m.values)
deepequal.AssertDeepEqual(t, defaults, values)
addAndCheck("alpha", []string{"alpha"})
addAndCheck("beta,gamma", []string{"alpha", "beta", "gamma"})
addAndCheck("delta", []string{"alpha", "beta", "gamma", "delta"})
// Sanity check.
deepequal.AssertDeepEqual(t, []string{"mydefault", "mydefault2"}, defaults)
// Verify that changing the defaults does not change the flag values.
values = nil
m = newMultiString(&values, defaults)
defaults[0] = "replaced"
deepequal.AssertDeepEqual(t, []string{"mydefault", "mydefault2"}, *m.values)
deepequal.AssertDeepEqual(t, []string{"mydefault", "mydefault2"}, values)
// Verify that it's okay to pass nil for the defaults.
values = nil
newMultiString(&values, nil)
assert.Nil(t, values)
}