github.com/unirita/cuto@v0.9.8-0.20160830082821-aa6652f877b7/testutil/netstab_test.go (about) 1 package testutil 2 3 import ( 4 "errors" 5 "net" 6 "testing" 7 "time" 8 ) 9 10 func TestNewListenerStub_Listener型のスタブオブジェクトを生成できる(t *testing.T) { 11 l := NewListenerStub() 12 _, ok := interface{}(l).(net.Listener) 13 if !ok { 14 t.Fatalf("生成されたオブジェクトがnet.Listener型ではない。") 15 } 16 } 17 18 func TestNewConnStub_Conn型のスタブオブジェクトを生成できる(t *testing.T) { 19 c := NewConnStub() 20 _, ok := interface{}(c).(net.Conn) 21 if !ok { 22 t.Fatalf("生成されたオブジェクトがnet.Conn型ではない。") 23 } 24 } 25 26 func TestNewAddrStub_Addr型のスタブオブジェクトを生成できる(t *testing.T) { 27 a := NewAddrStub("127.0.0.1:12345") 28 _, ok := interface{}(a).(net.Addr) 29 if !ok { 30 t.Fatalf("生成されたオブジェクトがnet.Addr型ではない。") 31 } 32 } 33 34 func TestListenerAccept_ConnStubオブジェクトを取得できる(t *testing.T) { 35 l := NewListenerStub() 36 c, err := l.Accept() 37 if err != nil { 38 t.Fatalf("想定外のエラーが発生した: %s", err) 39 } 40 if c == nil { 41 t.Errorf("オブジェクトが取得できていない。") 42 } 43 } 44 45 func TestListenerAccept_エラーを発生させられる(t *testing.T) { 46 l := NewListenerStub() 47 l.AcceptErr = errors.New("error") 48 _, err := l.Accept() 49 if err == nil { 50 t.Fatalf("エラーが発生していない。") 51 } 52 } 53 54 func TestListenerClose_正常クローズできる(t *testing.T) { 55 l := NewListenerStub() 56 err := l.Close() 57 if err != nil { 58 t.Errorf("想定外のエラーが発生した: %s", err) 59 } 60 if !l.IsClosed { 61 t.Errorf("クローズされていないことになっている。") 62 } 63 } 64 65 func TestListenerClose_エラーを発生させられる(t *testing.T) { 66 l := NewListenerStub() 67 l.CloseErr = errors.New("error") 68 err := l.Close() 69 if err == nil { 70 t.Fatalf("エラーが発生していない。") 71 } 72 } 73 74 func TestListenerAddr_アドレス情報を取得できる(t *testing.T) { 75 l := NewListenerStub() 76 a := l.Addr() 77 if a == nil { 78 t.Fatalf("アドレス情報を取得できなかった。") 79 } 80 } 81 82 func TestConnRead_読み込みができる(t *testing.T) { 83 c := NewConnStub() 84 c.ReadStr = "readtest" 85 buf := make([]byte, 20) 86 n, err := c.Read(buf) 87 if err != nil { 88 t.Fatalf("想定外のエラーが発生した: %s", err) 89 } 90 readStr := string(buf[:n]) 91 if readStr != "readtest" { 92 t.Errorf("読み込んだ文字列[%s]が想定値と違う。", readStr) 93 } 94 } 95 96 func TestConnRead_エラーを発生させられる(t *testing.T) { 97 c := NewConnStub() 98 c.ReadStr = "readtest" 99 c.ReadErr = errors.New("error") 100 buf := make([]byte, 20) 101 _, err := c.Read(buf) 102 if err == nil { 103 t.Fatalf("エラーが発生していない。") 104 } 105 } 106 107 func TestConnWrite_書き込みができる(t *testing.T) { 108 c := NewConnStub() 109 buf := []byte("writetest") 110 n, err := c.Write(buf) 111 if err != nil { 112 t.Fatalf("想定外のエラーが発生した: %s", err) 113 } 114 if c.WriteStr != "writetest" { 115 t.Errorf("書き込まれた文字列[%s]が想定値と違う。", c.WriteStr) 116 } 117 if n != len("writetest") { 118 t.Errorf("書き込まれた長さ[%d]が想定値と違う。", n) 119 } 120 } 121 122 func TestConnWrite_エラーを発生させられる(t *testing.T) { 123 c := NewConnStub() 124 c.WriteErr = errors.New("error") 125 buf := []byte("writetest") 126 _, err := c.Write(buf) 127 if err == nil { 128 t.Fatalf("エラーが発生していない。") 129 } 130 } 131 132 func TestConnClose_正常クローズできる(t *testing.T) { 133 c := NewConnStub() 134 err := c.Close() 135 if err != nil { 136 t.Fatalf("想定外のエラーが発生した: %s", err) 137 } 138 if !c.IsClosed { 139 t.Errorf("クローズされていないことになっている。") 140 } 141 } 142 143 func TestConnClose_エラーを発生させられる(t *testing.T) { 144 c := NewConnStub() 145 c.CloseErr = errors.New("error") 146 err := c.Close() 147 if err == nil { 148 t.Fatalf("エラーが発生していない。") 149 } 150 } 151 152 func TestConnAddr_ローカルアドレス情報を取得できる(t *testing.T) { 153 c := NewConnStub() 154 a := c.LocalAddr() 155 if a == nil { 156 t.Fatalf("アドレス情報を取得できなかった。") 157 } 158 } 159 160 func TestConnAddr_リモートアドレス情報を取得できる(t *testing.T) { 161 c := NewConnStub() 162 a := c.RemoteAddr() 163 if a == nil { 164 t.Fatalf("アドレス情報を取得できなかった。") 165 } 166 } 167 168 func TestConnSetDeadline_正常な送受信待ち期限セット処理ができる(t *testing.T) { 169 c := NewConnStub() 170 err := c.SetDeadline(time.Now().Add(time.Second)) 171 if err != nil { 172 t.Fatalf("想定外のエラーが発生した: %s", err) 173 } 174 } 175 176 func TestSetDeadline_エラーを発生させられる(t *testing.T) { 177 c := NewConnStub() 178 c.SetDeadlineErr = errors.New("error") 179 err := c.SetDeadline(time.Now().Add(time.Second)) 180 if err == nil { 181 t.Fatalf("エラーが発生していない。") 182 } 183 } 184 185 func TestConnSetReadDeadline_正常な受信待ち期限セット処理ができる(t *testing.T) { 186 c := NewConnStub() 187 err := c.SetReadDeadline(time.Now().Add(time.Second)) 188 if err != nil { 189 t.Fatalf("想定外のエラーが発生した: %s", err) 190 } 191 } 192 193 func TestSetReadDeadline_エラーを発生させられる(t *testing.T) { 194 c := NewConnStub() 195 c.SetReadDeadlineErr = errors.New("error") 196 err := c.SetReadDeadline(time.Now().Add(time.Second)) 197 if err == nil { 198 t.Fatalf("エラーが発生していない。") 199 } 200 } 201 202 func TestConnSetWriteDeadline_正常な送受信待ち期限セット処理ができる(t *testing.T) { 203 c := NewConnStub() 204 err := c.SetWriteDeadline(time.Now().Add(time.Second)) 205 if err != nil { 206 t.Fatalf("想定外のエラーが発生した: %s", err) 207 } 208 } 209 210 func TestSetWriteDeadline_エラーを発生させられる(t *testing.T) { 211 c := NewConnStub() 212 c.SetWriteDeadlineErr = errors.New("error") 213 err := c.SetWriteDeadline(time.Now().Add(time.Second)) 214 if err == nil { 215 t.Fatalf("エラーが発生していない。") 216 } 217 } 218 219 func TestAddrNetwork_ネットワークの名前を取得できる(t *testing.T) { 220 addrStr := "127.0.0.1:12345" 221 a := NewAddrStub(addrStr) 222 if a.Network() != "tcp" { 223 t.Errorf("取得した値[%s]が想定と違っている。", a.Network()) 224 } 225 } 226 227 func TestAddrString_アドレスの文字列表現を取得できる(t *testing.T) { 228 addrStr := "127.0.0.1:12345" 229 a := NewAddrStub(addrStr) 230 if a.String() != addrStr { 231 t.Errorf("取得した値[%s]が想定と違っている。", a.String()) 232 } 233 }