package util

import "testing"

func TestGetRootFromPackage(t *testing.T) {
	urlList := map[string]string{
		"github.com/Masterminds/VCSTestRepo":                       "github.com/Masterminds/VCSTestRepo",
		"bitbucket.org/mattfarina/testhgrepo":                      "bitbucket.org/mattfarina/testhgrepo",
		"launchpad.net/govcstestbzrrepo/trunk":                     "launchpad.net/govcstestbzrrepo/trunk",
		"launchpad.net/~mattfarina/+junk/mygovcstestbzrrepo":       "launchpad.net/~mattfarina/+junk/mygovcstestbzrrepo",
		"launchpad.net/~mattfarina/+junk/mygovcstestbzrrepo/trunk": "launchpad.net/~mattfarina/+junk/mygovcstestbzrrepo",
		"git.launchpad.net/govcstestgitrepo":                       "git.launchpad.net/govcstestgitrepo",
		"git.launchpad.net/~mattfarina/+git/mygovcstestgitrepo":    "git.launchpad.net/~mattfarina/+git/mygovcstestgitrepo",
		"farbtastic.googlecode.com/svn/":                           "farbtastic.googlecode.com/svn/",
		"farbtastic.googlecode.com/svn/trunk":                      "farbtastic.googlecode.com/svn/trunk",
		"code.google.com/p/farbtastic":                             "code.google.com/p/farbtastic",
		"code.google.com/p/plotinum":                               "code.google.com/p/plotinum",
		"example.com/foo/bar.git":                                  "example.com/foo/bar.git",
		"example.com/foo/bar.svn":                                  "example.com/foo/bar.svn",
		"example.com/foo/bar/baz.bzr":                              "example.com/foo/bar/baz.bzr",
		"example.com/foo/bar/baz.hg":                               "example.com/foo/bar/baz.hg",
		"gopkg.in/mgo.v2":                                          "gopkg.in/mgo.v2",
		"gopkg.in/mgo.v2/txn":                                      "gopkg.in/mgo.v2",
		"gopkg.in/nowk/assert.v2":                                  "gopkg.in/nowk/assert.v2",
		"gopkg.in/nowk/assert.v2/tests":                            "gopkg.in/nowk/assert.v2",
		"golang.org/x/net":                                         "golang.org/x/net",
		"golang.org/x/net/context":                                 "golang.org/x/net",
	}

	for u, c := range urlList {
		repo := GetRootFromPackage(u)
		if repo != c {
			t.Errorf("getRepoRootFromPackage expected %s but got %s", c, repo)
		}
	}
}
