You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.7 KiB
78 lines
1.7 KiB
package protocol |
|
|
|
import ( |
|
"bytes" |
|
"net" |
|
"testing" |
|
) |
|
|
|
// Practically tests the whole protocol |
|
func TestTransfer(t *testing.T) { |
|
packet := Packet{ |
|
Header: HeaderFilename, |
|
Body: []byte("fIlEnAmE.txt"), |
|
} |
|
|
|
packetBuffer := new(bytes.Buffer) |
|
packetBuffer.Write([]byte(packet.Header)) |
|
packetBuffer.Write([]byte(HEADERDELIMETER)) |
|
packetBuffer.Write(packet.Body) |
|
|
|
// a valid representation of received packet`s bytes |
|
packetBytes := packetBuffer.Bytes() |
|
|
|
// imitating a connection |
|
l, err := net.Listen("tcp", ":9999") |
|
if err != nil { |
|
t.Errorf("Unexpected error: %s", err) |
|
} |
|
c, err := net.Dial("tcp", "localhost:9999") |
|
if err != nil { |
|
t.Errorf("Unexpected error: %s", err) |
|
} |
|
cc, err := l.Accept() |
|
if err != nil { |
|
t.Errorf("Unexpected error: %s", err) |
|
} |
|
defer c.Close() |
|
defer cc.Close() |
|
|
|
// sending packet |
|
err = SendPacket(cc, packet) |
|
if err != nil { |
|
t.Errorf("SendPacket failed: %s", err) |
|
} |
|
|
|
// |
|
receivedPacket, err := ReadFromConn(c) |
|
if err != nil { |
|
t.Errorf("ReadFromConn failed: %s", err) |
|
} |
|
|
|
for index, b := range receivedPacket { |
|
if b != packetBytes[index] { |
|
t.Errorf("Failed: wanted: %v, got: %v", packetBytes[index], b) |
|
} |
|
} |
|
} |
|
|
|
func TestBytesToPacket(t *testing.T) { |
|
packet := Packet{ |
|
Header: HeaderFilename, |
|
Body: []byte("fIlEnAmE.txt"), |
|
} |
|
|
|
packetBuffer := new(bytes.Buffer) |
|
packetBuffer.Write([]byte(packet.Header)) |
|
packetBuffer.Write([]byte(HEADERDELIMETER)) |
|
packetBuffer.Write(packet.Body) |
|
|
|
// a valid representation of received packet`s bytes |
|
packetBytes := packetBuffer.Bytes() |
|
|
|
convertedPacket := BytesToPacket(packetBytes) |
|
|
|
if convertedPacket.Header != packet.Header || string(convertedPacket.Body) != string(packet.Body) { |
|
t.Errorf("BytesToPacket failed") |
|
} |
|
}
|
|
|