profile_test.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package profile
  2. import (
  3. "fmt"
  4. "os"
  5. "testing"
  6. cherryJson "github.com/cherry-game/cherry/extend/json"
  7. cherryProfile "github.com/cherry-game/cherry/profile"
  8. jsoniter "github.com/json-iterator/go"
  9. )
  10. func TestProfile(t *testing.T) {
  11. m := make(map[string]any)
  12. if err := cherryJson.ReadMaps("./profile.json", m); err != nil {
  13. t.Fatal(err)
  14. }
  15. conf := cherryProfile.Wrap(m)
  16. for _, key := range conf.Keys() {
  17. value := conf.Get(key)
  18. dealKV(key, value)
  19. }
  20. }
  21. func TestProfile2(t *testing.T) {
  22. json := jsoniter.ConfigFastest
  23. b, err := os.ReadFile("./profile.json")
  24. if err != nil {
  25. t.Fatal(err)
  26. }
  27. m := map[string]any{}
  28. if err = json.Unmarshal(b, &m); err != nil {
  29. t.Fatal(err)
  30. }
  31. conf := jsoniter.Wrap(m)
  32. for _, key := range conf.Keys() {
  33. value := conf.Get(key)
  34. dealKV(key, value)
  35. }
  36. }
  37. func dealKV(key string, value jsoniter.Any) {
  38. switch value.ValueType() {
  39. case jsoniter.ArrayValue:
  40. for i := 0; i < value.Size(); i++ {
  41. v := value.Get(i)
  42. dealKV(fmt.Sprintf("%s.%d", key, i), v)
  43. }
  44. case jsoniter.ObjectValue:
  45. for _, subKey := range value.Keys() {
  46. v := value.Get(subKey)
  47. dealKV(fmt.Sprintf("%s.%s", key, subKey), v)
  48. }
  49. case jsoniter.NumberValue:
  50. fmt.Printf("%s: %v\n", key, value.ToFloat64())
  51. default:
  52. fmt.Printf("%s: %v\n", key, value.ToString())
  53. }
  54. }