🏡 index : quine-global/hyper.quineglobal.com.git

package http

import (
	"testing"

	"maragu.dev/is"

	"app/html"
)

func TestSemverCmp(t *testing.T) {
	cases := []struct {
		a, b string
		want 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   string
		want 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("", ""))
}