60 lines
2.5 KiB
Go
60 lines
2.5 KiB
Go
|
package utils
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestGetParentDirectoryPath(t *testing.T) {
|
||
|
tests := []struct {
|
||
|
input string
|
||
|
expectedOutput string
|
||
|
}{
|
||
|
{input: "/", expectedOutput: ""}, // Root directory
|
||
|
{input: "/subfolder", expectedOutput: "/"}, // Single subfolder
|
||
|
{input: "/sub/sub/", expectedOutput: "/sub"}, // Nested subfolder with trailing slash
|
||
|
{input: "/subfolder/", expectedOutput: "/"}, // Relative path with trailing slash
|
||
|
{input: "", expectedOutput: ""}, // Empty string treated as root
|
||
|
{input: "/sub/subfolder", expectedOutput: "/sub"}, // Double slash in path
|
||
|
{input: "/sub/subfolder/deep/nested/", expectedOutput: "/sub/subfolder/deep"}, // Double slash in path
|
||
|
}
|
||
|
|
||
|
for _, test := range tests {
|
||
|
t.Run(test.input, func(t *testing.T) {
|
||
|
actualOutput := GetParentDirectoryPath(test.input)
|
||
|
if actualOutput != test.expectedOutput {
|
||
|
t.Errorf("\n\tinput %q\n\texpected %q\n\tgot %q",
|
||
|
test.input, test.expectedOutput, actualOutput)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestCapitalizeFirst(t *testing.T) {
|
||
|
tests := []struct {
|
||
|
input string
|
||
|
expectedOutput string
|
||
|
}{
|
||
|
{input: "", expectedOutput: ""}, // Empty string
|
||
|
{input: "a", expectedOutput: "A"}, // Single lowercase letter
|
||
|
{input: "A", expectedOutput: "A"}, // Single uppercase letter
|
||
|
{input: "hello", expectedOutput: "Hello"}, // All lowercase
|
||
|
{input: "Hello", expectedOutput: "Hello"}, // Already capitalized
|
||
|
{input: "123hello", expectedOutput: "123hello"}, // Non-alphabetic first character
|
||
|
{input: "hELLO", expectedOutput: "HELLO"}, // Mixed case
|
||
|
{input: " hello", expectedOutput: " hello"}, // Leading space, no capitalization
|
||
|
{input: "hello world", expectedOutput: "Hello world"}, // Phrase with spaces
|
||
|
{input: " hello world", expectedOutput: " hello world"}, // Phrase with leading space
|
||
|
{input: "123 hello world", expectedOutput: "123 hello world"}, // Numbers before text
|
||
|
}
|
||
|
|
||
|
for _, test := range tests {
|
||
|
t.Run(test.input, func(t *testing.T) {
|
||
|
actualOutput := CapitalizeFirst(test.input)
|
||
|
if actualOutput != test.expectedOutput {
|
||
|
t.Errorf("\n\tinput %q\n\texpected %q\n\tgot %q",
|
||
|
test.input, test.expectedOutput, actualOutput)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|