diff --git a/usb/device_test.go b/usb/device_test.go index 26fd8e4..d1613a2 100644 --- a/usb/device_test.go +++ b/usb/device_test.go @@ -20,9 +20,8 @@ import ( ) func TestOpenEndpoint(t *testing.T) { - origLib := libusb - defer func() { libusb = origLib }() - libusb = newFakeLibusb() + _, done := newFakeLibusb() + defer done() c := NewContext() defer c.Close() diff --git a/usb/endpoint_test.go b/usb/endpoint_test.go index 4d45c3f..eddea21 100644 --- a/usb/endpoint_test.go +++ b/usb/endpoint_test.go @@ -20,7 +20,9 @@ import ( ) func TestEndpoint(t *testing.T) { - defer func(i libusbIntf) { libusb = i }(libusb) + lib, done := newFakeLibusb() + defer done() + for _, epData := range []struct { ei EndpointInfo intf InterfaceSetting @@ -83,9 +85,6 @@ func TestEndpoint(t *testing.T) { wantErr: true, }, } { - lib := newFakeLibusb() - libusb = lib - ep := newEndpoint(nil, epData.intf, epData.ei) go func() { fakeT := lib.waitForSubmitted() @@ -150,8 +149,8 @@ func TestEndpointInfo(t *testing.T) { func TestEndpointIn(t *testing.T) { defer func(i libusbIntf) { libusb = i }(libusb) - lib := newFakeLibusb() - libusb = lib + lib, done := newFakeLibusb() + defer done() ctx := NewContext() defer ctx.Close() @@ -187,8 +186,8 @@ func TestEndpointIn(t *testing.T) { func TestEndpointOut(t *testing.T) { defer func(i libusbIntf) { libusb = i }(libusb) - lib := newFakeLibusb() - libusb = lib + lib, done := newFakeLibusb() + defer done() ctx := NewContext() defer ctx.Close() diff --git a/usb/transfer_test.go b/usb/transfer_test.go index d07a51b..dd653f1 100644 --- a/usb/transfer_test.go +++ b/usb/transfer_test.go @@ -20,8 +20,8 @@ import ( ) func TestNewTransfer(t *testing.T) { - defer func(i libusbIntf) { libusb = i }(libusb) - libusb = newFakeLibusb() + _, done := newFakeLibusb() + defer done() for _, tc := range []struct { desc string @@ -62,6 +62,7 @@ func TestNewTransfer(t *testing.T) { if err != nil { t.Fatalf("newUSBTransfer(): %v", err) } + defer xfer.free() if got, want := len(xfer.buf), tc.wantLength; got != want { t.Errorf("xfer.buf: got %d bytes, want %d", got, want) } @@ -69,10 +70,8 @@ func TestNewTransfer(t *testing.T) { } func TestTransferProtocol(t *testing.T) { - defer func(i libusbIntf) { libusb = i }(libusb) - - f := newFakeLibusb() - libusb = f + f, done := newFakeLibusb() + defer done() xfers := make([]*usbTransfer, 2) var err error @@ -140,3 +139,20 @@ func TestTransferProtocol(t *testing.T) { x.free() } } + +func BenchmarkSubSlice(b *testing.B) { + x := make([]byte, 512) + start, len := 50, 50 + b.Run("start:start+len", func(b *testing.B) { + for i := 0; i < b.N; i++ { + y := x + y = y[start : start+len] + } + }) + b.Run("[start:][:len]", func(b *testing.B) { + for i := 0; i < b.N; i++ { + y := x + y = y[start:][:len] + } + }) +} diff --git a/usb/usb_test.go b/usb/usb_test.go index 60a66bd..fb9943f 100644 --- a/usb/usb_test.go +++ b/usb/usb_test.go @@ -18,9 +18,8 @@ package usb import "testing" func TestListDevices(t *testing.T) { - orig := libusb - defer func() { libusb = orig }() - libusb = newFakeLibusb() + _, done := newFakeLibusb() + defer done() c := NewContext() defer c.Close() @@ -55,9 +54,8 @@ func TestListDevices(t *testing.T) { } func TestOpenDeviceWithVidPid(t *testing.T) { - orig := libusb - defer func() { libusb = orig }() - libusb = newFakeLibusb() + _, done := newFakeLibusb() + defer done() for _, d := range []struct { vid, pid ID