Merge lp:~unity-team/dee/noitcasnart-desrever into lp:dee
- noitcasnart-desrever
- Merge into trunk
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 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Michal Hruby (community) | Approve | ||
Review via email: mp+91432@code.launchpad.net |
Commit message
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.
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 | + |
Who wouldn't approve 500 lines of extra tests?! ;)