🔷 (File Transferring Utility) Transfer files through the Net 🔷
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.

79 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")
}
}