1 #include <glib.h>
2 #include "../git-status-factory.h"
3
4 static void
check_status(AnjutaVcsStatus index,AnjutaVcsStatus working_tree,AnjutaVcsStatus expected_index,AnjutaVcsStatus expected_working_tree,gchar * test_type)5 check_status (AnjutaVcsStatus index, AnjutaVcsStatus working_tree,
6 AnjutaVcsStatus expected_index,
7 AnjutaVcsStatus expected_working_tree,
8 gchar *test_type)
9
10 {
11 if (g_test_verbose ())
12 g_print ("Testing %s\n", test_type);
13
14 g_assert_cmpint (expected_index, ==, index);
15 g_assert_cmpint (expected_working_tree, ==, working_tree);
16 }
17
18 static void
test_status(void)19 test_status (void)
20 {
21 GitStatusFactory *factory;
22 GitStatus *status;
23 AnjutaVcsStatus working_tree, index;
24
25 factory = git_status_factory_new ();
26 status = git_status_factory_create_status (factory,
27 " M plugins/git/plugin.c");
28 index = git_status_get_index_status (status);
29 working_tree = git_status_get_working_tree_status (status);
30
31 g_object_unref (status);
32 check_status (index, working_tree,
33 ANJUTA_VCS_STATUS_NONE,
34 ANJUTA_VCS_STATUS_MODIFIED,
35 "modified in working tree");
36
37 status = git_status_factory_create_status (factory,
38 "A plugins/git/plugin.c");
39 index = git_status_get_index_status (status);
40 working_tree = git_status_get_working_tree_status (status);
41
42 g_object_unref (status);
43 check_status (index, working_tree,
44 ANJUTA_VCS_STATUS_ADDED,
45 ANJUTA_VCS_STATUS_NONE,
46 "added to index");
47
48 status = git_status_factory_create_status (factory,
49 "D plugins/git/plugin.c");
50 index = git_status_get_index_status (status);
51 working_tree = git_status_get_working_tree_status (status);
52
53 g_object_unref (status);
54 check_status (index, working_tree,
55 ANJUTA_VCS_STATUS_DELETED,
56 ANJUTA_VCS_STATUS_NONE,
57 "removed from index");
58
59 status = git_status_factory_create_status (factory,
60 "MM plugins/git/plugin.c");
61 index = git_status_get_index_status (status);
62 working_tree = git_status_get_working_tree_status (status);
63
64 g_object_unref (status);
65 check_status (index, working_tree,
66 ANJUTA_VCS_STATUS_MODIFIED,
67 ANJUTA_VCS_STATUS_MODIFIED,
68 "modified in index and working tree");
69
70 status = git_status_factory_create_status (factory,
71 "?? plugins/git/plugin.c");
72 index = git_status_get_index_status (status);
73 working_tree = git_status_get_working_tree_status (status);
74
75 g_object_unref (status);
76 check_status (index, working_tree,
77 ANJUTA_VCS_STATUS_UNVERSIONED,
78 ANJUTA_VCS_STATUS_UNVERSIONED,
79 "untracked");
80
81 status = git_status_factory_create_status (factory,
82 "DD plugins/git/plugin.c");
83 index = git_status_get_index_status (status);
84 working_tree = git_status_get_working_tree_status (status);
85
86 g_object_unref (status);
87 check_status (index, working_tree,
88 ANJUTA_VCS_STATUS_NONE,
89 ANJUTA_VCS_STATUS_CONFLICTED,
90 "conflict: both deleted");
91
92 status = git_status_factory_create_status (factory,
93 "AU plugins/git/plugin.c");
94 index = git_status_get_index_status (status);
95 working_tree = git_status_get_working_tree_status (status);
96
97 g_object_unref (status);
98 check_status (index, working_tree,
99 ANJUTA_VCS_STATUS_NONE,
100 ANJUTA_VCS_STATUS_CONFLICTED,
101 "conflict: added by us");
102
103 status = git_status_factory_create_status (factory,
104 "UD plugins/git/plugin.c");
105 index = git_status_get_index_status (status);
106 working_tree = git_status_get_working_tree_status (status);
107
108 g_object_unref (status);
109 check_status (index, working_tree,
110 ANJUTA_VCS_STATUS_NONE,
111 ANJUTA_VCS_STATUS_CONFLICTED,
112 "conflict: deleted by them");
113
114 status = git_status_factory_create_status (factory,
115 "UA plugins/git/plugin.c");
116 index = git_status_get_index_status (status);
117 working_tree = git_status_get_working_tree_status (status);
118
119 g_object_unref (status);
120 check_status (index, working_tree,
121 ANJUTA_VCS_STATUS_NONE,
122 ANJUTA_VCS_STATUS_CONFLICTED,
123 "conflict: added by them");
124
125 status = git_status_factory_create_status (factory,
126 "DU plugins/git/plugin.c");
127 index = git_status_get_index_status (status);
128 working_tree = git_status_get_working_tree_status (status);
129
130 g_object_unref (status);
131 check_status (index, working_tree,
132 ANJUTA_VCS_STATUS_NONE,
133 ANJUTA_VCS_STATUS_CONFLICTED,
134 "conflict: deleted by us");
135
136 status = git_status_factory_create_status (factory,
137 "AA plugins/git/plugin.c");
138 index = git_status_get_index_status (status);
139 working_tree = git_status_get_working_tree_status (status);
140
141 g_object_unref (status);
142 check_status (index, working_tree,
143 ANJUTA_VCS_STATUS_NONE,
144 ANJUTA_VCS_STATUS_CONFLICTED,
145 "conflict: both added");
146
147 status = git_status_factory_create_status (factory,
148 "UU plugins/git/plugin.c");
149 index = git_status_get_index_status (status);
150 working_tree = git_status_get_working_tree_status (status);
151
152 g_object_unref (status);
153 check_status (index, working_tree,
154 ANJUTA_VCS_STATUS_NONE,
155 ANJUTA_VCS_STATUS_CONFLICTED,
156 "conflict: both modified");
157
158 g_object_unref (factory);
159 }
160
161 int
main(int argc,char * argv[])162 main (int argc, char *argv[])
163 {
164 g_test_init (&argc, &argv, NULL);
165
166 g_test_add_func ("/Git/Status", test_status);
167
168 return g_test_run ();
169 }