forked from libp2p/zeroconf
-
Notifications
You must be signed in to change notification settings - Fork 2
/
dns-sd_test.go
71 lines (66 loc) · 1.5 KB
/
dns-sd_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package zeroconf
import (
"slices"
"testing"
)
func TestParseServicePath(t *testing.T) {
svc, err := parseServicePath("A\\ Device._chat._tcp.local.")
if err != nil {
t.Fatalf("parsing failed: %v", err)
}
if svc.Name != "A Device" {
t.Fatalf("service mismatch")
}
if svc.Type.Name != "_chat._tcp" {
t.Fatalf("service mismatch")
}
if svc.Type.Domain != "local" {
t.Fatalf("domain mismatch")
}
}
// TODO: Rename to typePath?
func TestQueryName(t *testing.T) {
ty := Type{
Name: "_chat._tcp",
Subtypes: []string{"_printer"},
Domain: "local",
}
name := queryName(ty)
expect := "_printer._sub._chat._tcp.local."
if name != expect {
t.Fatalf("expected %v, got %v", expect, name)
}
}
func TestParseTypePath(t *testing.T) {
expect := Type{
Name: "_chat._tcp",
Domain: "local",
}
got, err := parseQueryName("_chat._tcp.local.")
if err != nil {
t.Fatalf("failed parsing type: %v", err)
}
if !got.Equal(expect) {
t.Fatalf("expected [%v], got [%v]", expect, got)
}
if !slices.Equal(got.Subtypes, expect.Subtypes) {
t.Fatalf("subtypes not equal")
}
}
func TestParseTypePathSubtype(t *testing.T) {
expect := Type{
Name: "_chat._tcp",
Subtypes: []string{"_emoji"},
Domain: "local",
}
got, err := parseQueryName("_emoji._sub._chat._tcp.local.")
if err != nil {
t.Fatalf("failed parsing type: %v", err)
}
if !got.Equal(expect) {
t.Fatalf("expected [%v], got [%v]", expect, got)
}
if !slices.Equal(got.Subtypes, expect.Subtypes) {
t.Fatalf("subtypes not equal")
}
}