Changeset View
Changeset View
Standalone View
Standalone View
plugins/perforce/p4clientstub/main.cpp
- This file was added.
1 | /*************************************************************************** | ||||
---|---|---|---|---|---|
2 | * Copyright 2013 Morten Danielsen Volden <mvolden2@gmail.com> * | ||||
3 | * * | ||||
4 | * This program is free software: you can redistribute it and/or modify * | ||||
5 | * it under the terms of the GNU General Public License as published by * | ||||
6 | * the Free Software Foundation, either version 2 of the License, or * | ||||
7 | * (at your option) any later version. * | ||||
8 | * * | ||||
9 | * This program is distributed in the hope that it will be useful, * | ||||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * | ||||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | ||||
12 | * GNU General Public License for more details. * | ||||
13 | * * | ||||
14 | * You should have received a copy of the GNU General Public License * | ||||
15 | * along with this program. If not, see <http://www.gnu.org/licenses/>. * | ||||
16 | ***************************************************************************/ | ||||
17 | | ||||
18 | #include <iostream> | ||||
19 | #include <QString> | ||||
20 | #include <QByteArray> | ||||
21 | | ||||
22 | bool validateNumberOfArguments(int argc, char** /*argv*/) | ||||
23 | { | ||||
24 | if (argc < 3) { | ||||
25 | return false; | ||||
26 | } | ||||
27 | | ||||
28 | return true; | ||||
29 | } | ||||
30 | | ||||
31 | | ||||
32 | int fakeFstatOutput(QString const& filepath) | ||||
33 | { | ||||
34 | QByteArray tmp = filepath.toUtf8(); | ||||
35 | std::string fileText(tmp.constData(), tmp.size()); | ||||
36 | std::cout << "... depotFile /" << fileText << std::endl;// /tools/test/new_file.txt" | ||||
37 | std::cout << "... clientFile /home/projects" << fileText << std::endl; | ||||
38 | std::cout << "... isMapped" << std::endl; | ||||
39 | std::cout << "... headAction add" << std::endl; | ||||
40 | std::cout << "... headType text" << std::endl; | ||||
41 | std::cout << "... headTime 1285014691" << std::endl; | ||||
42 | std::cout << "... headRev 1" << std::endl; | ||||
43 | std::cout << "... headChange 759253" << std::endl; | ||||
44 | std::cout << "... headModTime 1285014680" << std::endl; | ||||
45 | std::cout << "... haveRev 1" << std::endl; | ||||
46 | return 0; | ||||
47 | } | ||||
48 | | ||||
49 | int fakeRevertOutput() | ||||
50 | { | ||||
51 | return 0; | ||||
52 | } | ||||
53 | | ||||
54 | int fakeSyncOutput() | ||||
55 | { | ||||
56 | return 0; | ||||
57 | } | ||||
58 | | ||||
59 | int fakeSubmitOutput() | ||||
60 | { | ||||
61 | return 0; | ||||
62 | } | ||||
63 | | ||||
64 | int fakeDiff2Output() | ||||
65 | { | ||||
66 | return 0; | ||||
67 | } | ||||
68 | | ||||
69 | int fakeDiffOutput() | ||||
70 | { | ||||
71 | return 0; | ||||
72 | } | ||||
73 | | ||||
74 | int fakeFileLogOutput(QString const& filepath) | ||||
75 | { | ||||
76 | QByteArray tmp = filepath.toUtf8(); | ||||
77 | std::string fileText(tmp.constData(), tmp.size()); | ||||
78 | std::cout << "//depot/" << fileText << std::endl; | ||||
79 | std::cout << "... #14 change 72 edit on 2013/02/04 15:38:35 by mvo@testbed (ktext)" << std::endl; | ||||
80 | std::cout << std::endl; | ||||
81 | std::cout << " Log a little more out" << std::endl; | ||||
82 | std::cout << std::endl; | ||||
83 | std::cout << "... #13 change 67 edit on 2013/02/04 15:31:48 by mov@testbed (ktext)" << std::endl; | ||||
84 | std::cout << std::endl; | ||||
85 | std::cout << " Rename rand -> random_number" << std::endl; | ||||
86 | std::cout << std::endl; | ||||
87 | std::cout << "... #12 change 79 edit on 2013/01/29 18:02:33 by mvo@testbed (ktext)" << std::endl; | ||||
88 | std::cout << std::endl; | ||||
89 | std::cout << " Prefer the use of std::string" << std::endl; | ||||
90 | std::cout << std::endl; | ||||
91 | std::cout << "... #11 change 33 edit on 2013/01/29 15:48:41 by mvo@testbed (ktext)" << std::endl; | ||||
92 | std::cout << std::endl; | ||||
93 | std::cout << " Correct Test Class to use QString" << std::endl; | ||||
94 | std::cout << std::endl; | ||||
95 | std::cout << "... #10 change 76 edit on 2013/01/28 19:21:33 by vom@testbed (ktext)" << std::endl; | ||||
96 | std::cout << std::endl; | ||||
97 | std::cout << " Minor changes. Changed the log level of a couple of log lines." << std::endl; | ||||
98 | std::cout << std::endl; | ||||
99 | std::cout << "... #9 change 17 edit on 2013/01/22 15:41:16 by vom@testbed (ktext)" << std::endl; | ||||
100 | std::cout << std::endl; | ||||
101 | std::cout << " Just added a comment" << std::endl; | ||||
102 | std::cout << std::endl; | ||||
103 | std::cout << "... #8 change 97 edit on 2013/01/17 13:54:26 by mvo@testbed (ktext)" << std::endl; | ||||
104 | std::cout << std::endl; | ||||
105 | std::cout << " Do not cleanup before we are absolutely done" << std::endl; | ||||
106 | std::cout << std::endl; | ||||
107 | std::cout << "... #7 change 12 edit on 2013/01/17 11:39:25 by mvo@testbed (ktext)" << std::endl; | ||||
108 | std::cout << std::endl; | ||||
109 | std::cout << " Insert a little debugging in the test class. Be more defensive when dealing with iterators" << std::endl; | ||||
110 | std::cout << std::endl; | ||||
111 | std::cout << "... #6 change 60 edit on 2013/01/09 13:19:07 by vom@testbed (ktext)" << std::endl; | ||||
112 | std::cout << std::endl; | ||||
113 | std::cout << " error and abort handling added to RingBuffer." << std::endl; | ||||
114 | std::cout << std::endl; | ||||
115 | std::cout << "... #5 change 30 edit on 2013/01/08 19:21:42 by mvo@testbed (ktext)" << std::endl; | ||||
116 | std::cout << std::endl; | ||||
117 | std::cout << " Fix two things in cleanup. Fix item on the todo list, cleanup a map" << std::endl; | ||||
118 | std::cout << std::endl; | ||||
119 | std::cout << "... #4 change 27 edit on 2013/01/08 13:26:05 by vom@testbed (ktext)" << std::endl; | ||||
120 | std::cout << std::endl; | ||||
121 | std::cout << " Clean-up of persisted data on disk has been added" << std::endl; | ||||
122 | std::cout << std::endl; | ||||
123 | std::cout << "... #3 change 5 edit on 2012/12/28 13:04:16 by vom@testbed (ktext)" << std::endl; | ||||
124 | std::cout << std::endl; | ||||
125 | std::cout << " Support for multiple things added." << std::endl; | ||||
126 | std::cout << std::endl; | ||||
127 | std::cout << "... #2 change 6 edit on 2012/12/04 14:05:10 by mvo@testbed (ktext)" << std::endl; | ||||
128 | std::cout << std::endl; | ||||
129 | std::cout << " Make Other test compile with new test class" << std::endl; | ||||
130 | std::cout << std::endl; | ||||
131 | std::cout << "... #1 change 1 add on 2012/12/04 13:48:25 by mvo@testbed (ktext)" << std::endl; | ||||
132 | std::cout << std::endl; | ||||
133 | std::cout << " Add RingBuffer" << std::endl; | ||||
134 | std::cout << std::endl; | ||||
135 | return 0; | ||||
136 | } | ||||
137 | | ||||
138 | int fakeAnnotateOutput() | ||||
139 | { | ||||
140 | std::cout << "1: #include \\\"RingBuffer.h\\\"" << std::endl; | ||||
141 | std::cout << "1: #include \\\"inc/test/someClass.h\\\"" << std::endl; | ||||
142 | std::cout << "1: //#include \\\"hejsa.h\\\"" << std::endl; | ||||
143 | std::cout << "1: " << std::endl; | ||||
144 | std::cout << "1: #include <iostream>" << std::endl; | ||||
145 | std::cout << "1: " << std::endl; | ||||
146 | std::cout << "1: #include <vector>" << std::endl; | ||||
147 | std::cout << "1: #include <algorithm>" << std::endl; | ||||
148 | std::cout << "1: " << std::endl; | ||||
149 | std::cout << "1: #include <limits>" << std::endl; | ||||
150 | std::cout << "1: " << std::endl; | ||||
151 | std::cout << "1: #include <cstdlib>" << std::endl; | ||||
152 | std::cout << "1: #include <ctime>" << std::endl; | ||||
153 | std::cout << "1: " << std::endl; | ||||
154 | std::cout << "1: " << std::endl; | ||||
155 | std::cout << "5: void fillBuffer( RingBuffer& myBuffer, std::vector<uint64_t>& testVector )" << std::endl; | ||||
156 | std::cout << "1: {" << std::endl; | ||||
157 | std::cout << "1: uint64_t random_range( std::numeric_limits<unsigned long>::max() );" << std::endl; | ||||
158 | std::cout << "12: uint64_t random_number ( 0 );" << std::endl; | ||||
159 | std::cout << "79: /// First fill the buffer" << std::endl; | ||||
160 | std::cout << "1: for ( size_t i =0; i < RINGBUFFER_SIZE; ++i )" << std::endl; | ||||
161 | std::cout << "1: {" << std::endl; | ||||
162 | std::cout << "5: random_number = std::rand() % random_range;" << std::endl; | ||||
163 | std::cout << "5: myBuffer.push_back ( random_number );" << std::endl; | ||||
164 | std::cout << "5: testVector.push_back ( random_number );" << std::endl; | ||||
165 | std::cout << "6: }" << std::endl; | ||||
166 | std::cout << "76: }" << std::endl; | ||||
167 | std::cout << "76: " << std::endl; | ||||
168 | std::cout << "17: void testWithOnlyknown( RingBuffer& myBuffer, std::vector<uint64_t>& testVector )" << std::endl; | ||||
169 | std::cout << "17: {" << std::endl; | ||||
170 | std::cout << "17: uint64_t random_range ( RINGBUFFER_SIZE );" << std::endl; | ||||
171 | std::cout << "97: uint64_t random_number ( 0 );" << std::endl; | ||||
172 | std::cout << "12: /// Perform the test run on values we have already inserted." << std::endl; | ||||
173 | std::cout << "1: for ( size_t j =0; j < 1000000; ++j )" << std::endl; | ||||
174 | std::cout << "1: {" << std::endl; | ||||
175 | std::cout << "1: random_number = std::rand() % random_range;" << std::endl; | ||||
176 | std::cout << "1: myBuffer.push_back ( testVector[random_number] );" << std::endl; | ||||
177 | std::cout << "1: }" << std::endl; | ||||
178 | std::cout << "67: " << std::endl; | ||||
179 | std::cout << "67: }" << std::endl; | ||||
180 | std::cout << "67: " << std::endl; | ||||
181 | std::cout << "60: int main( int argc, char **argv )" << std::endl; | ||||
182 | std::cout << "60: {" << std::endl; | ||||
183 | std::cout << "27: RingBuffer myBuffer;" << std::endl; | ||||
184 | std::cout << "1: std::vector<uint64_t> testVector;" << std::endl; | ||||
185 | std::cout << "1: " << std::endl; | ||||
186 | std::cout << "1: std::srand( std::time ( 0 ) );" << std::endl; | ||||
187 | std::cout << "1: " << std::endl; | ||||
188 | std::cout << "1: fillBuffer( myBuffer, testVector );" << std::endl; | ||||
189 | std::cout << "27: testWithOnlyknown( myBuffer, testVector );" << std::endl; | ||||
190 | std::cout << "27: " << std::endl; | ||||
191 | std::cout << "27: std::cout << \\\"Done Testing\\\" << std::endl;" << std::endl; | ||||
192 | std::cout << "1: " << std::endl; | ||||
193 | std::cout << "1: return 0;" << std::endl; | ||||
194 | std::cout << "1: }" << std::endl; | ||||
195 | return 0; | ||||
196 | } | ||||
197 | | ||||
198 | int fakeEditOutput(QString const& filepath) | ||||
199 | { | ||||
200 | QByteArray tmp = filepath.toUtf8(); | ||||
201 | std::string fileText(tmp.constData(), tmp.size()); | ||||
202 | std::cout << fileText << "#1 - opened for edit" << std::endl; | ||||
203 | return 0; | ||||
204 | } | ||||
205 | | ||||
206 | int fakeAddOutput(QString const& filepath) | ||||
207 | { | ||||
208 | QByteArray tmp = filepath.toUtf8(); | ||||
209 | std::string fileText(tmp.constData(), tmp.size()); | ||||
210 | std::cout << fileText << "#1 - opened for add" << std::endl; | ||||
211 | return 0; | ||||
212 | } | ||||
213 | | ||||
214 | int main(int argc, char** argv) | ||||
215 | { | ||||
216 | if (!validateNumberOfArguments(argc, argv)) { | ||||
217 | std::cout << "Was not able to validate number of arguments: " << argc << std::endl; | ||||
218 | return -1; | ||||
219 | } | ||||
220 | | ||||
221 | if (qstrcmp(argv[1], "revert") == 0) { | ||||
222 | return fakeRevertOutput(); | ||||
223 | } else if (qstrcmp(argv[1], "sync") == 0) { | ||||
224 | return fakeSyncOutput(); | ||||
225 | } else if (qstrcmp(argv[1], "submit") == 0) { | ||||
226 | return fakeSubmitOutput(); | ||||
227 | } else if (qstrcmp(argv[1], "diff2") == 0) { | ||||
228 | return fakeDiff2Output(); | ||||
229 | } else if (qstrcmp(argv[1], "diff") == 0) { | ||||
230 | return fakeDiffOutput(); | ||||
231 | } else if (qstrcmp(argv[1], "filelog") == 0) { | ||||
232 | return fakeFileLogOutput(argv[3]); | ||||
233 | } else if (qstrcmp(argv[1], "annotate") == 0) { | ||||
234 | return fakeAnnotateOutput(); | ||||
235 | } else if (qstrcmp(argv[1], "edit") == 0) { | ||||
236 | return fakeEditOutput(QString(argv[2])); | ||||
237 | } else if (qstrcmp(argv[1], "fstat") == 0) { | ||||
238 | return fakeFstatOutput(QString(argv[2])); | ||||
239 | } else if (qstrcmp(argv[1], "add") == 0) { | ||||
240 | return fakeAddOutput(QString(argv[2])); | ||||
241 | } | ||||
242 | return -1; | ||||
243 | } |