Add tests for funcs in cobra.go (#2094)
This commit is contained in:
		
							
								
								
									
										182
									
								
								cobra_test.go
									
									
									
									
									
								
							
							
						
						
									
										182
									
								
								cobra_test.go
									
									
									
									
									
								
							@ -40,3 +40,185 @@ func TestAddTemplateFunctions(t *testing.T) {
 | 
				
			|||||||
		t.Errorf("Expected UsageString: %v\nGot: %v", expected, got)
 | 
							t.Errorf("Expected UsageString: %v\nGot: %v", expected, got)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestLevenshteinDistance(t *testing.T) {
 | 
				
			||||||
 | 
						tests := []struct {
 | 
				
			||||||
 | 
							name       string
 | 
				
			||||||
 | 
							s          string
 | 
				
			||||||
 | 
							t          string
 | 
				
			||||||
 | 
							ignoreCase bool
 | 
				
			||||||
 | 
							expected   int
 | 
				
			||||||
 | 
						}{
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:       "Equal strings (case-sensitive)",
 | 
				
			||||||
 | 
								s:          "hello",
 | 
				
			||||||
 | 
								t:          "hello",
 | 
				
			||||||
 | 
								ignoreCase: false,
 | 
				
			||||||
 | 
								expected:   0,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:       "Equal strings (case-insensitive)",
 | 
				
			||||||
 | 
								s:          "Hello",
 | 
				
			||||||
 | 
								t:          "hello",
 | 
				
			||||||
 | 
								ignoreCase: true,
 | 
				
			||||||
 | 
								expected:   0,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:       "Different strings (case-sensitive)",
 | 
				
			||||||
 | 
								s:          "kitten",
 | 
				
			||||||
 | 
								t:          "sitting",
 | 
				
			||||||
 | 
								ignoreCase: false,
 | 
				
			||||||
 | 
								expected:   3,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:       "Different strings (case-insensitive)",
 | 
				
			||||||
 | 
								s:          "Kitten",
 | 
				
			||||||
 | 
								t:          "Sitting",
 | 
				
			||||||
 | 
								ignoreCase: true,
 | 
				
			||||||
 | 
								expected:   3,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:       "Empty strings",
 | 
				
			||||||
 | 
								s:          "",
 | 
				
			||||||
 | 
								t:          "",
 | 
				
			||||||
 | 
								ignoreCase: false,
 | 
				
			||||||
 | 
								expected:   0,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:       "One empty string",
 | 
				
			||||||
 | 
								s:          "abc",
 | 
				
			||||||
 | 
								t:          "",
 | 
				
			||||||
 | 
								ignoreCase: false,
 | 
				
			||||||
 | 
								expected:   3,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:       "Both empty strings",
 | 
				
			||||||
 | 
								s:          "",
 | 
				
			||||||
 | 
								t:          "",
 | 
				
			||||||
 | 
								ignoreCase: true,
 | 
				
			||||||
 | 
								expected:   0,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, tt := range tests {
 | 
				
			||||||
 | 
							t.Run(tt.name, func(t *testing.T) {
 | 
				
			||||||
 | 
								// Act
 | 
				
			||||||
 | 
								got := ld(tt.s, tt.t, tt.ignoreCase)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Assert
 | 
				
			||||||
 | 
								if got != tt.expected {
 | 
				
			||||||
 | 
									t.Errorf("Expected ld: %v\nGot: %v", tt.expected, got)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestStringInSlice(t *testing.T) {
 | 
				
			||||||
 | 
						tests := []struct {
 | 
				
			||||||
 | 
							name     string
 | 
				
			||||||
 | 
							a        string
 | 
				
			||||||
 | 
							list     []string
 | 
				
			||||||
 | 
							expected bool
 | 
				
			||||||
 | 
						}{
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:     "String in slice (case-sensitive)",
 | 
				
			||||||
 | 
								a:        "apple",
 | 
				
			||||||
 | 
								list:     []string{"orange", "banana", "apple", "grape"},
 | 
				
			||||||
 | 
								expected: true,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:     "String not in slice (case-sensitive)",
 | 
				
			||||||
 | 
								a:        "pear",
 | 
				
			||||||
 | 
								list:     []string{"orange", "banana", "apple", "grape"},
 | 
				
			||||||
 | 
								expected: false,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:     "String in slice (case-insensitive)",
 | 
				
			||||||
 | 
								a:        "APPLE",
 | 
				
			||||||
 | 
								list:     []string{"orange", "banana", "apple", "grape"},
 | 
				
			||||||
 | 
								expected: false,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:     "Empty slice",
 | 
				
			||||||
 | 
								a:        "apple",
 | 
				
			||||||
 | 
								list:     []string{},
 | 
				
			||||||
 | 
								expected: false,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:     "Empty string",
 | 
				
			||||||
 | 
								a:        "",
 | 
				
			||||||
 | 
								list:     []string{"orange", "banana", "apple", "grape"},
 | 
				
			||||||
 | 
								expected: false,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:     "Empty strings match",
 | 
				
			||||||
 | 
								a:        "",
 | 
				
			||||||
 | 
								list:     []string{"orange", ""},
 | 
				
			||||||
 | 
								expected: true,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:     "Empty string in empty slice",
 | 
				
			||||||
 | 
								a:        "",
 | 
				
			||||||
 | 
								list:     []string{},
 | 
				
			||||||
 | 
								expected: false,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, tt := range tests {
 | 
				
			||||||
 | 
							t.Run(tt.name, func(t *testing.T) {
 | 
				
			||||||
 | 
								// Act
 | 
				
			||||||
 | 
								got := stringInSlice(tt.a, tt.list)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Assert
 | 
				
			||||||
 | 
								if got != tt.expected {
 | 
				
			||||||
 | 
									t.Errorf("Expected stringInSlice: %v\nGot: %v", tt.expected, got)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestRpad(t *testing.T) {
 | 
				
			||||||
 | 
						tests := []struct {
 | 
				
			||||||
 | 
							name        string
 | 
				
			||||||
 | 
							inputString string
 | 
				
			||||||
 | 
							padding     int
 | 
				
			||||||
 | 
							expected    string
 | 
				
			||||||
 | 
						}{
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:        "Padding required",
 | 
				
			||||||
 | 
								inputString: "Hello",
 | 
				
			||||||
 | 
								padding:     10,
 | 
				
			||||||
 | 
								expected:    "Hello     ",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:        "No padding required",
 | 
				
			||||||
 | 
								inputString: "World",
 | 
				
			||||||
 | 
								padding:     5,
 | 
				
			||||||
 | 
								expected:    "World",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:        "Empty string",
 | 
				
			||||||
 | 
								inputString: "",
 | 
				
			||||||
 | 
								padding:     8,
 | 
				
			||||||
 | 
								expected:    "        ",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								name:        "Zero padding",
 | 
				
			||||||
 | 
								inputString: "cobra",
 | 
				
			||||||
 | 
								padding:     0,
 | 
				
			||||||
 | 
								expected:    "cobra",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, tt := range tests {
 | 
				
			||||||
 | 
							t.Run(tt.name, func(t *testing.T) {
 | 
				
			||||||
 | 
								// Act
 | 
				
			||||||
 | 
								got := rpad(tt.inputString, tt.padding)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Assert
 | 
				
			||||||
 | 
								if got != tt.expected {
 | 
				
			||||||
 | 
									t.Errorf("Expected rpad: %v\nGot: %v", tt.expected, got)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user