package rfc1035label import ( "bytes" "testing" ) func TestLabelsFromBytes(t *testing.T) { labels, err := LabelsFromBytes([]byte{ 0x9, 's', 'l', 'a', 'c', 'k', 'w', 'a', 'r', 'e', 0x2, 'i', 't', 0x0, }) if err != nil { t.Fatal(err) } if len(labels) != 1 { t.Fatalf("Invalid labels length. Expected: 1, got: %v", len(labels)) } if labels[0] != "slackware.it" { t.Fatalf("Invalid label. Expected: %v, got: %v'", "slackware.it", labels[0]) } } func TestLabelsFromBytesZeroLength(t *testing.T) { labels, err := LabelsFromBytes([]byte{}) if err != nil { t.Fatal(err) } if len(labels) != 0 { t.Fatalf("Invalid labels length. Expected: 0, got: %v", len(labels)) } } func TestLabelsFromBytesInvalidLength(t *testing.T) { labels, err := LabelsFromBytes([]byte{0x3, 0xaa, 0xbb}) // short length if err == nil { t.Fatal("Expected error, got nil") } if len(labels) != 0 { t.Fatalf("Invalid labels length. Expected: 0, got: %v", len(labels)) } if labels != nil { t.Fatalf("Invalid label. Expected nil, got %v", labels) } } func TestLabelToBytes(t *testing.T) { encodedLabel := LabelToBytes("slackware.it") expected := []byte{ 0x9, 's', 'l', 'a', 'c', 'k', 'w', 'a', 'r', 'e', 0x2, 'i', 't', 0x0, } if !bytes.Equal(encodedLabel, expected) { t.Fatalf("Invalid label. Expected: %v, got: %v", expected, encodedLabel) } } func TestLabelToBytesZeroLength(t *testing.T) { encodedLabel := LabelToBytes("") expected := []byte{0} if !bytes.Equal(encodedLabel, expected) { t.Fatalf("Invalid label. Expected: %v, got: %v", expected, encodedLabel) } }