mirror of
https://github.com/MetaCubeX/mihomo.git
synced 2025-12-19 16:30:07 +08:00
96 lines
2.0 KiB
Go
96 lines
2.0 KiB
Go
package vless
|
|
|
|
import (
|
|
"bytes"
|
|
"strconv"
|
|
"testing"
|
|
|
|
"google.golang.org/protobuf/proto"
|
|
)
|
|
|
|
func TestAddons(t *testing.T) {
|
|
var tests = []struct {
|
|
flow string
|
|
seed []byte
|
|
}{
|
|
{XRV, nil},
|
|
{XRS, []byte{1, 2, 3}},
|
|
{"", []byte{1, 2, 3}},
|
|
{"", nil},
|
|
}
|
|
|
|
for i, test := range tests {
|
|
t.Run(strconv.Itoa(i), func(t *testing.T) {
|
|
t.Run("proto->handwritten", func(t *testing.T) {
|
|
addons := new(Addons)
|
|
addons.Flow = test.flow
|
|
addons.Seed = test.seed
|
|
|
|
addonsBytes, err := proto.Marshal(addons)
|
|
if err != nil {
|
|
t.Errorf("error marshalling addons: %v", err)
|
|
return
|
|
}
|
|
addons, err = ReadAddons(addonsBytes)
|
|
if err != nil {
|
|
t.Errorf("error reading addons: %v", err)
|
|
return
|
|
}
|
|
|
|
if addons.Flow != test.flow {
|
|
t.Errorf("got %v; want %v", addons.Flow, test.flow)
|
|
return
|
|
}
|
|
if !bytes.Equal(addons.Seed, test.seed) {
|
|
t.Errorf("got %v; want %v", addons.Seed, test.seed)
|
|
return
|
|
}
|
|
})
|
|
|
|
t.Run("handwritten->proto", func(t *testing.T) {
|
|
addons := new(Addons)
|
|
addons.Flow = test.flow
|
|
addons.Seed = test.seed
|
|
|
|
addonsBytes := WriteAddons(addons)
|
|
err := proto.Unmarshal(addonsBytes, addons)
|
|
if err != nil {
|
|
t.Errorf("error reading addons: %v", err)
|
|
return
|
|
}
|
|
|
|
if addons.Flow != test.flow {
|
|
t.Errorf("got %v; want %v", addons.Flow, test.flow)
|
|
return
|
|
}
|
|
if !bytes.Equal(addons.Seed, test.seed) {
|
|
t.Errorf("got %v; want %v", addons.Seed, test.seed)
|
|
return
|
|
}
|
|
})
|
|
|
|
t.Run("handwritten->handwritten", func(t *testing.T) {
|
|
addons := new(Addons)
|
|
addons.Flow = test.flow
|
|
addons.Seed = test.seed
|
|
|
|
addonsBytes := WriteAddons(addons)
|
|
addons, err := ReadAddons(addonsBytes)
|
|
if err != nil {
|
|
t.Errorf("error reading addons: %v", err)
|
|
return
|
|
}
|
|
|
|
if addons.Flow != test.flow {
|
|
t.Errorf("got %v; want %v", addons.Flow, test.flow)
|
|
return
|
|
}
|
|
if !bytes.Equal(addons.Seed, test.seed) {
|
|
t.Errorf("got %v; want %v", addons.Seed, test.seed)
|
|
return
|
|
}
|
|
})
|
|
})
|
|
}
|
|
}
|