package httpimport ("testing""maragu.dev/is""app/html")func TestSemverCmp(t *testing.T) {cases := []struct {a, b stringwant int}{{"4.0.0", "4.0.0", 0},{"4.1.0", "4.0.0", 1},{"4.0.0", "4.1.0", -1},{"4.0.1", "4.0.0", 1},{"5.0.0", "4.9.9", 1},{"4.10.0", "4.9.0", 1},}for _, c := range cases {t.Run(c.a+"_vs_"+c.b, func(t *testing.T) {is.Equal(t, c.want, semverCmp(c.a, c.b))})}}func TestNewerCanary(t *testing.T) {rel := func(base string, build int) html.Release {return html.Release{Version: base, CanaryBuild: build, IsCanary: true}}t.Run("higher base is newer for canary client", func(t *testing.T) {is.True(t, newerCanary(rel("4.1.0", 1), "4.0.0", 5, true))})t.Run("same base higher build is newer for canary client", func(t *testing.T) {is.True(t, newerCanary(rel("4.0.0", 6), "4.0.0", 5, true))})t.Run("same base same build is not newer for canary client", func(t *testing.T) {is.True(t, !newerCanary(rel("4.0.0", 5), "4.0.0", 5, true))})t.Run("lower base is not newer for canary client", func(t *testing.T) {is.True(t, !newerCanary(rel("3.9.0", 99), "4.0.0", 1, true))})t.Run("same base canary is newer than stable client", func(t *testing.T) {is.True(t, newerCanary(rel("4.0.0", 1), "4.0.0", 0, false))})t.Run("higher base canary is newer than stable client", func(t *testing.T) {is.True(t, newerCanary(rel("4.1.0", 1), "4.0.0", 0, false))})t.Run("lower base canary is not newer than stable client", func(t *testing.T) {is.True(t, !newerCanary(rel("3.9.0", 99), "4.0.0", 0, false))})}func TestNormalizePlatformForAssets(t *testing.T) {cases := []struct {in stringwant string}{{"darwin", "mac"},{"Darwin", "mac"},{"mac", "mac"},{"win32", "windows"},{"windows", "windows"},{"linux", "linux"},{"appimage", "linux"},{"deb", "linux-deb"},{"linux-deb", "linux-deb"},{"linux-rpm", "linux-rpm"},{"rpm", "linux-rpm"},{"linux-snap", "linux-snap"},{"snap", "linux-snap"},{"linux-pacman", "linux-pacman"},{"pacman", "linux-pacman"},{"linux-flatpak", "linux-flatpak"},{"flatpak", "linux-flatpak"},{"", ""},}for _, c := range cases {t.Run(c.in, func(t *testing.T) {is.Equal(t, c.want, normalizePlatformForAssets(c.in))})}}func TestFirstNonEmpty(t *testing.T) {is.Equal(t, "a", firstNonEmpty("a", "b"))is.Equal(t, "b", firstNonEmpty("", "b"))is.Equal(t, "", firstNonEmpty("", ""))}