DeepEqual for maps
R=rsc
DELTA=47 (30 added, 16 deleted, 1 changed)
OCL=31455
CL=31455
diff --git a/src/pkg/reflect/all_test.go b/src/pkg/reflect/all_test.go
index 06eb1f3..a7f01d7 100644
--- a/src/pkg/reflect/all_test.go
+++ b/src/pkg/reflect/all_test.go
@@ -337,18 +337,6 @@
type NotBasic Basic
-type Recursive struct {
- x int;
- r *Recursive
-}
-
-type Complex struct {
- a int;
- b [3]*Complex;
- c *string;
- d map[float]float
-}
-
type DeepEqualTest struct {
a, b interface{};
eq bool;
@@ -365,6 +353,7 @@
DeepEqualTest{ &[3]int{ 1, 2, 3 }, &[3]int{ 1, 2, 3 }, true },
DeepEqualTest{ Basic{ 1, 0.5 }, Basic{ 1, 0.5 }, true },
DeepEqualTest{ os.Error(nil), os.Error(nil), true },
+ DeepEqualTest{ map[int]string{ 1:"one", 2:"two" }, map[int]string{ 2:"two", 1:"one" }, true },
// Inequalities
DeepEqualTest{ 1, 2, false },
@@ -376,6 +365,10 @@
DeepEqualTest{ &[3]int{ 1, 2, 3 }, &[3]int{ 1, 2, 4 }, false },
DeepEqualTest{ Basic{ 1, 0.5 }, Basic{ 1, 0.6 }, false },
DeepEqualTest{ Basic{ 1, 0 }, Basic{ 2, 0 }, false },
+ DeepEqualTest{ map[int]string{ 1:"one", 3:"two" }, map[int]string{ 2:"two", 1:"one" }, false },
+ DeepEqualTest{ map[int]string{ 1:"one", 2:"txo" }, map[int]string{ 2:"two", 1:"one" }, false },
+ DeepEqualTest{ map[int]string{ 1:"one", }, map[int]string{ 2:"two", 1:"one" }, false },
+ DeepEqualTest{ map[int]string{ 2:"two", 1:"one" }, map[int]string{ 1:"one", }, false },
// Mismatched types
DeepEqualTest{ 1, 1.0, false },
@@ -384,6 +377,7 @@
DeepEqualTest{ []int{ 1, 2, 3 }, [3]int{ 1, 2, 3 }, false },
DeepEqualTest{ &[3]interface{} { 1, 2, 4 }, &[3]interface{} { 1, 2, "s" }, false },
DeepEqualTest{ Basic{ 1, 0.5 }, NotBasic{ 1, 0.5 }, false },
+ DeepEqualTest{ map[uint]string{ 1:"one", 2:"two" }, map[int]string{ 2:"two", 1:"one" }, false },
}
func TestDeepEqual(t *testing.T) {
@@ -407,6 +401,11 @@
}
}
+type Recursive struct {
+ x int;
+ r *Recursive
+}
+
func TestDeepEqualRecursiveStruct(t *testing.T) {
a, b := new(Recursive), new(Recursive);
*a = Recursive{ 12, a };
@@ -416,6 +415,13 @@
}
}
+type Complex struct {
+ a int;
+ b [3]*Complex;
+ c *string;
+ d map[float]float
+}
+
func TestDeepEqualComplexStruct(t *testing.T) {
m := make(map[float]float);
stra, strb := "hello", "hello";