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  }