MCPcopy
hub / github.com/wavetermdev/waveterm / jsonDeepEqual

Function jsonDeepEqual

pkg/filestore/blockstore_test.go:652–698  ·  view source on GitHub ↗
(d1 any, d2 any)

Source from the content-addressed store, hash-verified

650}
651
652func jsonDeepEqual(d1 any, d2 any) bool {
653 if d1 == nil && d2 == nil {
654 return true
655 }
656 if d1 == nil || d2 == nil {
657 return false
658 }
659 t1 := reflect.TypeOf(d1)
660 t2 := reflect.TypeOf(d2)
661 if t1 != t2 {
662 return false
663 }
664 switch d1.(type) {
665 case float64:
666 return d1.(float64) == d2.(float64)
667 case string:
668 return d1.(string) == d2.(string)
669 case bool:
670 return d1.(bool) == d2.(bool)
671 case []any:
672 a1 := d1.([]any)
673 a2 := d2.([]any)
674 if len(a1) != len(a2) {
675 return false
676 }
677 for i := 0; i < len(a1); i++ {
678 if !jsonDeepEqual(a1[i], a2[i]) {
679 return false
680 }
681 }
682 return true
683 case map[string]any:
684 m1 := d1.(map[string]any)
685 m2 := d2.(map[string]any)
686 if len(m1) != len(m2) {
687 return false
688 }
689 for k, v := range m1 {
690 if !jsonDeepEqual(v, m2[k]) {
691 return false
692 }
693 }
694 return true
695 default:
696 return false
697 }
698}
699
700func TestIJson(t *testing.T) {
701 initDb(t)

Callers 1

TestIJsonFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected