Add tests for the string splitting function.
This commit is contained in:
		
							parent
							
								
									e95f80e351
								
							
						
					
					
						commit
						2079d811b4
					
				|  | @ -0,0 +1,32 @@ | |||
| package config | ||||
| 
 | ||||
| import ( | ||||
| 	"testing" | ||||
| 	"reflect" | ||||
| 	"fmt" | ||||
| ) | ||||
| 
 | ||||
| var getMapPairsFromStringTest = []struct { | ||||
| 	in string | ||||
| 	expected []string | ||||
| 	err      error | ||||
| }{ | ||||
| 	{"log_statement:all, work_mem:'4GB'", []string{"log_statement:all", "work_mem:'4GB'"}, nil}, | ||||
| 	{`log_statement:none, search_path:'"$user", public'`, []string{"log_statement:none", `search_path:'"$user", public'`}, nil}, | ||||
| 	{`search_path:'"$user"`, nil, fmt.Errorf("unclosed quote starting at position 13")}, | ||||
| 	{"", []string{""}, nil}, | ||||
| 	{",,log_statement:all	,", []string{"","","log_statement:all", ""}, nil}, | ||||
| } | ||||
| 
 | ||||
| func TestGetMapPairsFromString(t *testing.T) { | ||||
| 	for _, tt := range getMapPairsFromStringTest { | ||||
| 		got, err := getMapPairsFromString(tt.in) | ||||
| 		if err != tt.err && ((err == nil || tt.err == nil) || (err.Error() != tt.err.Error())) { | ||||
| 			t.Errorf("TestGetMapPairsFromString with %s: expected error: %#v, got %#v", tt.in, tt.err, err) | ||||
| 		} | ||||
| 		if !reflect.DeepEqual(got, tt.expected) { | ||||
| 			t.Errorf("TestGetMapPairsFromString with %s: expected %#v, got %#v", tt.in, tt.expected, got) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -185,9 +185,6 @@ func getMapPairsFromString(value string) (pairs []string , err error) { | |||
| 	state := Plain | ||||
| 	var start, quote int | ||||
| 
 | ||||
| 	if value == "" { | ||||
| 		return | ||||
| 	} | ||||
| 	for i, ch := range(strings.Split(value, "")) { | ||||
| 		if ch == `"` { | ||||
| 			if state == Plain { | ||||
|  | @ -208,14 +205,16 @@ func getMapPairsFromString(value string) (pairs []string , err error) { | |||
| 			} | ||||
| 		} | ||||
| 		if ch == "," && state == Plain { | ||||
| 			pairs = append(pairs, value[start:i]) | ||||
| 			start = i | ||||
| 			pairs = append(pairs, strings.Trim(value[start:i]," \t")) | ||||
| 			start = i + 1 | ||||
| 		} | ||||
| 	} | ||||
| 	if state != Plain { | ||||
| 		err = fmt.Errorf("unclosed quote starting at position %d", quote) | ||||
| 		err = fmt.Errorf("unclosed quote starting at position %d", quote + 1) | ||||
| 		pairs = nil | ||||
| 	} else { | ||||
| 		pairs = append(pairs, strings.Trim(value[start:], " \t")) | ||||
| 	} | ||||
| 	pairs = append(pairs, value[start:]) | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue