1708 lines
41 KiB
Go
1708 lines
41 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package flags
|
|
|
|
import (
|
|
"errors"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func testSet() *Set {
|
|
return NewSet("testing-set")
|
|
}
|
|
|
|
func testGroup() *Group {
|
|
return testSet().DefaultGroup()
|
|
}
|
|
|
|
func testFlag(g *Group) *Flag {
|
|
return newFlag("test-flag", StringType, g)
|
|
}
|
|
|
|
func Test_newFlag(t *testing.T) {
|
|
g := testGroup()
|
|
f := newFlag("my-flag", StringType, g)
|
|
if f.longName != "my-flag" {
|
|
t.Errorf("invalid name - my-flag != %s", f.longName)
|
|
}
|
|
if f.kind != StringType {
|
|
t.Errorf("invalid kind - String != %s", f.kind.String())
|
|
}
|
|
if f.called {
|
|
t.Errorf("invalid called - true != false")
|
|
}
|
|
if f.group != g {
|
|
t.Errorf("invalid group - %v != %v", g, f.group)
|
|
}
|
|
if f.envVar != "" {
|
|
t.Errorf("invalid envVar - \"\" != %s", f.envVar)
|
|
}
|
|
if f.hidden {
|
|
t.Errorf("invalid hidden - true != false")
|
|
}
|
|
if f.ptr {
|
|
t.Errorf("invalid ptr - true != false")
|
|
}
|
|
if f.required {
|
|
t.Errorf("invalid required - true != false")
|
|
}
|
|
if f.shortName != 0 {
|
|
t.Errorf("invalid shortName - 0 != %d", f.shortName)
|
|
}
|
|
if f.subkind != UnsetType {
|
|
t.Errorf("invalid subkind - %s != %s", UnsetType.String(), f.subkind.String())
|
|
}
|
|
if f.updated {
|
|
t.Errorf("invalid updated - true != false")
|
|
}
|
|
if f.value != nil {
|
|
t.Errorf("invalid value - nil != %v", f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Alias(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
aliases := []string{"your-flag", "their-flag"}
|
|
fn := Alias(aliases...)
|
|
fn(f)
|
|
if len(f.aliases) != len(aliases) {
|
|
t.Errorf("invalid aliases - %v != %v", aliases, f.aliases)
|
|
}
|
|
for i, a := range aliases {
|
|
if a != f.aliases[i] {
|
|
t.Errorf("invalid alias @ %d - %v != %v", i, a, f.aliases[i])
|
|
}
|
|
}
|
|
}
|
|
|
|
func Test_Required(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.required = false
|
|
fn := Required()
|
|
fn(f)
|
|
if !f.required {
|
|
t.Errorf("invalid required - false != true")
|
|
}
|
|
}
|
|
|
|
func Test_Optional(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.required = true
|
|
fn := Optional()
|
|
fn(f)
|
|
if f.required {
|
|
t.Errorf("invalid required - true != false")
|
|
}
|
|
}
|
|
|
|
func Test_Hidden(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.hidden = false
|
|
fn := Hidden()
|
|
fn(f)
|
|
if !f.hidden {
|
|
t.Errorf("invalid hidden - false != true")
|
|
}
|
|
}
|
|
|
|
func Test_DefaultValue(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
v := "my default value"
|
|
fn := DefaultValue(v)
|
|
fn(f)
|
|
if f.defaultValue != v {
|
|
t.Errorf("invalid default value - %s != %s", v, f.defaultValue)
|
|
}
|
|
}
|
|
|
|
func Test_DefaultValue_invalid_type(t *testing.T) {
|
|
defer func() {
|
|
if r := recover(); r == nil {
|
|
t.Errorf("panic expected but did not occur")
|
|
}
|
|
}()
|
|
f := testFlag(testGroup())
|
|
f.kind = IntegerType
|
|
v := "my default value"
|
|
fn := DefaultValue(v)
|
|
fn(f)
|
|
}
|
|
|
|
func Test_EnvVar(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
v := "MY_VAR"
|
|
fn := EnvVar(v)
|
|
fn(f)
|
|
if f.envVar != v {
|
|
t.Errorf("invalid env var - %s != %s", v, f.envVar)
|
|
}
|
|
}
|
|
|
|
func Test_ShortName(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
fn := ShortName('t')
|
|
fn(f)
|
|
if f.shortName != 't' {
|
|
t.Fatalf("invalid shortName - t != %c", f.shortName)
|
|
}
|
|
}
|
|
|
|
func Test_Subtype(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
fn := SetSubtype(IntegerType)
|
|
fn(f)
|
|
if f.subkind != IntegerType {
|
|
t.Errorf("invalid subkind - %s != %s", IntegerType.String(), f.subkind.String())
|
|
}
|
|
}
|
|
|
|
func Test_AddProcessor(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
AddProcessor(func(f *Flag, v interface{}) (interface{}, error) {
|
|
return v.(string) + "-modified", nil
|
|
})(f)
|
|
if err := f.setValue("test-value"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if f.Value() != "test-value-modified" {
|
|
t.Errorf("invalid value - test-value-modified != %#v", f.Value())
|
|
}
|
|
}
|
|
|
|
func Test_AddProcessor_error(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
AddProcessor(func(f *Flag, v interface{}) (interface{}, error) {
|
|
return nil, errors.New("processor error")
|
|
})(f)
|
|
if err := f.setValue("test-value"); err == nil {
|
|
t.Errorf("expected error but no error returned")
|
|
}
|
|
}
|
|
|
|
func Test_AddCallback(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
mark := false
|
|
AddCallback(func(f *Flag) error {
|
|
mark = true
|
|
return nil
|
|
})(f)
|
|
if err := f.setValue("test-value"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if !mark {
|
|
t.Errorf("callback did not set mark")
|
|
}
|
|
}
|
|
|
|
func Test_AddCallback_error(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
AddCallback(func(f *Flag) error {
|
|
return errors.New("callback error")
|
|
})(f)
|
|
if err := f.setValue("test-value"); err == nil {
|
|
t.Errorf("expected error but no error returned")
|
|
}
|
|
}
|
|
|
|
func Test_customVar(t *testing.T) {
|
|
var v string
|
|
f := testFlag(testGroup())
|
|
fn := customVar(&v)
|
|
fn(f)
|
|
tv := "custom-test-value"
|
|
f.setValue(tv)
|
|
if f.Value() != tv {
|
|
t.Errorf("invalid value - %s != %s", tv, f.Value())
|
|
}
|
|
}
|
|
|
|
func Test_Flag_Aliases(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
if len(f.Aliases()) != 0 {
|
|
t.Errorf("invalid Aliases length - 0 != %d", len(f.Aliases()))
|
|
}
|
|
f.aliases = []string{"my-alias"}
|
|
if len(f.Aliases()) != 1 {
|
|
t.Fatalf("invalid Aliases length - 1 != %d", len(f.Aliases()))
|
|
}
|
|
if f.aliases[0] != "my-alias" {
|
|
t.Errorf("invalid Aliases entry - my-aliase != %s", f.aliases[0])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_Called(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
if f.Called() {
|
|
t.Errorf("invalid Called - true != false")
|
|
}
|
|
f.called = true
|
|
if !f.Called() {
|
|
t.Errorf("invalid Called - false != true")
|
|
}
|
|
}
|
|
|
|
func Test_Flag_DefaultValue(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
val := "test-default-value"
|
|
f.defaultValue = val
|
|
if f.DefaultValue() != val {
|
|
t.Errorf("invalid DefaultValue - %s != %s", val, f.DefaultValue())
|
|
}
|
|
}
|
|
|
|
func Test_Flag_EnvVar(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
val := "TEST_ENV_VAR"
|
|
f.envVar = val
|
|
if f.EnvVar() != val {
|
|
t.Errorf("invalid EnvVar - %s != %s", val, f.EnvVar())
|
|
}
|
|
}
|
|
|
|
func Test_Flag_Group(t *testing.T) {
|
|
g := testGroup()
|
|
f := testFlag(g)
|
|
if f.Group() != g {
|
|
t.Errorf("invalid Group - %#v != %#v", g, f.Group())
|
|
}
|
|
}
|
|
|
|
func Test_Flag_Hidden(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
if f.Hidden() {
|
|
t.Errorf("invalid Hidden - true != false")
|
|
}
|
|
f.hidden = true
|
|
if !f.Hidden() {
|
|
t.Errorf("invalid Hidden - false != true")
|
|
}
|
|
}
|
|
|
|
func Test_Flag_LongName(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
if f.LongName() != f.longName {
|
|
t.Errorf("invalid LongName - %s != %s", f.longName, f.LongName())
|
|
}
|
|
}
|
|
|
|
func Test_Flag_Required(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
if f.Required() {
|
|
t.Errorf("invalid Required - true != false")
|
|
}
|
|
f.required = true
|
|
if !f.Required() {
|
|
t.Errorf("invalid Required - false != true")
|
|
}
|
|
}
|
|
|
|
func Test_Flag_ShortName(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
if f.ShortName() != 0 {
|
|
t.Errorf("invalid ShortName - 0 != %d", f.ShortName())
|
|
}
|
|
f.shortName = 't'
|
|
if f.ShortName() != 't' {
|
|
t.Errorf("invalid ShortName - t != %c", f.ShortName())
|
|
}
|
|
}
|
|
|
|
func Test_Flag_Updated(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
if f.Updated() {
|
|
t.Errorf("invalid Updated - true != false")
|
|
}
|
|
f.updated = true
|
|
if !f.Updated() {
|
|
t.Errorf("invalid Updated - false != true")
|
|
}
|
|
}
|
|
|
|
func Test_Flag_Value(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
val := "test-val"
|
|
f.value = val
|
|
if f.Value() != val {
|
|
t.Errorf("invalid Value - %s != %s", val, f.Value())
|
|
}
|
|
}
|
|
|
|
func Test_Flag_Value_Boolean(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = BooleanType
|
|
f.value = true
|
|
if f.Value() != true {
|
|
t.Errorf("invalid Value - false != true")
|
|
}
|
|
f.value = false
|
|
if f.Value() != false {
|
|
t.Errorf("invalid Value - true != false")
|
|
}
|
|
}
|
|
|
|
func Test_Flag_Value_Float(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = FloatType
|
|
f.value = 3.4
|
|
if f.Value() != 3.4 {
|
|
t.Errorf("invalid Value - 3.4 != %f", f.Value())
|
|
}
|
|
}
|
|
|
|
func Test_Flag_Value_String(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = IntegerType
|
|
f.value = 10
|
|
if f.Value() != 10 {
|
|
t.Errorf("invalid Value - 10 != %d", f.Value())
|
|
}
|
|
}
|
|
|
|
func Test_Flag_markCalled(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.markCalled("test-flag")
|
|
if f.matchedName != "test-flag" {
|
|
t.Errorf("invalid matchedName - test-flag != %s", f.matchedName)
|
|
}
|
|
if !f.updated {
|
|
t.Errorf("invalid updated - true != false")
|
|
}
|
|
if !f.called {
|
|
t.Errorf("invalid called - true != false")
|
|
}
|
|
}
|
|
|
|
func Test_Flag_markCalled_invalid(t *testing.T) {
|
|
defer func() {
|
|
if r := recover(); r == nil {
|
|
t.Errorf("panic expected but did not occur")
|
|
}
|
|
}()
|
|
f := testFlag(testGroup())
|
|
f.markCalled("invalid-name")
|
|
}
|
|
|
|
func Test_Flag_markCalled_short(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.shortName = 't'
|
|
f.markCalled("t")
|
|
if !f.called {
|
|
t.Errorf("invalid called - true != false")
|
|
}
|
|
}
|
|
|
|
func Test_Flag_markCalled_alias(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.aliases = []string{"otherflag", "real-name"}
|
|
f.markCalled("real-name")
|
|
if !f.called {
|
|
t.Errorf("invalid called - true != false")
|
|
}
|
|
}
|
|
|
|
func Test_Flag_init(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
err := f.init()
|
|
if err != nil {
|
|
t.Errorf("unexpected error: %s", err)
|
|
}
|
|
if f.value != "" {
|
|
t.Errorf("invalid value - empty string != %#v", f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Flag_init_used(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.updated = true
|
|
err := f.init()
|
|
if err == nil {
|
|
t.Error("expected error but did not occur")
|
|
}
|
|
}
|
|
|
|
func Test_Flag_init_array_bool(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = BooleanType
|
|
err := f.init()
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if _, ok := f.value.([]bool); !ok {
|
|
t.Errorf("invalid value - []bool != %T", f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Flag_init_array_float(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = FloatType
|
|
err := f.init()
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if _, ok := f.value.([]float64); !ok {
|
|
t.Errorf("invalid value - []float64 != %T", f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Flag_init_array_integer(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = IntegerType
|
|
err := f.init()
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if _, ok := f.value.([]int64); !ok {
|
|
t.Errorf("invalid value - []int64 != %T", f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Flag_init_array_string(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = StringType
|
|
err := f.init()
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if _, ok := f.value.([]string); !ok {
|
|
t.Errorf("invalid value - []string != %T", f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Flag_init_boolean(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = BooleanType
|
|
err := f.init()
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if _, ok := f.value.(bool); !ok {
|
|
t.Errorf("invalid value - bool != %T", f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Flag_init_float(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = FloatType
|
|
err := f.init()
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if _, ok := f.value.(float64); !ok {
|
|
t.Errorf("invalid value - float64 != %T", f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Flag_init_increment(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = IncrementType
|
|
err := f.init()
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if _, ok := f.value.(int64); !ok {
|
|
t.Errorf("invalid value - int64 != %T", f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Flag_init_integer(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = IntegerType
|
|
err := f.init()
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if _, ok := f.value.(int64); !ok {
|
|
t.Errorf("invalid value - int64 != %T", f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Flag_init_map_bool(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = BooleanType
|
|
err := f.init()
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if _, ok := f.value.(map[string]bool); !ok {
|
|
t.Errorf("invalid value - map[string]bool != %T", f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Flag_init_map_float(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = FloatType
|
|
err := f.init()
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if _, ok := f.value.(map[string]float64); !ok {
|
|
t.Errorf("invalid value - map[string]float64 != %T", f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Flag_init_map_integer(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = IntegerType
|
|
err := f.init()
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if _, ok := f.value.(map[string]int64); !ok {
|
|
t.Errorf("invalid value - map[string]int64 != %T", f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Flag_init_map_string(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = StringType
|
|
err := f.init()
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if _, ok := f.value.(map[string]string); !ok {
|
|
t.Errorf("invalid value - map[string]string != %T", f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Flag_init_string(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = StringType
|
|
err := f.init()
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if _, ok := f.value.(string); !ok {
|
|
t.Errorf("invalid value - string != %T", f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Flag_init_map_invalid(t *testing.T) {
|
|
defer func() {
|
|
if r := recover(); r == nil {
|
|
t.Errorf("panic expected but did not occur")
|
|
}
|
|
}()
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = ArrayType
|
|
f.init()
|
|
}
|
|
|
|
func Test_Flag_init_array_invalid(t *testing.T) {
|
|
defer func() {
|
|
if r := recover(); r == nil {
|
|
t.Errorf("panic expected but did not occur")
|
|
}
|
|
}()
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = MapType
|
|
f.init()
|
|
}
|
|
|
|
func Test_Flag_init_envVar(t *testing.T) {
|
|
defer func() {
|
|
os.Setenv("FLAG_ENV_TEST", "")
|
|
}()
|
|
f := testFlag(testGroup())
|
|
f.envVar = "FLAG_ENV_TEST"
|
|
val := "env-test-value"
|
|
if err := os.Setenv("FLAG_ENV_TEST", val); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.init(); err != nil {
|
|
t.Errorf("unexpected error: %s", err)
|
|
}
|
|
if f.value != val {
|
|
t.Errorf("invalid value - %s != %s", val, f.value)
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_array_bool(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = BooleanType
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("true"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().([]bool)
|
|
if !ok {
|
|
t.Errorf("invalid value type - []bool != %T", f.Value())
|
|
}
|
|
if !v[0] {
|
|
t.Errorf("invalid array value - true != false")
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_array_bool_ptr(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = BooleanType
|
|
val := []bool{}
|
|
customVar(&val)(f)
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("true"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().([]bool)
|
|
if !ok {
|
|
t.Errorf("invalid value type - []bool != %T", f.Value())
|
|
}
|
|
if !v[0] {
|
|
t.Errorf("invalid array value - true != false")
|
|
}
|
|
if !val[0] {
|
|
t.Errorf("invalid array value - true != false")
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_array_bool_multi(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = BooleanType
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("true"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
if err := f.setValue("false"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().([]bool)
|
|
if !ok {
|
|
t.Errorf("invalid value type - []bool != %T", f.Value())
|
|
}
|
|
if !v[0] {
|
|
t.Errorf("invalid array value - true != false")
|
|
}
|
|
if v[1] {
|
|
t.Errorf("invalid array value - false != true")
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_array_bool_multi_ptr(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = BooleanType
|
|
val := []bool{}
|
|
customVar(&val)(f)
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("true"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
if err := f.setValue("false"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().([]bool)
|
|
if !ok {
|
|
t.Errorf("invalid value type - []bool != %T", f.Value())
|
|
}
|
|
if !v[0] {
|
|
t.Errorf("invalid array value - true != false")
|
|
}
|
|
if v[1] {
|
|
t.Errorf("invalid array value - false != true")
|
|
}
|
|
if !val[0] {
|
|
t.Errorf("invalid array value - true != false")
|
|
}
|
|
if val[1] {
|
|
t.Errorf("invalid array value - false != true")
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_array_float(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = FloatType
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("4.2"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().([]float64)
|
|
if !ok {
|
|
t.Errorf("invalid value type - []float64 != %T", f.Value())
|
|
}
|
|
if v[0] != 4.2 {
|
|
t.Errorf("invalid array value - 4.2 != %#v", v[0])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_array_float_ptr(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = FloatType
|
|
val := []float64{}
|
|
customVar(&val)(f)
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("4.2"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().([]float64)
|
|
if !ok {
|
|
t.Errorf("invalid value type - []float64 != %T", f.Value())
|
|
}
|
|
if v[0] != 4.2 {
|
|
t.Errorf("invalid array value - 4.2 != %#v", v[0])
|
|
}
|
|
if val[0] != 4.2 {
|
|
t.Errorf("invalid array value - 4.2 != %#v", val[0])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_array_float_multi(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = FloatType
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("4.2"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
if err := f.setValue("10.5"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().([]float64)
|
|
if !ok {
|
|
t.Errorf("invalid value type - []float64 != %T", f.Value())
|
|
}
|
|
if v[0] != 4.2 {
|
|
t.Errorf("invalid array value - 4.2 != %#v", v[0])
|
|
}
|
|
if v[1] != 10.5 {
|
|
t.Errorf("invalid array value - 10.5 != %#v", v[1])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_array_float_multi_ptr(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = FloatType
|
|
val := []float64{}
|
|
customVar(&val)(f)
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("4.2"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
if err := f.setValue("10.5"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().([]float64)
|
|
if !ok {
|
|
t.Errorf("invalid value type - []float64 != %T", f.Value())
|
|
}
|
|
if v[0] != 4.2 {
|
|
t.Errorf("invalid array value - 4.2 != %#v", v[0])
|
|
}
|
|
if v[1] != 10.5 {
|
|
t.Errorf("invalid array value - 10.5 != %#v", v[1])
|
|
}
|
|
if val[0] != 4.2 {
|
|
t.Errorf("invalid array value - 4.2 != %#v", val[0])
|
|
}
|
|
if val[1] != 10.5 {
|
|
t.Errorf("invalid array value - 10.5 != %#v", val[1])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_array_integer(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = IntegerType
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("100"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().([]int64)
|
|
if !ok {
|
|
t.Errorf("invalid value type - []int64 != %T", f.Value())
|
|
}
|
|
if v[0] != 100 {
|
|
t.Errorf("invalid array value - 100 != %#v", v[0])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_array_integer_ptr(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = IntegerType
|
|
val := []int64{}
|
|
customVar(&val)(f)
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("100"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().([]int64)
|
|
if !ok {
|
|
t.Errorf("invalid value type - []int64 != %T", f.Value())
|
|
}
|
|
if v[0] != 100 {
|
|
t.Errorf("invalid array value - 100 != %#v", v[0])
|
|
}
|
|
if val[0] != 100 {
|
|
t.Errorf("invalid array value - 100 != %#v", val[0])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_array_integer_multi(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = IntegerType
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("100"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
if err := f.setValue("-22"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().([]int64)
|
|
if !ok {
|
|
t.Errorf("invalid value type - []int64 != %T", f.Value())
|
|
}
|
|
if v[0] != 100 {
|
|
t.Errorf("invalid array value - 100 != %#v", v[0])
|
|
}
|
|
if v[1] != -22 {
|
|
t.Errorf("invalid array value - -22 != %#v", v[1])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_array_integer_multi_ptr(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = IntegerType
|
|
val := []int64{}
|
|
customVar(&val)(f)
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("100"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
if err := f.setValue("-22"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().([]int64)
|
|
if !ok {
|
|
t.Errorf("invalid value type - []int64 != %T", f.Value())
|
|
}
|
|
if v[0] != 100 {
|
|
t.Errorf("invalid array value - 100 != %#v", v[0])
|
|
}
|
|
if v[1] != -22 {
|
|
t.Errorf("invalid array value - -22 != %#v", v[1])
|
|
}
|
|
if val[0] != 100 {
|
|
t.Errorf("invalid array value - 100 != %#v", val[0])
|
|
}
|
|
if val[1] != -22 {
|
|
t.Errorf("invalid array value - -22 != %#v", val[1])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_array_string(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = StringType
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("test value"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().([]string)
|
|
if !ok {
|
|
t.Errorf("invalid value type - []string != %T", f.Value())
|
|
}
|
|
if v[0] != "test value" {
|
|
t.Errorf("invalid array value - test value != %#v", v[0])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_array_string_ptr(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = StringType
|
|
val := []string{}
|
|
customVar(&val)(f)
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("test value"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().([]string)
|
|
if !ok {
|
|
t.Errorf("invalid value type - []string != %T", f.Value())
|
|
}
|
|
if v[0] != "test value" {
|
|
t.Errorf("invalid array value - test value != %#v", v[0])
|
|
}
|
|
if val[0] != "test value" {
|
|
t.Errorf("invalid array value - test value != %#v", val[0])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_array_string_multi(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = StringType
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("test value"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
if err := f.setValue("second test value"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().([]string)
|
|
if !ok {
|
|
t.Errorf("invalid value type - []string != %T", f.Value())
|
|
}
|
|
if v[0] != "test value" {
|
|
t.Errorf("invalid array value - test value != %#v", v[0])
|
|
}
|
|
if v[1] != "second test value" {
|
|
t.Errorf("invalid array value - second test value != %#v", v[1])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_array_string_multi_ptr(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = ArrayType
|
|
f.subkind = StringType
|
|
val := []string{}
|
|
customVar(&val)(f)
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("test value"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
if err := f.setValue("second test value"); err != nil {
|
|
t.Errorf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().([]string)
|
|
if !ok {
|
|
t.Errorf("invalid value type - []string != %T", f.Value())
|
|
}
|
|
if v[0] != "test value" {
|
|
t.Errorf("invalid array value - test value != %#v", v[0])
|
|
}
|
|
if v[1] != "second test value" {
|
|
t.Errorf("invalid array value - second test value != %#v", v[1])
|
|
}
|
|
if val[0] != "test value" {
|
|
t.Errorf("invalid array value - test value != %#v", val[0])
|
|
}
|
|
if val[1] != "second test value" {
|
|
t.Errorf("invalid array value - second test value != %#v", val[1])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_map_bool(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = BooleanType
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("ack=true"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().(map[string]bool)
|
|
if !ok {
|
|
t.Fatalf("invalid value type - map[string]bool != %T", f.Value())
|
|
}
|
|
if _, ok := v["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if !v["ack"] {
|
|
t.Errorf("invalid map value - true != false")
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_map_bool_ptr(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = BooleanType
|
|
val := map[string]bool{}
|
|
customVar(&val)(f)
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("ack=true"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().(map[string]bool)
|
|
if !ok {
|
|
t.Fatalf("invalid value type - map[string]bool != %T", f.Value())
|
|
}
|
|
if _, ok := v["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if !v["ack"] {
|
|
t.Errorf("invalid map value - true != false")
|
|
}
|
|
if _, ok := val["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if !val["ack"] {
|
|
t.Errorf("invalid map value - true != false")
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_map_bool_multi(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = BooleanType
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("ack=true"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if err := f.setValue("bar=false"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().(map[string]bool)
|
|
if !ok {
|
|
t.Fatalf("invalid value type - map[string]bool != %T", f.Value())
|
|
}
|
|
if _, ok := v["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if !v["ack"] {
|
|
t.Errorf("invalid map value - true != false")
|
|
}
|
|
if _, ok := v["bar"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if v["bar"] {
|
|
t.Errorf("invalid map value - false != true")
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_map_bool_multi_ptr(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = BooleanType
|
|
val := map[string]bool{}
|
|
customVar(&val)(f)
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("ack=true"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if err := f.setValue("bar=false"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().(map[string]bool)
|
|
if !ok {
|
|
t.Fatalf("invalid value type - map[string]bool != %T", f.Value())
|
|
}
|
|
if _, ok := v["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if !v["ack"] {
|
|
t.Errorf("invalid map value - true != false")
|
|
}
|
|
if _, ok := v["bar"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if v["bar"] {
|
|
t.Errorf("invalid map value - false != true")
|
|
}
|
|
if _, ok := val["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if !val["ack"] {
|
|
t.Errorf("invalid map value - true != false")
|
|
}
|
|
if _, ok := val["bar"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if val["bar"] {
|
|
t.Errorf("invalid map value - false != true")
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_map_float(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = FloatType
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("ack=2.2"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().(map[string]float64)
|
|
if !ok {
|
|
t.Fatalf("invalid value type - map[string]float64 != %T", f.Value())
|
|
}
|
|
if _, ok := v["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if v["ack"] != 2.2 {
|
|
t.Errorf("invalid map value - 2.2 != %#v", v["ack"])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_map_float_ptr(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = FloatType
|
|
val := map[string]float64{}
|
|
customVar(&val)(f)
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("ack=2.2"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().(map[string]float64)
|
|
if !ok {
|
|
t.Fatalf("invalid value type - map[string]float64 != %T", f.Value())
|
|
}
|
|
if _, ok := v["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if v["ack"] != 2.2 {
|
|
t.Errorf("invalid map value - 2.2 != %#v", v["ack"])
|
|
}
|
|
if _, ok := val["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if val["ack"] != 2.2 {
|
|
t.Errorf("invalid map value - 2.2 != %#v", val["ack"])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_map_float_multi(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = FloatType
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("ack=2.2"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if err := f.setValue("bar=10"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().(map[string]float64)
|
|
if !ok {
|
|
t.Fatalf("invalid value type - map[string]float64 != %T", f.Value())
|
|
}
|
|
if _, ok := v["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if v["ack"] != 2.2 {
|
|
t.Errorf("invalid map value - 2.2 != %#v", v["ack"])
|
|
}
|
|
if _, ok := v["bar"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if v["bar"] != 10 {
|
|
t.Errorf("invalid map value - 10 != %#v", v["bar"])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_map_float_multi_ptr(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = FloatType
|
|
val := map[string]float64{}
|
|
customVar(&val)(f)
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("ack=2.2"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if err := f.setValue("bar=10"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().(map[string]float64)
|
|
if !ok {
|
|
t.Fatalf("invalid value type - map[string]float64 != %T", f.Value())
|
|
}
|
|
if _, ok := v["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if v["ack"] != 2.2 {
|
|
t.Errorf("invalid map value - 2.2 != %#v", v["ack"])
|
|
}
|
|
if _, ok := v["bar"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if v["bar"] != 10 {
|
|
t.Errorf("invalid map value - 10 != %#v", v["bar"])
|
|
}
|
|
if _, ok := val["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if val["ack"] != 2.2 {
|
|
t.Errorf("invalid map value - 2.2 != %#v", val["ack"])
|
|
}
|
|
if _, ok := val["bar"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if val["bar"] != 10 {
|
|
t.Errorf("invalid map value - 10 != %#v", val["bar"])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_map_integer(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = IntegerType
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("ack=2"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().(map[string]int64)
|
|
if !ok {
|
|
t.Fatalf("invalid value type - map[string]int64 != %T", f.Value())
|
|
}
|
|
if _, ok := v["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if v["ack"] != 2 {
|
|
t.Errorf("invalid map value - 2 != %#v", v["ack"])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_map_integer_ptr(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = IntegerType
|
|
val := map[string]int64{}
|
|
customVar(&val)(f)
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("ack=2"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().(map[string]int64)
|
|
if !ok {
|
|
t.Fatalf("invalid value type - map[string]int64 != %T", f.Value())
|
|
}
|
|
if _, ok := v["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if v["ack"] != 2 {
|
|
t.Errorf("invalid map value - 2 != %#v", v["ack"])
|
|
}
|
|
if _, ok := val["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if val["ack"] != 2 {
|
|
t.Errorf("invalid map value - 2 != %#v", val["ack"])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_map_integer_multi(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = IntegerType
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("ack=2"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if err := f.setValue("bar=10"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().(map[string]int64)
|
|
if !ok {
|
|
t.Fatalf("invalid value type - map[string]int64 != %T", f.Value())
|
|
}
|
|
if _, ok := v["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if v["ack"] != 2 {
|
|
t.Errorf("invalid map value - 2 != %#v", v["ack"])
|
|
}
|
|
if _, ok := v["bar"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if v["bar"] != 10 {
|
|
t.Errorf("invalid map value - 10 != %#v", v["bar"])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_map_integer_multi_ptr(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = IntegerType
|
|
val := map[string]int64{}
|
|
customVar(&val)(f)
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("ack=2"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if err := f.setValue("bar=10"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().(map[string]int64)
|
|
if !ok {
|
|
t.Fatalf("invalid value type - map[string]float64 != %T", f.Value())
|
|
}
|
|
if _, ok := v["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if v["ack"] != 2 {
|
|
t.Errorf("invalid map value - 2 != %#v", v["ack"])
|
|
}
|
|
if _, ok := v["bar"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if v["bar"] != 10 {
|
|
t.Errorf("invalid map value - 10 != %#v", v["bar"])
|
|
}
|
|
if _, ok := val["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if val["ack"] != 2 {
|
|
t.Errorf("invalid map value - 2 != %#v", val["ack"])
|
|
}
|
|
if _, ok := val["bar"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if val["bar"] != 10 {
|
|
t.Errorf("invalid map value - 10 != %#v", val["bar"])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_map_string(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = StringType
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("ack=test value"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().(map[string]string)
|
|
if !ok {
|
|
t.Fatalf("invalid value type - map[string]string != %T", f.Value())
|
|
}
|
|
if _, ok := v["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if v["ack"] != "test value" {
|
|
t.Errorf("invalid map value - test value != %#v", v["ack"])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_map_string_ptr(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = StringType
|
|
val := map[string]string{}
|
|
customVar(&val)(f)
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("ack=test value"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().(map[string]string)
|
|
if !ok {
|
|
t.Fatalf("invalid value type - map[string]string != %T", f.Value())
|
|
}
|
|
if _, ok := v["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if v["ack"] != "test value" {
|
|
t.Errorf("invalid map value - test value != %#v", v["ack"])
|
|
}
|
|
if _, ok := val["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if val["ack"] != "test value" {
|
|
t.Errorf("invalid map value - test value != %#v", val["ack"])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_map_string_multi(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = StringType
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("ack=test value"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if err := f.setValue("bar=another thing"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().(map[string]string)
|
|
if !ok {
|
|
t.Fatalf("invalid value type - map[string]string != %T", f.Value())
|
|
}
|
|
if _, ok := v["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if v["ack"] != "test value" {
|
|
t.Errorf("invalid map value - test value != %#v", v["ack"])
|
|
}
|
|
if _, ok := v["bar"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if v["bar"] != "another thing" {
|
|
t.Errorf("invalid map value - another thing != %#v", v["bar"])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_map_string_multi_ptr(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = MapType
|
|
f.subkind = StringType
|
|
val := map[string]string{}
|
|
customVar(&val)(f)
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("ack=test value"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if err := f.setValue("bar=another thing"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
v, ok := f.Value().(map[string]string)
|
|
if !ok {
|
|
t.Fatalf("invalid value type - map[string]string != %T", f.Value())
|
|
}
|
|
if _, ok := v["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if v["ack"] != "test value" {
|
|
t.Errorf("invalid map value - test value != %#v", v["ack"])
|
|
}
|
|
if _, ok := v["bar"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if v["bar"] != "another thing" {
|
|
t.Errorf("invalid map value - another thing != %#v", v["bar"])
|
|
}
|
|
if _, ok := val["ack"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if val["ack"] != "test value" {
|
|
t.Errorf("invalid map value - test value != %#v", val["ack"])
|
|
}
|
|
if _, ok := val["bar"]; !ok {
|
|
t.Fatalf("invalid map value - key does not exist")
|
|
}
|
|
if val["bar"] != "another thing" {
|
|
t.Errorf("invalid map value - another thing != %#v", val["bar"])
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_bool(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = BooleanType
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("false"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if f.Value().(bool) {
|
|
t.Errorf("invalid value - false != true")
|
|
}
|
|
if err := f.setValue("true"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if !f.Value().(bool) {
|
|
t.Errorf("invalid value - true != false")
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_bool_ptr(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = BooleanType
|
|
var val bool
|
|
customVar(&val)(f)
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("false"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if f.Value().(bool) {
|
|
t.Errorf("invalid value - false != true")
|
|
}
|
|
if val {
|
|
t.Errorf("invalid value - false != true")
|
|
}
|
|
if err := f.setValue("true"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if !f.Value().(bool) {
|
|
t.Errorf("invalid value - true != false")
|
|
}
|
|
if !val {
|
|
t.Errorf("invalid value - false != true")
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_float(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = FloatType
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("2.2"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if f.Value().(float64) != 2.2 {
|
|
t.Errorf("invalid value - 2.2 != %#v", f.Value())
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_float_ptr(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = FloatType
|
|
var val float64
|
|
customVar(&val)(f)
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("2.2"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if f.Value().(float64) != 2.2 {
|
|
t.Errorf("invalid value - 2.2 != %#v", f.Value())
|
|
}
|
|
if val != 2.2 {
|
|
t.Errorf("invalid value - 2.2 != %#v", val)
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_increment(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = IncrementType
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("1"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if f.Value().(int64) != 1 {
|
|
t.Errorf("invalid value - 1 != %#v", f.Value())
|
|
}
|
|
if err := f.setValue("1"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if f.Value().(int64) != 2 {
|
|
t.Errorf("invalid value - 2 != %#v", f.Value())
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_increment_ptr(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = IncrementType
|
|
var val int64
|
|
customVar(&val)(f)
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("1"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if f.Value().(int64) != 1 {
|
|
t.Errorf("invalid value - 1 != %#v", f.Value())
|
|
}
|
|
if val != 1 {
|
|
t.Errorf("invalid value - 1 != %#v", val)
|
|
}
|
|
if err := f.setValue("1"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if f.Value().(int64) != 2 {
|
|
t.Errorf("invalid value - 2 != %#v", f.Value())
|
|
}
|
|
if val != 2 {
|
|
t.Errorf("invalid value - 2 != %#v", val)
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_string(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = StringType
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("test-value"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if f.Value().(string) != "test-value" {
|
|
t.Errorf("invalid value - test-value != %#v", f.Value())
|
|
}
|
|
}
|
|
|
|
func Test_Flag_setValue_string_ptr(t *testing.T) {
|
|
f := testFlag(testGroup())
|
|
f.kind = StringType
|
|
var val string
|
|
customVar(&val)(f)
|
|
if err := f.init(); err != nil {
|
|
t.Fatalf("unexpected error: %s", err)
|
|
}
|
|
if err := f.setValue("test-value"); err != nil {
|
|
t.Fatalf("failed to set value: %s", err)
|
|
}
|
|
if f.Value().(string) != "test-value" {
|
|
t.Errorf("invalid value - test-value != %#v", f.Value())
|
|
}
|
|
if val != "test-value" {
|
|
t.Errorf("invalid value - test-value != %#v", val)
|
|
}
|
|
}
|