(Chore): Added unit tests for cli.go
This commit is contained in:
90
internal/cli/cli_test.go
Normal file
90
internal/cli/cli_test.go
Normal file
@@ -0,0 +1,90 @@
|
||||
package cli
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"zipprine/internal/models"
|
||||
)
|
||||
|
||||
func TestParseArchiveType(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
input string
|
||||
expected models.ArchiveType
|
||||
}{
|
||||
{"ZIP lowercase", "zip", models.ZIP},
|
||||
{"ZIP uppercase", "ZIP", models.ZIP},
|
||||
{"TAR", "tar", models.TAR},
|
||||
{"TAR.GZ", "tar.gz", models.TARGZ},
|
||||
{"TARGZ", "targz", models.TARGZ},
|
||||
{"TGZ", "tgz", models.TARGZ},
|
||||
{"GZIP", "gzip", models.GZIP},
|
||||
{"GZ", "gz", models.GZIP},
|
||||
{"RAR", "rar", models.RAR},
|
||||
{"RAR uppercase", "RAR", models.RAR},
|
||||
{"AUTO", "auto", models.AUTO},
|
||||
{"Unknown defaults to ZIP", "unknown", models.ZIP},
|
||||
{"Empty defaults to ZIP", "", models.ZIP},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
result := parseArchiveType(tt.input)
|
||||
if result != tt.expected {
|
||||
t.Errorf("parseArchiveType(%q) = %v; want %v", tt.input, result, tt.expected)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseArchiveTypeCaseInsensitive(t *testing.T) {
|
||||
// Test that parsing is case-insensitive
|
||||
inputs := []string{"zip", "ZIP", "Zip", "ZiP"}
|
||||
for _, input := range inputs {
|
||||
result := parseArchiveType(input)
|
||||
if result != models.ZIP {
|
||||
t.Errorf("parseArchiveType(%q) = %v; want %v", input, result, models.ZIP)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseArchiveTypeAllFormats(t *testing.T) {
|
||||
// Ensure all supported formats are handled
|
||||
formats := map[string]models.ArchiveType{
|
||||
"zip": models.ZIP,
|
||||
"tar": models.TAR,
|
||||
"tar.gz": models.TARGZ,
|
||||
"gzip": models.GZIP,
|
||||
"rar": models.RAR,
|
||||
"auto": models.AUTO,
|
||||
}
|
||||
|
||||
for input, expected := range formats {
|
||||
result := parseArchiveType(input)
|
||||
if result != expected {
|
||||
t.Errorf("parseArchiveType(%q) = %v; want %v", input, result, expected)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseArchiveTypeTarGzVariants(t *testing.T) {
|
||||
// Test all variants of TAR.GZ
|
||||
variants := []string{"tar.gz", "targz", "tgz"}
|
||||
for _, variant := range variants {
|
||||
result := parseArchiveType(variant)
|
||||
if result != models.TARGZ {
|
||||
t.Errorf("parseArchiveType(%q) = %v; want %v", variant, result, models.TARGZ)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseArchiveTypeGzipVariants(t *testing.T) {
|
||||
// Test all variants of GZIP
|
||||
variants := []string{"gzip", "gz"}
|
||||
for _, variant := range variants {
|
||||
result := parseArchiveType(variant)
|
||||
if result != models.GZIP {
|
||||
t.Errorf("parseArchiveType(%q) = %v; want %v", variant, result, models.GZIP)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user