hnakra/protocol/message_gemini_test.go

110 lines
2.9 KiB
Go

package protocol
import "bytes"
import "testing"
func TestMessageGeminiBodyEnd (test *testing.T) {
conduit := new(bytes.Buffer)
message := MessageGeminiBodyEnd {
ID: 493234,
}
message.Send(conduit)
ty, err := ReadType(conduit)
if err != nil { test.Fatal("when reading type code:", err) }
if ty != TypeGeminiBodyEnd { test.Fatal("expected", TypeGeminiBodyEnd, "got", ty) }
got, err := ReadMessageGeminiBodyEnd(conduit)
if err != nil { test.Fatal("when reading message:", err) }
equal := message.ID == got.ID
if !equal { test.Fatal("structures not equal") }
if conduit.Len() != 0 {
test.Fatal("buffer len", conduit.Len(), "instead of 0")
}
}
func TestMessageGeminiBodySegment (test *testing.T) {
conduit := new(bytes.Buffer)
message := MessageGeminiBodySegment {
ID: 22441,
Data: makeTestBuffer(10301),
}
message.Send(conduit)
ty, err := ReadType(conduit)
if err != nil { test.Fatal("when reading type code:", err) }
if ty != TypeGeminiBodySegment { test.Fatal("expected", TypeGeminiBodySegment, "got", ty) }
got, err := ReadMessageGeminiBodySegment(conduit)
if err != nil { test.Fatal("when reading message:", err) }
equal :=
message.ID == got.ID &&
sliceEqual(message.Data, got.Data)
if !equal { test.Fatal("structures not equal") }
if conduit.Len() != 0 {
test.Fatal("buffer len", conduit.Len(), "instead of 0")
}
}
func TestMessageGeminiRequest (test *testing.T) {
conduit := new(bytes.Buffer)
message := MessageGeminiRequest {
ID: 9994562,
Address: "some.thing",
URL: "gemini://example.com/hahaha",
}
message.Send(conduit)
ty, err := ReadType(conduit)
if err != nil { test.Fatal("when reading type code:", err) }
if ty != TypeGeminiRequest { test.Fatal("expected", TypeGeminiRequest, "got", ty) }
got, err := ReadMessageGeminiRequest(conduit)
if err != nil { test.Fatal("when reading message:", err) }
equal :=
message.ID == got.ID &&
message.Address == got.Address &&
message.URL == got.URL
if !equal { test.Fatal("structures not equal") }
if conduit.Len() != 0 {
test.Fatal("buffer len", conduit.Len(), "instead of 0")
}
}
func TestMessageGeminiResponse (test *testing.T) {
conduit := new(bytes.Buffer)
message := MessageGeminiResponse {
ID: 77777,
Status: 20,
Meta: "text/gemini",
}
message.Send(conduit)
ty, err := ReadType(conduit)
if err != nil { test.Fatal("when reading type code:", err) }
if ty != TypeGeminiResponse { test.Fatal("expected", TypeGeminiResponse, "got", ty) }
got, err := ReadMessageGeminiResponse(conduit)
if err != nil { test.Fatal("when reading message:", err) }
equal :=
message.ID == got.ID &&
message.Status == got.Status &&
message.Meta == got.Meta
if !equal { test.Fatal("structures not equal") }
if conduit.Len() != 0 {
test.Fatal("buffer len", conduit.Len(), "instead of 0")
}
}