~ubuntu-branches/ubuntu/trusty/dee/trusty-proposed

« back to all changes in this revision

Viewing changes to tests/test-filter-model.c

  • Committer: Package Import Robot
  • Author(s): Ubuntu daily release, Michal Hruby, Ubuntu daily release
  • Date: 2013-09-24 06:44:11 UTC
  • mfrom: (1.1.36)
  • Revision ID: package-import@ubuntu.com-20130924064411-84kraxgbluq5xj88
Tags: 1.2.7+13.10.20130924.1-0ubuntu1
[ Michal Hruby ]
* Added begin and end changeset API.

[ Ubuntu daily release ]
* debian/*symbols: auto-update new symbols to released version
* Automatic snapshot from revision 429

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
 
29
29
} FilterFixture;
30
30
 
31
 
static void setup    (FilterFixture *fix, gconstpointer data);
32
 
static void teardown (FilterFixture *fix, gconstpointer data);
 
31
typedef struct
 
32
{
 
33
  gint first;
 
34
  gint second;
 
35
 
 
36
} TwoIntsTuple;
 
37
 
 
38
static void setup       (FilterFixture *fix, gconstpointer data);
 
39
static void setup_empty (FilterFixture *fix, gconstpointer data);
 
40
static void teardown    (FilterFixture *fix, gconstpointer data);
33
41
 
34
42
static void test_empty_orig                    (FilterFixture *fix,
35
43
                                                gconstpointer  data);
54
62
static void test_regex                         (FilterFixture *fix,
55
63
                                                gconstpointer  data);
56
64
 
 
65
static void test_changesets                    (FilterFixture *fix,
 
66
                                                gconstpointer  data);
 
67
 
57
68
void
58
69
test_filter_model_create_suite (void)
59
70
{
78
89
              setup, test_any, teardown);
79
90
  g_test_add (DOMAIN"/Regex", FilterFixture, 0,
80
91
              setup, test_regex, teardown);
 
92
  g_test_add (DOMAIN"/Changesets", FilterFixture, 0,
 
93
              setup_empty, test_changesets, teardown);
81
94
}
82
95
 
83
96
static void
84
 
setup (FilterFixture *fix, gconstpointer data)
 
97
setup_empty (FilterFixture *fix, gconstpointer data)
85
98
{
86
99
  fix->model = dee_sequence_model_new ();
87
100
  dee_model_set_schema (fix->model, "i", "s", NULL);
88
101
  
89
 
  dee_model_append (fix->model, 0, "Zero");
90
 
  dee_model_append (fix->model, 1, "One");
91
 
  dee_model_append (fix->model, 2, "Two");
92
 
 
93
102
  g_assert (DEE_IS_SEQUENCE_MODEL (fix->model));
94
103
}
95
104
 
96
105
static void
 
106
add_3rows(DeeModel *model)
 
107
{
 
108
  dee_model_append (model, 0, "Zero");
 
109
  dee_model_append (model, 1, "One");
 
110
  dee_model_append (model, 2, "Two");
 
111
}
 
112
 
 
113
static void
 
114
setup (FilterFixture *fix, gconstpointer data)
 
115
{
 
116
  setup_empty (fix, data);
 
117
  add_3rows (fix->model);
 
118
}
 
119
 
 
120
static void
97
121
teardown (FilterFixture *fix, gconstpointer data)
98
122
{
99
123
  g_object_unref (fix->model);
282
306
  g_assert_cmpint (27, ==, dee_model_get_int32 (fix->model, iter, 0));
283
307
  g_assert_cmpstr ("TwentySeven", ==, dee_model_get_string (m, iter, 1));
284
308
  g_assert_cmpstr ("TwentySeven", ==, dee_model_get_string (fix->model, iter, 1));
285
 
  
 
309
 
 
310
  /* And append two more rows to the filtered model, to ensure the order */  
 
311
  dee_model_prepend (m, -1, "MinusOne");
 
312
  dee_model_append (m, 39, "ThirtyNine");
 
313
  g_assert_cmpint (3, ==, filter_add_count);
 
314
  g_assert_cmpint (5, ==, orig_add_count);
 
315
  g_assert_cmpint (3, ==, dee_model_get_n_rows (m));
 
316
  g_assert_cmpint (8, ==, dee_model_get_n_rows (fix->model));
 
317
  g_assert_cmpuint (3, ==, dee_serializable_model_get_seqnum (m));
 
318
  iter = dee_model_prev (m, dee_model_get_last_iter (m));
 
319
  g_assert_cmpint (39, ==, dee_model_get_int32 (m, iter, 0));
 
320
  g_assert_cmpstr ("ThirtyNine", ==, dee_model_get_string (m, iter, 1));
 
321
  iter = dee_model_prev (m, iter);
 
322
  g_assert_cmpint (27, ==, dee_model_get_int32 (m, iter, 0));
 
323
  g_assert_cmpstr ("TwentySeven", ==, dee_model_get_string (m, iter, 1));
 
324
  iter = dee_model_prev (m, iter);
 
325
  g_assert_cmpint (-1, ==, dee_model_get_int32 (m, iter, 0));
 
326
  g_assert_cmpstr ("MinusOne", ==, dee_model_get_string (m, iter, 1));
 
327
  iter = dee_model_prev (fix->model, dee_model_get_last_iter (fix->model));
 
328
  g_assert_cmpint (39, ==, dee_model_get_int32 (fix->model, iter, 0));
 
329
  g_assert_cmpstr ("ThirtyNine", ==, dee_model_get_string (fix->model, iter, 1));
 
330
 
286
331
  g_object_unref (m);
287
332
}
288
333
 
616
661
  _test_orig_ordering (fix, &filter);
617
662
  g_regex_unref (regex);
618
663
}
 
664
 
 
665
static void
 
666
increment_first (TwoIntsTuple *tuple)
 
667
{
 
668
  tuple->first++;
 
669
  // first always has to be incremented before second
 
670
  g_assert (tuple->first > tuple->second);
 
671
}
 
672
 
 
673
static void
 
674
increment_second (TwoIntsTuple *tuple)
 
675
{
 
676
  tuple->second++;
 
677
  // second needs to be incremented after first
 
678
  g_assert (tuple->second == tuple->first);
 
679
}
 
680
 
 
681
static void
 
682
test_changesets (FilterFixture *fix, gconstpointer data)
 
683
{
 
684
  GRegex       *regex;
 
685
  DeeFilter     filter;
 
686
  DeeModel     *filter_m1;
 
687
  DeeModel     *filter_m2;
 
688
  DeeModel     *filter_m3;
 
689
 
 
690
  regex = g_regex_new ("^..[eo]", 0, 0, NULL);
 
691
  dee_filter_new_regex (1, regex, &filter);
 
692
  filter_m1 = dee_filter_model_new (fix->model, &filter);
 
693
  g_regex_unref (regex);
 
694
 
 
695
  regex = g_regex_new ("^Z", 0, 0, NULL);
 
696
  dee_filter_new_regex (1, regex, &filter);
 
697
  filter_m2 = dee_filter_model_new (fix->model, &filter);
 
698
  g_regex_unref (regex);
 
699
 
 
700
  regex = g_regex_new ("^X", 0, 0, NULL);
 
701
  dee_filter_new_regex (1, regex, &filter);
 
702
  filter_m3 = dee_filter_model_new (fix->model, &filter);
 
703
  g_regex_unref (regex);
 
704
 
 
705
  g_assert_cmpuint (0, ==, dee_model_get_n_rows (fix->model));
 
706
  g_assert_cmpuint (0, ==, dee_model_get_n_rows (filter_m1));
 
707
  g_assert_cmpuint (0, ==, dee_model_get_n_rows (filter_m2));
 
708
  g_assert_cmpuint (0, ==, dee_model_get_n_rows (filter_m3));
 
709
 
 
710
  TwoIntsTuple tuple_m0 = { 0, 0 };
 
711
  TwoIntsTuple tuple_m1 = { 0, 0 };
 
712
  TwoIntsTuple tuple_m2 = { 0, 0 };
 
713
  TwoIntsTuple tuple_m3 = { 0, 0 };
 
714
 
 
715
  g_signal_connect_swapped (fix->model, "changeset-started",
 
716
                            G_CALLBACK (increment_first), &tuple_m0);
 
717
  g_signal_connect_swapped (fix->model, "changeset-finished",
 
718
                            G_CALLBACK (increment_second), &tuple_m0);
 
719
  g_signal_connect_swapped (filter_m1, "changeset-started",
 
720
                            G_CALLBACK (increment_first), &tuple_m1);
 
721
  g_signal_connect_swapped (filter_m1, "changeset-finished",
 
722
                            G_CALLBACK (increment_second), &tuple_m1);
 
723
  g_signal_connect_swapped (filter_m2, "changeset-started",
 
724
                            G_CALLBACK (increment_first), &tuple_m2);
 
725
  g_signal_connect_swapped (filter_m2, "changeset-finished",
 
726
                            G_CALLBACK (increment_second), &tuple_m2);
 
727
  g_signal_connect_swapped (filter_m3, "changeset-started",
 
728
                            G_CALLBACK (increment_first), &tuple_m3);
 
729
  g_signal_connect_swapped (filter_m3, "changeset-finished",
 
730
                            G_CALLBACK (increment_second), &tuple_m3);
 
731
 
 
732
  dee_model_begin_changeset (fix->model);
 
733
  add_3rows (fix->model);
 
734
  dee_model_end_changeset (fix->model);
 
735
 
 
736
  g_assert_cmpuint (3, ==, dee_model_get_n_rows (fix->model));
 
737
  g_assert_cmpuint (2, ==, dee_model_get_n_rows (filter_m1));
 
738
  g_assert_cmpuint (1, ==, dee_model_get_n_rows (filter_m2));
 
739
  g_assert_cmpuint (0, ==, dee_model_get_n_rows (filter_m3));
 
740
  g_assert_cmpint (tuple_m0.first, ==, 1);
 
741
  g_assert_cmpint (tuple_m0.second, ==, 1);
 
742
  g_assert_cmpint (tuple_m1.first, ==, 1);
 
743
  g_assert_cmpint (tuple_m1.second, ==, 1);
 
744
  g_assert_cmpint (tuple_m2.first, ==, 1);
 
745
  g_assert_cmpint (tuple_m2.second, ==, 1);
 
746
  g_assert_cmpint (tuple_m3.first, ==, 1);
 
747
  g_assert_cmpint (tuple_m3.second, ==, 1);
 
748
}