1 // Copyright 2012 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
12 func TestWriteToUDP(t *testing.T) {
15 t.Logf("skipping test on %q", runtime.GOOS)
19 l, err := ListenPacket("udp", "127.0.0.1:0")
21 t.Fatalf("Listen failed: %v", err)
25 testWriteToConn(t, l.LocalAddr().String())
26 testWriteToPacketConn(t, l.LocalAddr().String())
29 func testWriteToConn(t *testing.T, raddr string) {
30 c, err := Dial("udp", raddr)
32 t.Fatalf("Dial failed: %v", err)
36 ra, err := ResolveUDPAddr("udp", raddr)
38 t.Fatalf("ResolveUDPAddr failed: %v", err)
41 _, err = c.(*UDPConn).WriteToUDP([]byte("Connection-oriented mode socket"), ra)
43 t.Fatal("WriteToUDP should fail")
45 if err != nil && err.(*OpError).Err != ErrWriteToConnected {
46 t.Fatalf("WriteToUDP should fail as ErrWriteToConnected: %v", err)
49 _, err = c.(*UDPConn).WriteTo([]byte("Connection-oriented mode socket"), ra)
51 t.Fatal("WriteTo should fail")
53 if err != nil && err.(*OpError).Err != ErrWriteToConnected {
54 t.Fatalf("WriteTo should fail as ErrWriteToConnected: %v", err)
57 _, err = c.Write([]byte("Connection-oriented mode socket"))
59 t.Fatalf("Write failed: %v", err)
63 func testWriteToPacketConn(t *testing.T, raddr string) {
64 c, err := ListenPacket("udp", "127.0.0.1:0")
66 t.Fatalf("ListenPacket failed: %v", err)
70 ra, err := ResolveUDPAddr("udp", raddr)
72 t.Fatalf("ResolveUDPAddr failed: %v", err)
75 _, err = c.(*UDPConn).WriteToUDP([]byte("Connection-less mode socket"), ra)
77 t.Fatalf("WriteToUDP failed: %v", err)
80 _, err = c.WriteTo([]byte("Connection-less mode socket"), ra)
82 t.Fatalf("WriteTo failed: %v", err)
85 _, err = c.(*UDPConn).Write([]byte("Connection-less mode socket"))
87 t.Fatal("Write should fail")