@@ -97,3 +97,43 @@ func TestParameterSetAppendToList(t *testing.T) {
9797 ps .AppendToList ("full" , "a" , "cd" , `"e"` )
9898 assert .Equal (t , ps .Value ("full" ), `a,b,a,cd,"e"` )
9999}
100+
101+ func TestParameterSetEqual (t * testing.T ) {
102+ var Nil * ParameterSet
103+ ps1 := NewParameterSet ()
104+ ps2 := NewParameterSet ()
105+
106+ // nil equals nil, and empty does not equal nil
107+ assert .Assert (t , Nil .Equal (nil ))
108+ assert .Assert (t , ! Nil .Equal (ps1 ))
109+ assert .Assert (t , ! ps1 .Equal (nil ))
110+
111+ // empty equals empty
112+ assert .Assert (t , ps1 .Equal (ps2 ))
113+ assert .Assert (t , ps2 .Equal (ps1 ))
114+
115+ // different keys are not equal
116+ ps1 .Add ("a" , "b" )
117+ assert .Assert (t , ! ps1 .Equal (nil ))
118+ assert .Assert (t , ! Nil .Equal (ps1 ))
119+ assert .Assert (t , ! ps1 .Equal (ps2 ))
120+ assert .Assert (t , ! ps2 .Equal (ps1 ))
121+
122+ // different values are not equal
123+ ps2 .Add ("a" , "c" )
124+ assert .Assert (t , ! ps1 .Equal (ps2 ))
125+ assert .Assert (t , ! ps2 .Equal (ps1 ))
126+
127+ // normalized keys+values are equal
128+ ps1 .Add ("A" , "c" )
129+ assert .Assert (t , ps1 .Equal (ps2 ))
130+ assert .Assert (t , ps2 .Equal (ps1 ))
131+
132+ // [assert.DeepEqual] can only compare exported fields.
133+ // When present, the `(T) Equal(T) bool` method is used instead.
134+ //
135+ // https://pkg.go.dev/github.com/google/go-cmp/cmp#Equal
136+ t .Run ("DeepEqual" , func (t * testing.T ) {
137+ assert .DeepEqual (t , NewParameterSet (), NewParameterSet ())
138+ })
139+ }
0 commit comments