github.com/containers/podman/v4@v4.9.4/pkg/machine/qemu/config_test.go (about)

     1  package qemu
     2  
     3  import (
     4  	"reflect"
     5  	"testing"
     6  
     7  	"github.com/containers/podman/v4/pkg/machine"
     8  )
     9  
    10  func TestUSBParsing(t *testing.T) {
    11  	tests := []struct {
    12  		name    string
    13  		args    []string
    14  		result  []machine.USBConfig
    15  		wantErr bool
    16  	}{
    17  		{
    18  			name: "Good vendor and product",
    19  			args: []string{"vendor=13d3,product=5406", "vendor=08ec,product=0016"},
    20  			result: []machine.USBConfig{
    21  				{
    22  					Vendor:  5075,
    23  					Product: 21510,
    24  				},
    25  				{
    26  					Vendor:  2284,
    27  					Product: 22,
    28  				},
    29  			},
    30  			wantErr: false,
    31  		},
    32  		{
    33  			name: "Good bus and device number",
    34  			args: []string{"bus=1,devnum=4", "bus=1,devnum=3"},
    35  			result: []machine.USBConfig{
    36  				{
    37  					Bus:       "1",
    38  					DevNumber: "4",
    39  				},
    40  				{
    41  					Bus:       "1",
    42  					DevNumber: "3",
    43  				},
    44  			},
    45  			wantErr: false,
    46  		},
    47  		{
    48  			name:    "Bad vendor and product, not hexa",
    49  			args:    []string{"vendor=13dk,product=5406"},
    50  			result:  []machine.USBConfig{},
    51  			wantErr: true,
    52  		},
    53  		{
    54  			name:    "Bad vendor and product, bad separator",
    55  			args:    []string{"vendor=13d3:product=5406"},
    56  			result:  []machine.USBConfig{},
    57  			wantErr: true,
    58  		},
    59  		{
    60  			name:    "Bad vendor and product, missing equal",
    61  			args:    []string{"vendor=13d3:product-5406"},
    62  			result:  []machine.USBConfig{},
    63  			wantErr: true,
    64  		},
    65  	}
    66  
    67  	for _, test := range tests {
    68  		t.Run(test.name, func(t *testing.T) {
    69  			got, err := parseUSBs(test.args)
    70  			if (err != nil) != test.wantErr {
    71  				t.Errorf("parseUUBs error = %v, wantErr %v", err, test.wantErr)
    72  				return
    73  			}
    74  			if !reflect.DeepEqual(got, test.result) {
    75  				t.Errorf("parseUUBs got %v, want %v", got, test.result)
    76  			}
    77  		})
    78  	}
    79  }