package deeplink

import "testing"

func TestBuildAndParse(t *testing.T) {
	cases := []struct {
		name      string
		param     string
		wantKind  Kind
		wantValue string
	}{
		{"game", Game("7c9e6679-7425-40de-944b-e07fc1f90ae7"), KindGame, "7c9e6679-7425-40de-944b-e07fc1f90ae7"},
		{"invitation", Invitation("11111111-2222-3333-4444-555555555555"), KindInvitation, "11111111-2222-3333-4444-555555555555"},
		{"friend code", FriendCode("123456"), KindFriendCode, "123456"},
		{"empty is lobby", "", KindLobby, ""},
		{"unknown is lobby", "x-nope", KindLobby, ""},
	}
	for _, tc := range cases {
		t.Run(tc.name, func(t *testing.T) {
			gotKind, gotValue := Parse(tc.param)
			if gotKind != tc.wantKind {
				t.Errorf("kind = %d, want %d", gotKind, tc.wantKind)
			}
			if gotValue != tc.wantValue {
				t.Errorf("value = %q, want %q", gotValue, tc.wantValue)
			}
		})
	}
}

func TestBuildPrefixes(t *testing.T) {
	if Game("x") != "gx" {
		t.Errorf("Game = %q, want gx", Game("x"))
	}
	if Invitation("x") != "ix" {
		t.Errorf("Invitation = %q, want ix", Invitation("x"))
	}
	if FriendCode("123456") != "f123456" {
		t.Errorf("FriendCode = %q, want f123456", FriendCode("123456"))
	}
}
