using Folks;
using Gee;
-public class SetEmailsTests : Folks.TestCase
+public class SetEmailsTests : TrackerTest.TestCase
{
private GLib.MainLoop _main_loop;
- private TrackerTest.Backend _tracker_backend;
private IndividualAggregator _aggregator;
private string _persona_fullname;
private string _email_1;
{
base ("SetEmailsTests");
- this._tracker_backend = new TrackerTest.Backend ();
-
this.add_test ("test setting emails ", this.test_set_emails);
}
- public override void set_up ()
- {
- }
-
- public override void tear_down ()
- {
- }
-
public void test_set_emails ()
{
this._main_loop = new GLib.MainLoop (null, false);
this._email_2 = "email-2@example.org";
c1.set (Trf.OntologyDefs.NCO_FULLNAME, this._persona_fullname);
- this._tracker_backend.add_contact (c1);
+ ((!) this.tracker_backend).add_contact (c1);
- this._tracker_backend.set_up ();
+ ((!) this.tracker_backend).set_up ();
this._email_1_found = false;
this._email_2_found = false;
- this._test_set_emails_async ();
+ this._test_set_emails_async.begin ();
- Timeout.add_seconds (5, () =>
- {
- this._main_loop.quit ();
- assert_not_reached ();
- });
-
- this._main_loop.run ();
+ TestUtils.loop_run_with_timeout (this._main_loop);
assert (this._email_1_found);
assert (this._email_2_found);
-
- this._tracker_backend.tear_down ();
}
private async void _test_set_emails_async ()
{
var store = BackendStore.dup ();
yield store.prepare ();
- this._aggregator = new IndividualAggregator ();
- this._aggregator.individuals_changed.connect
+ this._aggregator = IndividualAggregator.dup ();
+ this._aggregator.individuals_changed_detailed.connect
(this._individuals_changed_cb);
try
{
}
}
- private void _individuals_changed_cb
- (GLib.List<Individual>? added,
- GLib.List<Individual>? removed,
- string? message,
- Persona? actor,
- GroupDetails.ChangeReason reason)
+ private void _individuals_changed_cb (
+ MultiMap<Individual?, Individual?> changes)
{
- foreach (unowned Individual i in added)
+ var added = changes.get_values ();
+ var removed = changes.get_keys ();
+
+ foreach (var i in added)
{
+ assert (i != null);
+
if (i.full_name == this._persona_fullname)
{
i.notify["email-addresses"].connect (this._notify_emails_cb);
- GLib.List<FieldDetails> emails = new GLib.List<FieldDetails> ();
- var p1 = new FieldDetails (this._email_1);
- emails.prepend ((owned) p1);
- var p2 = new FieldDetails (this._email_2);
- emails.prepend ((owned) p2);
- Trf.Persona p = (Trf.Persona)i.personas.nth_data (0);
- p.email_addresses = (owned) emails;
+ var emails = new HashSet<EmailFieldDetails> (
+ AbstractFieldDetails<string>.hash_static,
+ AbstractFieldDetails<string>.equal_static);
+ var p1 = new EmailFieldDetails (this._email_1);
+ emails.add (p1);
+ var p2 = new EmailFieldDetails (this._email_2);
+ emails.add (p2);
+
+ foreach (var p in i.personas)
+ {
+ ((EmailDetails) p).email_addresses = emails;
+ }
}
}
- assert (removed == null);
+ assert (removed.size == 1);
+
+ foreach (var i in removed)
+ {
+ assert (i == null);
+ }
}
private void _notify_emails_cb (Object individual_obj, ParamSpec ps)
Folks.Individual i = (Folks.Individual) individual_obj;
if (i.full_name == this._persona_fullname)
{
- foreach (unowned FieldDetails p in i.email_addresses)
+ foreach (var p in i.email_addresses)
{
if (p.value == this._email_1)
this._email_1_found = true;
{
Test.init (ref args);
- TestSuite root = TestSuite.get_root ();
- root.add_suite (new SetEmailsTests ().get_suite ());
-
+ var tests = new SetEmailsTests ();
+ tests.register ();
Test.run ();
+ tests.final_tear_down ();
return 0;
}