OSDN Git Service

Hulk did something
[bytom/vapor.git] / testutil / deepequal_test.go
diff --git a/testutil/deepequal_test.go b/testutil/deepequal_test.go
new file mode 100644 (file)
index 0000000..0544e0e
--- /dev/null
@@ -0,0 +1,40 @@
+package testutil
+
+import "testing"
+
+func TestDeepEqual(t *testing.T) {
+       type s struct {
+               a int
+               b string
+       }
+
+       cases := []struct {
+               a, b interface{}
+               want bool
+       }{
+               {1, 1, true},
+               {1, 2, false},
+               {nil, nil, true},
+               {nil, []byte{}, true},
+               {nil, []byte{1}, false},
+               {[]byte{1}, []byte{1}, true},
+               {[]byte{1}, []byte{2}, false},
+               {[]byte{1}, []byte{1, 2}, false},
+               {[]byte{1}, []string{"1"}, false},
+               {[3]byte{}, [4]byte{}, false},
+               {[3]byte{1}, [3]byte{1, 0, 0}, true},
+               {s{}, s{}, true},
+               {s{a: 1}, s{}, false},
+               {s{b: "foo"}, s{}, false},
+               {"foo", "foo", true},
+               {"foo", "bar", false},
+               {"foo", nil, false},
+       }
+
+       for i, c := range cases {
+               got := DeepEqual(c.a, c.b)
+               if got != c.want {
+                       t.Errorf("case %d: got %v want %v", i, got, c.want)
+               }
+       }
+}