// Copyright 2019 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package frontend

import (
	"testing"

	"golang.org/x/discovery/internal"
)

func TestParseStdLibURLPath(t *testing.T) {
	testCases := []struct {
		name, url, wantPath, wantVersion string
	}{
		{
			name:        "latest",
			url:         "/cmd/go",
			wantPath:    "cmd/go",
			wantVersion: internal.LatestVersion,
		},
		{
			name:        "package at version",
			url:         "/cmd/go@go1.13",
			wantPath:    "cmd/go",
			wantVersion: "v1.13.0",
		},
		{
			name:        "package at beta version",
			url:         "/cmd/go@go1.13beta1",
			wantPath:    "cmd/go",
			wantVersion: "v1.13.0-beta.1",
		},
		{
			name:        "std",
			url:         "/std@go1.13",
			wantPath:    "std",
			wantVersion: "v1.13.0",
		},
	}

	for _, tc := range testCases {
		t.Run(tc.name, func(t *testing.T) {
			gotPkg, gotVersion, err := parseStdLibURLPath(tc.url)
			if err != nil {
				t.Fatalf("parseStdLibURLPath(%q): %v)", tc.url, err)
			}
			if tc.wantVersion != gotVersion || tc.wantPath != gotPkg {
				t.Fatalf("parseStdLibURLPath(%q): %q, %q, %v; want = %q, %q",
					tc.url, gotPkg, gotVersion, err, tc.wantPath, tc.wantVersion)
			}
		})
	}
}
