1 package httpwrap 2 3 import ( 4 "net/http" 5 "reflect" 6 "testing" 7 ) 8 9 type testResponseWriter struct { 10 http.ResponseWriter 11 } 12 13 type tresponseWriterFlusherHijackerPusher responseWriterFlusherHijackerPusher 14 15 func TestWrap(t *testing.T) { 16 for n, test := range [...]struct { 17 Input, Output http.ResponseWriter 18 Overrides []Override 19 }{ 20 { 21 tresponseWriterFlusherHijackerPusher{}, 22 tresponseWriterFlusherHijackerPusher{}, 23 []Override{}, 24 }, 25 { 26 tresponseWriterFlusherHijackerPusher{}, 27 responseWriterHijackerPusher{}, 28 []Override{ 29 OverrideFlusher(nil), 30 }, 31 }, 32 { 33 tresponseWriterFlusherHijackerPusher{}, 34 responseWriterFlusherPusher{}, 35 []Override{ 36 OverrideHijacker(nil), 37 }, 38 }, 39 { 40 tresponseWriterFlusherHijackerPusher{}, 41 responseWriterFlusherHijacker{}, 42 []Override{ 43 OverridePusher(nil), 44 }, 45 }, 46 { 47 testResponseWriter{}, 48 testResponseWriter{}, 49 []Override{}, 50 }, 51 { 52 testResponseWriter{}, 53 responseWriterFlusher{}, 54 []Override{ 55 OverrideFlusher(responseWriterFlusherHijackerPusher{}), 56 }, 57 }, 58 { 59 testResponseWriter{}, 60 responseWriterHijacker{}, 61 []Override{ 62 OverrideHijacker(responseWriterFlusherHijackerPusher{}), 63 }, 64 }, 65 { 66 testResponseWriter{}, 67 responseWriterPusher{}, 68 []Override{ 69 OverridePusher(responseWriterFlusherHijackerPusher{}), 70 }, 71 }, 72 } { 73 out := Wrap(test.Input, test.Overrides...) 74 if reflect.TypeOf(test.Output) != reflect.TypeOf(out) { 75 t.Errorf("test %d: expecting %T, got %T", n+1, test.Output, out) 76 } 77 } 78 }