| 123456789101112131415161718192021222324252627282930313233343536373839 |
- // +build json
- package loader_test
- import (
- "testing"
- . "v2ray.com/core/common/loader"
- "v2ray.com/core/testing/assert"
- )
- type TestConfigA struct {
- V int
- }
- type TestConfigB struct {
- S string
- }
- func TestCreatorCache(t *testing.T) {
- assert := assert.On(t)
- cache := ConfigCreatorCache{}
- creator1 := func() interface{} { return &TestConfigA{} }
- creator2 := func() interface{} { return &TestConfigB{} }
- cache.RegisterCreator("1", creator1)
- loader := NewJSONConfigLoader(cache, "test", "")
- rawA, err := loader.LoadWithID([]byte(`{"V": 2}`), "1")
- assert.Error(err).IsNil()
- instA := rawA.(*TestConfigA)
- assert.Int(instA.V).Equals(2)
- cache.RegisterCreator("2", creator2)
- rawB, err := loader.LoadWithID([]byte(`{"S": "a"}`), "2")
- assert.Error(err).IsNil()
- instB := rawB.(*TestConfigB)
- assert.String(instB.S).Equals("a")
- }
|