1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-11-16 09:26:21 -05:00
v2fly/common/type_test.go

42 lines
802 B
Go
Raw Normal View History

2017-12-20 05:16:45 -05:00
package common_test
import (
"context"
"testing"
2021-02-16 15:31:50 -05:00
. "github.com/v2fly/v2ray-core/v4/common"
2017-12-20 05:16:45 -05:00
)
type TConfig struct {
value int
}
type YConfig struct {
value string
}
func TestObjectCreation(t *testing.T) {
2021-05-19 17:28:52 -04:00
f := func(ctx context.Context, t interface{}) (interface{}, error) {
2017-12-20 05:16:45 -05:00
return func() int {
return t.(*TConfig).value
}, nil
}
Must(RegisterConfig((*TConfig)(nil), f))
err := RegisterConfig((*TConfig)(nil), f)
2019-02-02 16:19:30 -05:00
if err == nil {
t.Error("expect non-nil error, but got nil")
}
2017-12-20 05:16:45 -05:00
g, err := CreateObject(context.Background(), &TConfig{value: 2})
2019-02-02 16:19:30 -05:00
Must(err)
if v := g.(func() int)(); v != 2 {
t.Error("expect return value 2, but got ", v)
}
2017-12-20 05:16:45 -05:00
_, err = CreateObject(context.Background(), &YConfig{value: "T"})
2019-02-02 16:19:30 -05:00
if err == nil {
t.Error("expect non-nil error, but got nil")
}
2017-12-20 05:16:45 -05:00
}