Files
2026-10-01 09:50:59 +07:00

78 lines
2.2 KiB
Go

package lexicomai
import "testing"
func TestParseVersion(t *testing.T) {
if got := ParseVersion("7.012").String(); got != "7.12" {
t.Errorf("ParseVersion(7.012) = %q, want 7.12", got)
}
if got := ParseVersion("7").String(); got != "7" {
t.Errorf("ParseVersion(7) = %q", got)
}
}
func TestCompareVersions(t *testing.T) {
cases := []struct {
a, b string
want int
}{
{"7.12", "7.9", 1}, // семантически больше (в отличие от лексикографии)
{"7.9", "7.12", -1},
{"7.5", "7.5", 0},
{"7", "7.0", -1}, // короткая версия меньше при равенстве сегментов
}
for _, c := range cases {
if got := CompareVersions(c.a, c.b); got != c.want {
t.Errorf("Compare(%q,%q) = %d, want %d", c.a, c.b, got, c.want)
}
}
}
func TestParseDistroName(t *testing.T) {
p, err := parseDistroName("ups-7.012-release.sh")
if err != nil {
t.Fatalf("parse error: %v", err)
}
if p.Product != "ups" || p.Version != "7.012" || p.Branch != "release" {
t.Errorf("unexpected parts %+v", p)
}
if _, err := parseDistroName("readme.txt"); err == nil {
t.Error("non-distro name should error")
}
}
func TestResolveDistro(t *testing.T) {
names := []string{"ups-7.009-release.sh", "ups-7.012-release.sh", "ups-7.005-beta.sh", "spr-7.011-release.sh"}
// последняя release
got, err := ResolveDistro(names, "ups", "", "release")
if err != nil || got != "ups-7.012-release.sh" {
t.Errorf("latest release: %q, %v", got, err)
}
// точная версия
got, _ = ResolveDistro(names, "ups", "7.009", "release")
if got != "ups-7.009-release.sh" {
t.Errorf("exact version: %q", got)
}
// ветка beta
got, _ = ResolveDistro(names, "ups", "", "beta")
if got != "ups-7.005-beta.sh" {
t.Errorf("beta: %q", got)
}
// отсутствует
if _, err := ResolveDistro(names, "ses", "", "release"); err == nil {
t.Error("missing product should error")
}
}
func TestNormalizeBranch(t *testing.T) {
if b, _ := normalizeBranch(""); b != "release" {
t.Errorf("empty branch = %q", b)
}
if b, _ := normalizeBranch("BETA"); b != "beta" {
t.Errorf("BETA = %q", b)
}
if _, err := normalizeBranch("dev"); err == nil {
t.Error("unknown branch should error")
}
}