| package filexfer |
| |
| import ( |
| "bytes" |
| "testing" |
| ) |
| |
| func TestInitPacket(t *testing.T) { |
| var version uint8 = 3 |
| |
| p := &InitPacket{ |
| Version: uint32(version), |
| Extensions: []*ExtensionPair{ |
| { |
| Name: "foo", |
| Data: "1", |
| }, |
| }, |
| } |
| |
| buf, err := p.MarshalBinary() |
| if err != nil { |
| t.Fatal("unexpected error:", err) |
| } |
| |
| want := []byte{ |
| 0x00, 0x00, 0x00, 17, |
| 1, |
| 0x00, 0x00, 0x00, version, |
| 0x00, 0x00, 0x00, 3, 'f', 'o', 'o', |
| 0x00, 0x00, 0x00, 1, '1', |
| } |
| |
| if !bytes.Equal(buf, want) { |
| t.Fatalf("MarshalBinary() = %X, but wanted %X", buf, want) |
| } |
| |
| *p = InitPacket{} |
| |
| // UnmarshalBinary assumes the uint32(length) + uint8(type) have already been consumed. |
| if err := p.UnmarshalBinary(buf[5:]); err != nil { |
| t.Fatal("unexpected error:", err) |
| } |
| |
| if p.Version != uint32(version) { |
| t.Errorf("UnmarshalBinary(): Version was %d, but expected %d", p.Version, version) |
| } |
| |
| if len(p.Extensions) != 1 { |
| t.Fatalf("UnmarshalBinary(): len(p.Extensions) was %d, but expected %d", len(p.Extensions), 1) |
| } |
| |
| if got, want := p.Extensions[0].Name, "foo"; got != want { |
| t.Errorf("UnmarshalBinary(): p.Extensions[0].Name was %q, but expected %q", got, want) |
| } |
| |
| if got, want := p.Extensions[0].Data, "1"; got != want { |
| t.Errorf("UnmarshalBinary(): p.Extensions[0].Data was %q, but expected %q", got, want) |
| } |
| } |
| |
| func TestVersionPacket(t *testing.T) { |
| var version uint8 = 3 |
| |
| p := &VersionPacket{ |
| Version: uint32(version), |
| Extensions: []*ExtensionPair{ |
| { |
| Name: "foo", |
| Data: "1", |
| }, |
| }, |
| } |
| |
| buf, err := p.MarshalBinary() |
| if err != nil { |
| t.Fatal("unexpected error:", err) |
| } |
| |
| want := []byte{ |
| 0x00, 0x00, 0x00, 17, |
| 2, |
| 0x00, 0x00, 0x00, version, |
| 0x00, 0x00, 0x00, 3, 'f', 'o', 'o', |
| 0x00, 0x00, 0x00, 1, '1', |
| } |
| |
| if !bytes.Equal(buf, want) { |
| t.Fatalf("MarshalBinary() = %X, but wanted %X", buf, want) |
| } |
| |
| *p = VersionPacket{} |
| |
| // UnmarshalBinary assumes the uint32(length) + uint8(type) have already been consumed. |
| if err := p.UnmarshalBinary(buf[5:]); err != nil { |
| t.Fatal("unexpected error:", err) |
| } |
| |
| if p.Version != uint32(version) { |
| t.Errorf("UnmarshalBinary(): Version was %d, but expected %d", p.Version, version) |
| } |
| |
| if len(p.Extensions) != 1 { |
| t.Fatalf("UnmarshalBinary(): len(p.Extensions) was %d, but expected %d", len(p.Extensions), 1) |
| } |
| |
| if got, want := p.Extensions[0].Name, "foo"; got != want { |
| t.Errorf("UnmarshalBinary(): p.Extensions[0].Name was %q, but expected %q", got, want) |
| } |
| |
| if got, want := p.Extensions[0].Data, "1"; got != want { |
| t.Errorf("UnmarshalBinary(): p.Extensions[0].Data was %q, but expected %q", got, want) |
| } |
| } |