81 lines
2.3 KiB
Go
81 lines
2.3 KiB
Go
/*
|
|
Copyright 2020 Google LLC
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
package config
|
|
|
|
import "testing"
|
|
|
|
func TestMultiArg_Set_shouldAppendValue(t *testing.T) {
|
|
var arg multiArg
|
|
arg.Set("value1")
|
|
if len(arg) != 1 || arg[0] != "value1" {
|
|
t.Error("Fist value was not appended")
|
|
}
|
|
arg.Set("value2")
|
|
if len(arg) != 2 || arg[1] != "value2" {
|
|
t.Error("Second value was not appended")
|
|
}
|
|
}
|
|
|
|
func Test_KeyValueArg_Set_shouldSplitArgument(t *testing.T) {
|
|
arg := make(keyValueArg)
|
|
arg.Set("key=value")
|
|
if arg["key"] != "value" {
|
|
t.Error("Invalid split. key=value should be split to key=>value")
|
|
}
|
|
}
|
|
|
|
func Test_KeyValueArg_Set_shouldAcceptEqualAsValue(t *testing.T) {
|
|
arg := make(keyValueArg)
|
|
arg.Set("key=value=something")
|
|
if arg["key"] != "value=something" {
|
|
t.Error("Invalid split. key=value=something should be split to key=>value=something")
|
|
}
|
|
}
|
|
|
|
func Test_multiKeyMultiValueArg_Set_shouldSplitArgumentLikeKVA(t *testing.T) {
|
|
arg := make(multiKeyMultiValueArg)
|
|
arg.Set("key=value")
|
|
if arg["key"][0] != "value" {
|
|
t.Error("Invalid split. key=value should be split to key=>value")
|
|
}
|
|
}
|
|
|
|
func Test_multiKeyMultiValueArg_Set_ShouldAppendIfRepeated(t *testing.T) {
|
|
arg := make(multiKeyMultiValueArg)
|
|
arg.Set("key=v1")
|
|
arg.Set("key=v2")
|
|
if arg["key"][0] != "v1" || arg["key"][1] != "v2" {
|
|
t.Error("Invalid repeat behavior. Repeated keys should append values")
|
|
}
|
|
}
|
|
|
|
func Test_multiKeyMultiValueArg_Set_Composed(t *testing.T) {
|
|
arg := make(multiKeyMultiValueArg)
|
|
arg.Set("key1=value1;key2=value2")
|
|
if arg["key1"][0] != "value1" || arg["key2"][0] != "value2" {
|
|
t.Error("Invalid composed value parsing. key=value;key2=value2 should generate 2 keys")
|
|
}
|
|
}
|
|
|
|
func Test_multiKeyMultiValueArg_Set_WithEmptyValueShouldWork(t *testing.T) {
|
|
arg := make(multiKeyMultiValueArg)
|
|
err := arg.Set("")
|
|
if len(arg) != 0 || err != nil {
|
|
t.Error("multiKeyMultiValueArg must handle empty value")
|
|
}
|
|
}
|