Add test for parameter equality in FieldDetails.
authorTravis Reitter <travis.reitter@collabora.co.uk>
Tue, 12 Jul 2011 18:48:43 +0000 (11:48 -0700)
committerTravis Reitter <travis.reitter@collabora.co.uk>
Fri, 12 Aug 2011 15:43:26 +0000 (17:43 +0200)
Helps: bgo#653679 - Change PostalAddressDetails.postal_addresses to
support vCard-like arbitrary parameters

tests/folks/field-details.vala

index 37e9aac..1bd9840 100644 (file)
@@ -27,6 +27,7 @@ public class FieldDetailsTests : Folks.TestCase
       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 ()
@@ -100,6 +101,53 @@ public class FieldDetailsTests : Folks.TestCase
       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)