dee

Merge lp:~unity-team/dee/noitcasnart-desrever into lp:dee

Proposed by Mikkel Kamstrup Erlandsen
Status: Merged
Approved by: Michal Hruby
Approved revision: 345
Merged at revision: 343
Proposed branch: lp:~unity-team/dee/noitcasnart-desrever
Merge into: lp:dee
Diff against target: 575 lines (+433/-7)
4 files modified
src/dee-transaction.c (+6/-5)
tests/model-helper-clear3add5.c (+22/-0)
tests/test-model-interactions.c (+75/-0)
tests/test-transaction.c (+330/-2)
To merge this branch: bzr merge lp:~unity-team/dee/noitcasnart-desrever
Reviewer Review Type Date Requested Status
Michal Hruby (community) Approve
Review via email: mp+91432@code.launchpad.net

Description of the change

Make DeeTransaction insert rows in an appending manner (instead of prepending) during commit(). Several places in Unity subtly assume an appending behavior on everything. This, among others, caused results from lenses to be reversed when using a DeeTransaction.

Most of the noise in this diff is me adding tonnes of test case left and right to track this down. The real meat is in the last revision.

To post a comment you must log in.
Revision history for this message
Michal Hruby (mhr3) wrote :

Who wouldn't approve 500 lines of extra tests?! ;)

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/dee-transaction.c'
2--- src/dee-transaction.c 2012-01-10 07:43:54 +0000
3+++ src/dee-transaction.c 2012-02-03 13:31:36 +0000
4@@ -1500,14 +1500,14 @@
5 if (jiter->segment->is_committed)
6 break;
7
8- for (seg_iter = jiter->segment->last_iter,
9+ for (seg_iter = jiter->segment->first_iter,
10 iter = jiter->segment->target_iter;
11 seg_iter;
12- seg_iter = seg_iter->prev_iter)
13+ seg_iter = seg_iter->next_iter)
14 {
15- iter = dee_model_insert_row_before (priv->target,
16- iter,
17- seg_iter->row_data);
18+ dee_model_insert_row_before (priv->target,
19+ iter,
20+ seg_iter->row_data);
21 }
22
23 jiter->segment->is_committed = TRUE;
24@@ -1546,3 +1546,4 @@
25 {
26 return g_quark_from_static_string ("dee-transaction-error-quark");
27 }
28+
29
30=== modified file 'tests/model-helper-clear3add5.c'
31--- tests/model-helper-clear3add5.c 2012-01-06 10:35:30 +0000
32+++ tests/model-helper-clear3add5.c 2012-02-03 13:31:36 +0000
33@@ -54,6 +54,7 @@
34 main (gint argc, gchar *argv[])
35 {
36 DeeModel *model;
37+ DeeModelIter *iter;
38 GSList *added;
39
40 g_type_init ();
41@@ -84,6 +85,27 @@
42 g_assert (g_slist_length (added) == 5 || g_slist_length (added) == 2);
43 g_assert_cmpint (dee_model_get_n_rows (model), ==, 5);
44
45+ /* Check ordering and contents */
46+ iter = dee_model_get_first_iter (model);
47+ g_assert_cmpint (dee_model_get_int32 (model, iter, 0), ==, 0);
48+ g_assert_cmpstr (dee_model_get_string (model, iter, 1), ==, "zero");
49+
50+ iter = dee_model_next (model, iter);
51+ g_assert_cmpint (dee_model_get_int32 (model, iter, 0), ==, 1);
52+ g_assert_cmpstr (dee_model_get_string (model, iter, 1), ==, "one");
53+
54+ iter = dee_model_next (model, iter);
55+ g_assert_cmpint (dee_model_get_int32 (model, iter, 0), ==, 2);
56+ g_assert_cmpstr (dee_model_get_string (model, iter, 1), ==, "two");
57+
58+ iter = dee_model_next (model, iter);
59+ g_assert_cmpint (dee_model_get_int32 (model, iter, 0), ==, 3);
60+ g_assert_cmpstr (dee_model_get_string (model, iter, 1), ==, "three");
61+
62+ iter = dee_model_next (model, iter);
63+ g_assert_cmpint (dee_model_get_int32 (model, iter, 0), ==, 4);
64+ g_assert_cmpstr (dee_model_get_string (model, iter, 1), ==, "four");
65+
66 /* Disregarding the hypothetical optimization mentioned above we need the
67 * correct seqnum */
68 g_assert_cmpint (11, ==, (guint) dee_serializable_model_get_seqnum (model));
69
70=== modified file 'tests/test-model-interactions.c'
71--- tests/test-model-interactions.c 2011-11-23 11:26:12 +0000
72+++ tests/test-model-interactions.c 2012-02-03 13:31:36 +0000
73@@ -49,6 +49,7 @@
74 static void test_row_removed (Fixture *fix, gconstpointer data);
75 static void test_model_clear (Fixture *fix, gconstpointer data);
76 static void test_clear_add (Fixture *fix, gconstpointer data);
77+static void test_clear_add_txn (Fixture *fix, gconstpointer data);
78 static void test_clear_then_add (Fixture *fix, gconstpointer data);
79 static void test_row_inserted (Fixture *fix, gconstpointer data);
80 static void test_schemaless_leader (Fixture *fix, gconstpointer data);
81@@ -73,6 +74,8 @@
82 model_setup, test_model_clear, model_teardown);
83 g_test_add (DOMAIN"/ClearAndAdd", Fixture, 0,
84 model_setup, test_clear_add, model_teardown);
85+ g_test_add (DOMAIN"/TxnClearAndAdd", Fixture, 0,
86+ model_setup, test_clear_add_txn, model_teardown);
87 g_test_add (DOMAIN"/ClearThenAdd", Fixture, 0,
88 model_setup, test_clear_then_add, model_teardown);
89 g_test_add (DOMAIN"/RowInserted", Fixture, 0,
90@@ -246,6 +249,33 @@
91 return FALSE;
92 }
93
94+static gboolean
95+_txn_clear_and_add5rows (DeeModel *model)
96+{
97+ DeeTransaction *txn;
98+ GError *error;
99+
100+ g_return_val_if_fail (DEE_IS_MODEL (model), FALSE);
101+
102+
103+ txn = dee_transaction_new (model);
104+
105+ _clear_model (DEE_MODEL (txn));
106+ _add5rows (DEE_MODEL (txn));
107+
108+ error = NULL;
109+ dee_transaction_commit (txn, &error);
110+
111+ if (error)
112+ {
113+ g_critical ("Failed to commit clear-add5 transaction: %s", error->message);
114+ }
115+
116+ g_object_unref (txn);
117+
118+ return FALSE;
119+}
120+
121 static void
122 test_clone (Fixture *fix, gconstpointer data)
123 {
124@@ -361,6 +391,50 @@
125 }
126
127 static void
128+test_clear_add_txn (Fixture *fix, gconstpointer data)
129+{
130+ if (gtx_wait_for_signal (G_OBJECT (fix->model), TIMEOUT, "notify::synchronized", NULL))
131+ g_critical ("Model never emitted 'ready' signal");
132+
133+ g_timeout_add (500, (GSourceFunc)_add3rows, fix->model);
134+ if (gtx_wait_for_command (TESTDIR,
135+ MODEL_HELPER (add3rows, MODEL_NAME),
136+ 2000))
137+ g_critical ("Model helper timed out");
138+
139+ gtx_assert_last_command_status (0);
140+
141+ g_timeout_add (500, (GSourceFunc)_txn_clear_and_add5rows, fix->model);
142+ if (gtx_wait_for_command (TESTDIR,
143+ MODEL_HELPER (clear3add5, MODEL_NAME),
144+ 2000))
145+ g_critical ("Model helper timed out");
146+
147+ /* Test that the local model looks as expected */
148+ DeeModelIter *iter = dee_model_get_first_iter (fix->model);
149+ g_assert_cmpint (dee_model_get_int32 (fix->model, iter, 0), ==, 0);
150+ g_assert_cmpstr (dee_model_get_string (fix->model, iter, 1), ==, "zero");
151+
152+ iter = dee_model_next (fix->model, iter);
153+ g_assert_cmpint (dee_model_get_int32 (fix->model, iter, 0), ==, 1);
154+ g_assert_cmpstr (dee_model_get_string (fix->model, iter, 1), ==, "one");
155+
156+ iter = dee_model_next (fix->model, iter);
157+ g_assert_cmpint (dee_model_get_int32 (fix->model, iter, 0), ==, 2);
158+ g_assert_cmpstr (dee_model_get_string (fix->model, iter, 1), ==, "two");
159+
160+ iter = dee_model_next (fix->model, iter);
161+ g_assert_cmpint (dee_model_get_int32 (fix->model, iter, 0), ==, 3);
162+ g_assert_cmpstr (dee_model_get_string (fix->model, iter, 1), ==, "three");
163+
164+ iter = dee_model_next (fix->model, iter);
165+ g_assert_cmpint (dee_model_get_int32 (fix->model, iter, 0), ==, 4);
166+ g_assert_cmpstr (dee_model_get_string (fix->model, iter, 1), ==, "four");
167+
168+ gtx_assert_last_command_status (0);
169+}
170+
171+static void
172 test_clear_then_add (Fixture *fix, gconstpointer data)
173 {
174 if (gtx_wait_for_signal (G_OBJECT (fix->model), TIMEOUT, "notify::synchronized", NULL))
175@@ -480,3 +554,4 @@
176
177 gtx_assert_last_command_status (0);
178 }
179+
180
181=== modified file 'tests/test-transaction.c'
182--- tests/test-transaction.c 2012-01-02 10:05:21 +0000
183+++ tests/test-transaction.c 2012-02-03 13:31:36 +0000
184@@ -29,8 +29,10 @@
185
186 } Fixture;
187
188-static void setup (Fixture *fix, gconstpointer data);
189-static void teardown (Fixture *fix, gconstpointer data);
190+static void setup (Fixture *fix, gconstpointer data);
191+static void setup_proxy (Fixture *fix, gconstpointer data);
192+static void setup_shared (Fixture *fix, gconstpointer data);
193+static void teardown (Fixture *fix, gconstpointer data);
194
195 static void
196 setup (Fixture *fix, gconstpointer data)
197@@ -43,6 +45,30 @@
198 }
199
200 static void
201+setup_proxy (Fixture *fix, gconstpointer data)
202+{
203+ DeeModel *backend = dee_sequence_model_new ();
204+ dee_model_set_schema (backend, "s", "i", NULL);
205+
206+ fix->model = g_object_new (DEE_TYPE_PROXY_MODEL, "back-end", backend, NULL);
207+
208+ /* The txn must be created during the tests because we need to verify how
209+ * it works when constructed on top of various states of the fix->model */
210+
211+ g_object_unref (backend);
212+}
213+
214+static void
215+setup_shared (Fixture *fix, gconstpointer data)
216+{
217+ fix->model = dee_shared_model_new ("my.test.Model");
218+ dee_model_set_schema (fix->model, "s", "i", NULL);
219+
220+ /* The txn must be created during the tests because we need to verify how
221+ * it works when constructed on top of various states of the fix->model */
222+}
223+
224+static void
225 teardown (Fixture *fix, gconstpointer data)
226 {
227 g_object_unref (fix->model);
228@@ -530,6 +556,140 @@
229 }
230
231 static void
232+test_target_5_clear_append_2 (Fixture *fix, gconstpointer data)
233+{
234+ DeeModelIter *iter;
235+ GError *error;
236+ gchar *s;
237+ gint32 i;
238+
239+ /**
240+ * Target: A B C D E
241+ * Txn: - - - - - F G
242+ */
243+
244+ dee_model_append (fix->model, "A", (gint32) 'A');
245+ dee_model_append (fix->model, "B", (gint32) 'B');
246+ dee_model_append (fix->model, "C", (gint32) 'C');
247+ dee_model_append (fix->model, "D", (gint32) 'D');
248+ dee_model_append (fix->model, "E", (gint32) 'E');
249+
250+ fix->txn = dee_transaction_new (fix->model);
251+ dee_model_clear (fix->txn);
252+ dee_model_append (fix->txn, "F", (gint32) 'F');
253+ dee_model_append (fix->txn, "G", (gint32) 'G');
254+
255+ /* Txn looks like we expect before commit */
256+ g_assert_cmpint (dee_model_get_n_rows (fix->txn), == , 2);
257+
258+ iter = dee_model_get_first_iter (fix->txn);
259+ dee_model_get (fix->txn, iter, &s, &i);
260+ g_assert_cmpstr ("F", ==, s);
261+ g_assert_cmpint ((gint32) 'F', ==, i);
262+
263+ iter = dee_model_next (fix->txn, iter);
264+ dee_model_get (fix->txn, iter, &s, &i);
265+ g_assert_cmpstr ("G", ==, s);
266+ g_assert_cmpint ((gint32) 'G', ==, i);
267+
268+ g_assert (dee_model_is_last (fix->txn, dee_model_next (fix->txn, iter)));
269+
270+ /* COMMIT */
271+ error = NULL;
272+ if (!dee_transaction_commit (DEE_TRANSACTION (fix->txn), &error))
273+ {
274+ g_critical ("Transaction failed to commit with: %s", error->message);
275+ g_error_free (error);
276+ }
277+ if (error)
278+ {
279+ g_critical ("dee_transaction_commit() returned TRUE, "
280+ "but error was set to: %s", error->message);
281+ }
282+
283+ g_assert (dee_transaction_is_committed (DEE_TRANSACTION (fix->txn)));
284+
285+ g_assert_cmpint (2, ==, dee_model_get_n_rows (fix->model));
286+
287+ iter = dee_model_get_first_iter (fix->model);
288+ dee_model_get (fix->model, iter, &s, &i);
289+ g_assert_cmpstr ("F", ==, s);
290+ g_assert_cmpint ((gint32) 'F', ==, i);
291+
292+ iter = dee_model_next (fix->model, iter);
293+ dee_model_get (fix->model, iter, &s, &i);
294+ g_assert_cmpstr ("G", ==, s);
295+ g_assert_cmpint ((gint32) 'G', ==, i);
296+
297+ g_assert (dee_model_is_last (fix->model, dee_model_next (fix->model, iter)));
298+}
299+
300+static void
301+test_target_0_clear_append_2 (Fixture *fix, gconstpointer data)
302+{
303+ DeeModelIter *iter;
304+ GError *error;
305+ gchar *s;
306+ gint32 i;
307+
308+ /**
309+ * Target:
310+ * Txn: A B
311+ */
312+
313+ /* The trick to this is the clear() on an empty model.
314+ * Or - hopefully that is not a trick... that is what we test ;-) */
315+ fix->txn = dee_transaction_new (fix->model);
316+ dee_model_clear (fix->txn);
317+ dee_model_append (fix->txn, "A", (gint32) 'A');
318+ dee_model_append (fix->txn, "B", (gint32) 'B');
319+
320+ /* Txn looks like we expect before commit */
321+ g_assert_cmpint (dee_model_get_n_rows (fix->txn), == , 2);
322+
323+ iter = dee_model_get_first_iter (fix->txn);
324+ dee_model_get (fix->txn, iter, &s, &i);
325+ g_assert_cmpstr ("A", ==, s);
326+ g_assert_cmpint ((gint32) 'A', ==, i);
327+
328+ iter = dee_model_next (fix->txn, iter);
329+ dee_model_get (fix->txn, iter, &s, &i);
330+ g_assert_cmpstr ("B", ==, s);
331+ g_assert_cmpint ((gint32) 'B', ==, i);
332+
333+ g_assert (dee_model_is_last (fix->txn, dee_model_next (fix->txn, iter)));
334+
335+ /* COMMIT */
336+ error = NULL;
337+ if (!dee_transaction_commit (DEE_TRANSACTION (fix->txn), &error))
338+ {
339+ g_critical ("Transaction failed to commit with: %s", error->message);
340+ g_error_free (error);
341+ }
342+ if (error)
343+ {
344+ g_critical ("dee_transaction_commit() returned TRUE, "
345+ "but error was set to: %s", error->message);
346+ }
347+
348+ g_assert (dee_transaction_is_committed (DEE_TRANSACTION (fix->txn)));
349+
350+ g_assert_cmpint (2, ==, dee_model_get_n_rows (fix->model));
351+
352+ iter = dee_model_get_first_iter (fix->model);
353+ dee_model_get (fix->model, iter, &s, &i);
354+ g_assert_cmpstr ("A", ==, s);
355+ g_assert_cmpint ((gint32) 'A', ==, i);
356+
357+ iter = dee_model_next (fix->model, iter);
358+ dee_model_get (fix->model, iter, &s, &i);
359+ g_assert_cmpstr ("B", ==, s);
360+ g_assert_cmpint ((gint32) 'B', ==, i);
361+
362+ g_assert (dee_model_is_last (fix->model, dee_model_next (fix->model, iter)));
363+}
364+
365+static void
366 test_target_1_change_1_add_2 (Fixture *fix, gconstpointer data)
367 {
368 DeeModelIter *iter, *txn_iter;
369@@ -792,6 +952,108 @@
370 g_assert_cmpint (i, ==, 11);
371 }
372
373+static int txn_remaining_rows = 2;
374+
375+void
376+txn_on_row_added (DeeModel *txn, DeeModelIter *iter)
377+{
378+ if (txn_remaining_rows == 2)
379+ {
380+ g_assert_cmpstr (dee_model_get_string (txn, iter, 0), ==, "A");
381+ g_assert_cmpint (dee_model_get_int32 (txn, iter, 1), ==, (gint32) 'A');
382+ }
383+ else if (txn_remaining_rows == 1)
384+ {
385+ g_assert_cmpstr (dee_model_get_string (txn, iter, 0), ==, "B");
386+ g_assert_cmpint (dee_model_get_int32 (txn, iter, 1), ==, (gint32) 'B');
387+ }
388+ else
389+ {
390+ g_critical ("Unexpected row-added signal on txn with %i remaining rows",
391+ txn_remaining_rows);
392+ }
393+
394+ txn_remaining_rows--;
395+}
396+
397+static int target_remaining_rows = 2;
398+
399+void
400+target_on_row_added (DeeModel *target, DeeModelIter *iter)
401+{
402+ if (target_remaining_rows == 2)
403+ {
404+ g_assert_cmpstr (dee_model_get_string (target, iter, 0), ==, "A");
405+ g_assert_cmpint (dee_model_get_int32 (target, iter, 1), ==, (gint32) 'A');
406+ }
407+ else if (target_remaining_rows == 1)
408+ {
409+ g_assert_cmpstr (dee_model_get_string (target, iter, 0), ==, "B");
410+ g_assert_cmpint (dee_model_get_int32 (target, iter, 1), ==, (gint32) 'B');
411+ }
412+ else
413+ {
414+ g_critical ("Unexpected row-added signal on target with %i remaining rows",
415+ target_remaining_rows);
416+ }
417+
418+ target_remaining_rows--;
419+}
420+
421+static void
422+test_signal_order (Fixture *fix, gconstpointer data)
423+{
424+ /* Reset global static state */
425+ txn_remaining_rows = 2;
426+ target_remaining_rows = 2;
427+
428+
429+ GError *error;
430+
431+ /**
432+ * Target:
433+ * Txn: A B
434+ */
435+
436+ fix->txn = dee_transaction_new (fix->model);
437+
438+ g_assert_cmpint (txn_remaining_rows, ==, 2);
439+ g_assert_cmpint (target_remaining_rows, ==, 2);
440+
441+ g_signal_connect (fix->model, "row-added",
442+ G_CALLBACK (target_on_row_added), NULL);
443+ g_signal_connect (fix->txn, "row-added",
444+ G_CALLBACK (txn_on_row_added), NULL);
445+
446+ dee_model_append (fix->txn, "A", (gint32) 'A');
447+
448+ g_assert_cmpint (txn_remaining_rows, ==, 1);
449+ g_assert_cmpint (target_remaining_rows, ==, 2);
450+
451+ dee_model_append (fix->txn, "B", (gint32) 'B');
452+
453+ g_assert_cmpint (txn_remaining_rows, ==, 0);
454+ g_assert_cmpint (target_remaining_rows, ==, 2);
455+
456+ /* COMMIT */
457+ error = NULL;
458+ if (!dee_transaction_commit (DEE_TRANSACTION (fix->txn), &error))
459+ {
460+ g_critical ("Transaction failed to commit with: %s", error->message);
461+ g_error_free (error);
462+ }
463+ if (error)
464+ {
465+ g_critical ("dee_transaction_commit() returned TRUE, "
466+ "but error was set to: %s", error->message);
467+ }
468+
469+ g_assert_cmpint (2, ==, dee_model_get_n_rows (fix->model));
470+
471+ g_assert_cmpint (txn_remaining_rows, ==, 0);
472+ g_assert_cmpint (target_remaining_rows, ==, 0);
473+}
474+
475 static void
476 test_concurrent_modification (Fixture *fix, gconstpointer data)
477 {
478@@ -884,31 +1146,97 @@
479 test_transaction_create_suite (void)
480 {
481 #define DOMAIN "/Model/Transaction"
482+#define PROXY_DOMAIN "/Model/Transaction/Proxy"
483+#define SHARED_DOMAIN "/Model/Transaction/Shared"
484
485 g_test_add (DOMAIN"/AdoptSchema", Fixture, 0,
486 setup, test_adopt_schema, teardown);
487+ g_test_add (PROXY_DOMAIN"/AdoptSchema", Fixture, 0,
488+ setup_proxy, test_adopt_schema, teardown);
489+
490 g_test_add (DOMAIN"/Target0Add1", Fixture, 0,
491 setup, test_target_0_add_1, teardown);
492+ g_test_add (PROXY_DOMAIN"/Target0Add1", Fixture, 0,
493+ setup_proxy, test_target_0_add_1, teardown);
494+
495 g_test_add (DOMAIN"/Target1Add1", Fixture, 0,
496 setup, test_target_1_add_1, teardown);
497+ g_test_add (PROXY_DOMAIN"/Target1Add1", Fixture, 0,
498+ setup_proxy, test_target_1_add_1, teardown);
499+
500 g_test_add (DOMAIN"/Target1Change1", Fixture, 0,
501 setup, test_target_1_change_1, teardown);
502+ g_test_add (PROXY_DOMAIN"/Target1Change1", Fixture, 0,
503+ setup_proxy, test_target_1_change_1, teardown);
504+
505 g_test_add (DOMAIN"/Target2Add3", Fixture, 0,
506 setup, test_target_2_add_3, teardown);
507+ g_test_add (PROXY_DOMAIN"/Target2Add3", Fixture, 0,
508+ setup_proxy, test_target_2_add_3, teardown);
509+
510 g_test_add (DOMAIN"/Target2Clear", Fixture, 0,
511 setup, test_target_2_clear, teardown);
512+ g_test_add (PROXY_DOMAIN"/Target2Clear", Fixture, 0,
513+ setup_proxy, test_target_2_clear, teardown);
514+
515 g_test_add (DOMAIN"/Target1ClearAdd3", Fixture, 0,
516 setup, test_target_1_clear_add_3, teardown);
517+ g_test_add (PROXY_DOMAIN"/Target1ClearAdd3", Fixture, 0,
518+ setup_proxy, test_target_1_clear_add_3, teardown);
519+
520+ g_test_add (DOMAIN"/Target5ClearAppend2", Fixture, 0,
521+ setup, test_target_5_clear_append_2, teardown);
522+ g_test_add (PROXY_DOMAIN"/Target5ClearAppend2", Fixture, 0,
523+ setup_proxy, test_target_5_clear_append_2, teardown);
524+ g_test_add (SHARED_DOMAIN"/Target5ClearAppend2", Fixture, 0,
525+ setup_shared, test_target_5_clear_append_2, teardown);
526+
527+ g_test_add (DOMAIN"/Target0ClearAppend2", Fixture, 0,
528+ setup, test_target_0_clear_append_2, teardown);
529+ g_test_add (PROXY_DOMAIN"/Target0ClearAppend2", Fixture, 0,
530+ setup_proxy, test_target_0_clear_append_2, teardown);
531+ g_test_add (SHARED_DOMAIN"/Target0ClearAppend2", Fixture, 0,
532+ setup_shared, test_target_0_clear_append_2, teardown);
533+
534 g_test_add (DOMAIN"/Target1Change1Add2", Fixture, 0,
535 setup, test_target_1_change_1_add_2, teardown);
536+ g_test_add (PROXY_DOMAIN"/Target1Change1Add2", Fixture, 0,
537+ setup_proxy, test_target_1_change_1_add_2, teardown);
538+ g_test_add (SHARED_DOMAIN"/Target1Change1Add2", Fixture, 0,
539+ setup_shared, test_target_1_change_1_add_2, teardown);
540+
541 g_test_add (DOMAIN"/Target1Change1Clear", Fixture, 0,
542 setup, test_target_1_change_1_clear, teardown);
543+ g_test_add (PROXY_DOMAIN"/Target1Change1Clear", Fixture, 0,
544+ setup_proxy, test_target_1_change_1_clear, teardown);
545+ g_test_add (SHARED_DOMAIN"/Target1Change1Clear", Fixture, 0,
546+ setup_shared, test_target_1_change_1_clear, teardown);
547+
548 g_test_add (DOMAIN"/Target2Change1Remove1", Fixture, 0,
549 setup, test_target_2_change_1_remove_1, teardown);
550+ g_test_add (PROXY_DOMAIN"/Target2Change1Remove1", Fixture, 0,
551+ setup_proxy, test_target_2_change_1_remove_1, teardown);
552+
553 g_test_add (DOMAIN"/Target2ChangeRemoveAppend", Fixture, 0,
554 setup, test_target_2_change_remove_append, teardown);
555+ g_test_add (PROXY_DOMAIN"/Target2ChangeRemoveAppend", Fixture, 0,
556+ setup_proxy, test_target_2_change_remove_append, teardown);
557+
558+ g_test_add (DOMAIN"/SignalOrder", Fixture, 0,
559+ setup, test_signal_order, teardown);
560+ g_test_add (PROXY_DOMAIN"/SignalOrder", Fixture, 0,
561+ setup_proxy, test_signal_order, teardown);
562+ g_test_add (SHARED_DOMAIN"/SignalOrder", Fixture, 0,
563+ setup_shared, test_signal_order, teardown);
564+
565 g_test_add (DOMAIN"/ConcurrentModification", Fixture, 0,
566 setup, test_concurrent_modification, teardown);
567+ g_test_add (PROXY_DOMAIN"/ConcurrentModification", Fixture, 0,
568+ setup_proxy, test_concurrent_modification, teardown);
569+
570 g_test_add (DOMAIN"/DoubleCommit", Fixture, 0,
571 setup, test_double_commit, teardown);
572+ g_test_add (PROXY_DOMAIN"/DoubleCommit", Fixture, 0,
573+ setup_proxy, test_double_commit, teardown);
574 }
575+

Subscribers

People subscribed via source and target branches

to all changes: