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 }