// Copyright 2023 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT

package runtime

import "testing"

func TestParseLabel(t *testing.T) {
	tests := []struct {
		args       string
		wantLabel  string
		wantSchema string
		wantArg    string
		wantErr    bool
	}{
		{
			args:       "ubuntu:docker://node:18",
			wantLabel:  "ubuntu",
			wantSchema: "docker",
			wantArg:    "//node:18",
			wantErr:    false,
		},
		{
			args:       "ubuntu:host",
			wantLabel:  "ubuntu",
			wantSchema: "host",
			wantArg:    "",
			wantErr:    false,
		},
		{
			args:       "ubuntu",
			wantLabel:  "ubuntu",
			wantSchema: "host",
			wantArg:    "",
			wantErr:    false,
		},
		{
			args:       "ubuntu:vm:ubuntu-18.04",
			wantLabel:  "",
			wantSchema: "",
			wantArg:    "",
			wantErr:    true,
		},
	}
	for _, tt := range tests {
		t.Run(tt.args, func(t *testing.T) {
			gotLabel, gotSchema, gotArg, err := ParseLabel(tt.args)
			if (err != nil) != tt.wantErr {
				t.Errorf("parseLabel() error = %v, wantErr %v", err, tt.wantErr)
				return
			}
			if gotLabel != tt.wantLabel {
				t.Errorf("parseLabel() gotLabel = %v, want %v", gotLabel, tt.wantLabel)
			}
			if gotSchema != tt.wantSchema {
				t.Errorf("parseLabel() gotSchema = %v, want %v", gotSchema, tt.wantSchema)
			}
			if gotArg != tt.wantArg {
				t.Errorf("parseLabel() gotArg = %v, want %v", gotArg, tt.wantArg)
			}
		})
	}
}