base ("FieldDetails");
this.add_test ("parameter replacement", this.test_param_replacement);
this.add_test ("simple equality", this.test_simple_equality);
+ this.add_test ("parameter equality", this.test_params_equality);
}
public override void set_up ()
assert (!details_b_1.equal (details_a_1));
assert (!details_b_1.equal (details_a_2));
}
+
+ public void test_params_equality ()
+ {
+ FieldDetails details_a_1 = new FieldDetails ("foo");
+ FieldDetails details_a_2 = new FieldDetails ("foo");
+
+ /* Add the parameters differently to the two instances to ensure these
+ * methods work as expected */
+ var parameters = new HashMultiMap<string, string> ();
+ parameters.set ("bar", "baz");
+ parameters.set ("qux", "quux");
+ parameters.set ("qux", "quuux");
+ details_a_1.parameters = parameters;
+
+ foreach (var param in parameters.get_keys ())
+ {
+ var values = parameters[param];
+ foreach (var value in values)
+ details_a_2.add_parameter (param, value);
+ }
+
+ assert (details_a_1.equal (details_a_2));
+
+ /* Add an existing value to a param for one object; shouldn't change */
+ details_a_2.add_parameter ("bar", "baz");
+ assert (details_a_1.equal (details_a_2));
+
+ /* Add new value to param; ensure inequality */
+ details_a_2.add_parameter ("bar", "new");
+ assert (!details_a_1.equal (details_a_2));
+
+ /* Re-set to original state */
+ details_a_2.set_parameter ("bar", "baz");
+ assert (details_a_1.equal (details_a_2));
+
+ /* Add new value to param; ensure inequality */
+ details_a_2.add_parameter ("bar", "new");
+ assert (!details_a_1.equal (details_a_2));
+
+ /* Re-set to original state (in a different way than above) */
+ details_a_2.parameters.remove ("bar", "new");
+ assert (details_a_1.equal (details_a_2));
+
+ /* Remove parameter and values; ensure inequality */
+ details_a_2.parameters.remove_all ("bar");
+ assert (!details_a_1.equal (details_a_2));
+ }
}
public int main (string[] args)