mirror of https://github.com/XTLS/Xray-core
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
878 B
37 lines
878 B
package conf_test |
|
|
|
import ( |
|
"encoding/json" |
|
"testing" |
|
|
|
"github.com/golang/protobuf/proto" |
|
|
|
"github.com/xtls/xray-core/common" |
|
. "github.com/xtls/xray-core/infra/conf" |
|
) |
|
|
|
func loadJSON(creator func() Buildable) func(string) (proto.Message, error) { |
|
return func(s string) (proto.Message, error) { |
|
instance := creator() |
|
if err := json.Unmarshal([]byte(s), instance); err != nil { |
|
return nil, err |
|
} |
|
return instance.Build() |
|
} |
|
} |
|
|
|
type TestCase struct { |
|
Input string |
|
Parser func(string) (proto.Message, error) |
|
Output proto.Message |
|
} |
|
|
|
func runMultiTestCase(t *testing.T, testCases []TestCase) { |
|
for _, testCase := range testCases { |
|
actual, err := testCase.Parser(testCase.Input) |
|
common.Must(err) |
|
if !proto.Equal(actual, testCase.Output) { |
|
t.Fatalf("Failed in test case:\n%s\nActual:\n%v\nExpected:\n%v", testCase.Input, actual, testCase.Output) |
|
} |
|
} |
|
}
|
|
|