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 }