mirror of
https://github.com/apernet/hysteria.git
synced 2025-04-03 04:27:39 +03:00
132 lines
2.4 KiB
Go
132 lines
2.4 KiB
Go
package udphop
|
|
|
|
import (
|
|
"net"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestResolveUDPHopAddr(t *testing.T) {
|
|
type args struct {
|
|
addr string
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want *UDPHopAddr
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "empty",
|
|
args: args{
|
|
addr: "",
|
|
},
|
|
want: nil,
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "no port",
|
|
args: args{
|
|
addr: "8.8.8.8",
|
|
},
|
|
want: nil,
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "single port",
|
|
args: args{
|
|
addr: "8.8.4.4:1234",
|
|
},
|
|
want: &UDPHopAddr{
|
|
IP: net.ParseIP("8.8.4.4"),
|
|
Ports: []uint16{1234},
|
|
PortStr: "1234",
|
|
},
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "multiple ports",
|
|
args: args{
|
|
addr: "8.8.3.3:1234,5678,9012",
|
|
},
|
|
want: &UDPHopAddr{
|
|
IP: net.ParseIP("8.8.3.3"),
|
|
Ports: []uint16{1234, 5678, 9012},
|
|
PortStr: "1234,5678,9012",
|
|
},
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "port range",
|
|
args: args{
|
|
addr: "1.2.3.4:1234-1240",
|
|
},
|
|
want: &UDPHopAddr{
|
|
IP: net.ParseIP("1.2.3.4"),
|
|
Ports: []uint16{1234, 1235, 1236, 1237, 1238, 1239, 1240},
|
|
PortStr: "1234-1240",
|
|
},
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "port range reversed",
|
|
args: args{
|
|
addr: "123.123.123.123:9990-9980",
|
|
},
|
|
want: &UDPHopAddr{
|
|
IP: net.ParseIP("123.123.123.123"),
|
|
Ports: []uint16{9980, 9981, 9982, 9983, 9984, 9985, 9986, 9987, 9988, 9989, 9990},
|
|
PortStr: "9990-9980",
|
|
},
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "port range & port list",
|
|
args: args{
|
|
addr: "9.9.9.9:1234-1236,5678,9012",
|
|
},
|
|
want: &UDPHopAddr{
|
|
IP: net.ParseIP("9.9.9.9"),
|
|
Ports: []uint16{1234, 1235, 1236, 5678, 9012},
|
|
PortStr: "1234-1236,5678,9012",
|
|
},
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "invalid port",
|
|
args: args{
|
|
addr: "5.5.5.5:1234,bs",
|
|
},
|
|
want: nil,
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "invalid port range 1",
|
|
args: args{
|
|
addr: "6.6.6.6:7788-bbss",
|
|
},
|
|
want: nil,
|
|
wantErr: true,
|
|
},
|
|
{
|
|
name: "invalid port range 2",
|
|
args: args{
|
|
addr: "1.0.0.1:8899-9002-9005",
|
|
},
|
|
want: nil,
|
|
wantErr: true,
|
|
},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got, err := ResolveUDPHopAddr(tt.args.addr)
|
|
if (err != nil) != tt.wantErr {
|
|
t.Errorf("ParseUDPHopAddr() error = %v, wantErr %v", err, tt.wantErr)
|
|
return
|
|
}
|
|
if !reflect.DeepEqual(got, tt.want) {
|
|
t.Errorf("ParseUDPHopAddr() got = %v, want %v", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|