json_conf_test.go 840 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. // +build json
  2. package loader_test
  3. import (
  4. "testing"
  5. . "v2ray.com/core/common/loader"
  6. "v2ray.com/core/testing/assert"
  7. )
  8. type TestConfigA struct {
  9. V int
  10. }
  11. type TestConfigB struct {
  12. S string
  13. }
  14. func TestCreatorCache(t *testing.T) {
  15. assert := assert.On(t)
  16. cache := ConfigCreatorCache{}
  17. creator1 := func() interface{} { return &TestConfigA{} }
  18. creator2 := func() interface{} { return &TestConfigB{} }
  19. cache.RegisterCreator("1", creator1)
  20. loader := NewJSONConfigLoader(cache, "test", "")
  21. rawA, err := loader.LoadWithID([]byte(`{"V": 2}`), "1")
  22. assert.Error(err).IsNil()
  23. instA := rawA.(*TestConfigA)
  24. assert.Int(instA.V).Equals(2)
  25. cache.RegisterCreator("2", creator2)
  26. rawB, err := loader.LoadWithID([]byte(`{"S": "a"}`), "2")
  27. assert.Error(err).IsNil()
  28. instB := rawB.(*TestConfigB)
  29. assert.String(instB.S).Equals("a")
  30. }