// Copyright 2022 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. //go:build !nethttpomithttp2 package http import ( "errors" "fmt" "testing" ) type externalStreamErrorCode uint32 type externalStreamError struct { StreamID uint32 Code externalStreamErrorCode Cause error } func (e externalStreamError) Error() string { return fmt.Sprintf("ID %v, code %v", e.StreamID, e.Code) } func TestStreamError(t *testing.T) { var target externalStreamError streamErr := http2streamError(42, http2ErrCodeProtocol) ok := errors.As(streamErr, &target) if !ok { t.Fatalf("errors.As failed") } if target.StreamID != streamErr.StreamID { t.Errorf("got StreamID %v, expected %v", target.StreamID, streamErr.StreamID) } if target.Cause != streamErr.Cause { t.Errorf("got Cause %v, expected %v", target.Cause, streamErr.Cause) } if uint32(target.Code) != uint32(streamErr.Code) { t.Errorf("got Code %v, expected %v", target.Code, streamErr.Code) } }