|
|
@@ -0,0 +1,38 @@
|
|
|
+package common_test
|
|
|
+
|
|
|
+import (
|
|
|
+ "context"
|
|
|
+ "testing"
|
|
|
+
|
|
|
+ . "v2ray.com/core/common"
|
|
|
+ . "v2ray.com/ext/assert"
|
|
|
+)
|
|
|
+
|
|
|
+type TConfig struct {
|
|
|
+ value int
|
|
|
+}
|
|
|
+
|
|
|
+type YConfig struct {
|
|
|
+ value string
|
|
|
+}
|
|
|
+
|
|
|
+func TestObjectCreation(t *testing.T) {
|
|
|
+ assert := With(t)
|
|
|
+
|
|
|
+ var f = func(ctx context.Context, t interface{}) (interface{}, error) {
|
|
|
+ return func() int {
|
|
|
+ return t.(*TConfig).value
|
|
|
+ }, nil
|
|
|
+ }
|
|
|
+
|
|
|
+ Must(RegisterConfig((*TConfig)(nil), f))
|
|
|
+ err := RegisterConfig((*TConfig)(nil), f)
|
|
|
+ assert(err, IsNotNil)
|
|
|
+
|
|
|
+ g, err := CreateObject(context.Background(), &TConfig{value: 2})
|
|
|
+ assert(err, IsNil)
|
|
|
+ assert(g.(func() int)(), Equals, 2)
|
|
|
+
|
|
|
+ _, err = CreateObject(context.Background(), &YConfig{value: "T"})
|
|
|
+ assert(err, IsNotNil)
|
|
|
+}
|