You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: parsers_test.go
    path of file: ./repos/kubernetes/pkg/util/parsers
    
    the code of the file until where you have to start completion: /*
Copyright 2016 The Kubernetes Authors.

Licensed under the Apa
    
func TestParseImageName(t *testing.T) {
	testCases := []struct {
		Input         string
		Repo          string
		Tag           string
		Digest        string
		expectedError string
	}{
		{Input: "root", Repo: "docker.io/library/root", Tag: "latest"},
		{Input: "root:tag", Repo: "docker.io/library/root", Tag: "tag"},
		{Input: "root@sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", Repo: "docker.io/library/root", Digest: "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},
		{Input: "user/repo", Repo: "docker.io/user/repo", Tag: "latest"},
		{Input: "user/repo:tag", Repo: "docker.io/user/repo", Tag: "tag"},
		{Input: "user/repo@sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", Repo: "docker.io/user/repo", Digest: "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},
		{Input: "url:5000/repo", Repo: "url:5000/repo", Tag: "latest"},
		{Input: "url:5000/repo:tag", Repo: "url:5000/repo", Tag: "tag"},
		{Input: "url:5000/repo@sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", Repo: "url:5000/repo", Digest: "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},
		{Input: "url:5000/repo:latest@sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", Tag: "latest", Repo: "url:5000/repo", Digest: "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"},
		{Input: "ROOT", expectedError: "must be lowercase"},
		{Input: "http://root", expectedError: "invalid reference format"},
		{Input: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", expectedError: "cannot specify 64-byte hexadecimal strings"},
	}
	for _, testCase := range testCases {
		repo, tag, digest, err := ParseImageName(testCase.Input)
		switch {
		case testCase.expectedError != "" && !strings.Contains(err.Error(), testCase.expectedError):
			t.Errorf("ParseImageName(%s) expects error %v but did not get one", testCase.Input, err)
		case testCase.expectedError == "" && err != nil:
			t.Errorf("ParseImageName(%s) failed: %v", testCase.Input, err)
		case repo != testCase.Repo || tag != testCase.Tag || digest != testCase.Digest:
			t.Errorf("Expected repo: %q, tag: %q and digest: %q, got %q, %q and %q", testCase.Repo, testCase.Tag, testCase.Digest,
				repo, tag, digest)
		}
	}
}