File indexing completed on 2024-05-19 15:46:09

0001 /*
0002     SPDX-FileCopyrightText: 2013 Morten Danielsen Volden <mvolden2@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include <iostream>
0008 #include <QString>
0009 #include <QByteArray>
0010 
0011 bool validateNumberOfArguments(int argc, char** /*argv*/)
0012 {
0013     if (argc < 3) {
0014         return false;
0015     }
0016 
0017     return true;
0018 }
0019 
0020 
0021 int fakeFstatOutput(QString const& filepath)
0022 {
0023     QByteArray tmp = filepath.toUtf8();
0024     std::string fileText(tmp.constData(), tmp.size());
0025     std::cout << "... depotFile /" << fileText << std::endl;// /tools/test/new_file.txt"
0026     std::cout << "... clientFile /home/projects" << fileText << std::endl;
0027     std::cout << "... isMapped" << std::endl;
0028     std::cout << "... headAction add" << std::endl;
0029     std::cout << "... headType text" << std::endl;
0030     std::cout << "... headTime 1285014691" << std::endl;
0031     std::cout << "... headRev 1" << std::endl;
0032     std::cout << "... headChange 759253" << std::endl;
0033     std::cout << "... headModTime 1285014680" << std::endl;
0034     std::cout << "... haveRev 1" << std::endl;
0035     return 0;
0036 }
0037 
0038 int fakeRevertOutput()
0039 {
0040     return 0;
0041 }
0042 
0043 int fakeSyncOutput()
0044 {
0045     return 0;
0046 }
0047 
0048 int fakeSubmitOutput()
0049 {
0050     return 0;
0051 }
0052 
0053 int fakeDiff2Output()
0054 {
0055     return 0;
0056 }
0057 
0058 int fakeDiffOutput()
0059 {
0060     return 0;
0061 }
0062 
0063 int fakeFileLogOutput(QString const& filepath)
0064 {
0065     QByteArray tmp = filepath.toUtf8();
0066     std::string fileText(tmp.constData(), tmp.size());
0067     std::cout << "//depot/" << fileText << std::endl;
0068     std::cout << "... #14 change 72 edit on 2013/02/04 15:38:35 by mvo@testbed (ktext)" << std::endl;
0069     std::cout << std::endl;
0070     std::cout << "  Log a little more out" << std::endl;
0071     std::cout << std::endl;
0072     std::cout << "... #13 change 67 edit on 2013/02/04 15:31:48 by mov@testbed (ktext)" << std::endl;
0073     std::cout << std::endl;
0074     std::cout << "  Rename rand -> random_number" << std::endl;
0075     std::cout << std::endl;
0076     std::cout << "... #12 change 79 edit on 2013/01/29 18:02:33 by mvo@testbed (ktext)" << std::endl;
0077     std::cout << std::endl;
0078     std::cout << "  Prefer the use of std::string" << std::endl;
0079     std::cout << std::endl;
0080     std::cout << "... #11 change 33 edit on 2013/01/29 15:48:41 by mvo@testbed (ktext)" << std::endl;
0081     std::cout << std::endl;
0082     std::cout << "  Correct Test Class to use QString" << std::endl;
0083     std::cout << std::endl;
0084     std::cout << "... #10 change 76 edit on 2013/01/28 19:21:33 by vom@testbed (ktext)" << std::endl;
0085     std::cout << std::endl;
0086     std::cout << "  Minor changes. Changed the log level of a couple of log lines." << std::endl;
0087     std::cout << std::endl;
0088     std::cout << "... #9 change 17 edit on 2013/01/22 15:41:16 by vom@testbed (ktext)" << std::endl;
0089     std::cout << std::endl;
0090     std::cout << "  Just added a comment" << std::endl;
0091     std::cout << std::endl;
0092     std::cout << "... #8 change 97 edit on 2013/01/17 13:54:26 by mvo@testbed (ktext)" << std::endl;
0093     std::cout << std::endl;
0094     std::cout << "  Do not cleanup before we are absolutely done" << std::endl;
0095     std::cout << std::endl;
0096     std::cout << "... #7 change 12 edit on 2013/01/17 11:39:25 by mvo@testbed (ktext)" << std::endl;
0097     std::cout << std::endl;
0098     std::cout << "  Insert a little debugging in the test class. Be more defensive when dealing with iterators" << std::endl;
0099     std::cout << std::endl;
0100     std::cout << "... #6 change 60 edit on 2013/01/09 13:19:07 by vom@testbed (ktext)" << std::endl;
0101     std::cout << std::endl;
0102     std::cout << "  error and abort handling added to RingBuffer." << std::endl;
0103     std::cout << std::endl;
0104     std::cout << "... #5 change 30 edit on 2013/01/08 19:21:42 by mvo@testbed (ktext)" << std::endl;
0105     std::cout << std::endl;
0106     std::cout << "  Fix two things in cleanup. Fix item on the todo list, cleanup a map" << std::endl;
0107     std::cout << std::endl;
0108     std::cout << "... #4 change 27 edit on 2013/01/08 13:26:05 by vom@testbed (ktext)" << std::endl;
0109     std::cout << std::endl;
0110     std::cout << "  Clean-up of persisted data on disk has been added" << std::endl;
0111     std::cout << std::endl;
0112     std::cout << "... #3 change 5 edit on 2012/12/28 13:04:16 by vom@testbed (ktext)" << std::endl;
0113     std::cout << std::endl;
0114     std::cout << "  Support for multiple things added." << std::endl;
0115     std::cout << std::endl;
0116     std::cout << "... #2 change 6 edit on 2012/12/04 14:05:10 by mvo@testbed (ktext)" << std::endl;
0117     std::cout << std::endl;
0118     std::cout << "  Make Other test compile with new test class" << std::endl;
0119     std::cout << std::endl;
0120     std::cout << "... #1 change 1 add on 2012/12/04 13:48:25 by mvo@testbed (ktext)" << std::endl;
0121     std::cout << std::endl;
0122     std::cout << "  Add RingBuffer" << std::endl;
0123     std::cout << std::endl;
0124     return 0;
0125 }
0126 
0127 int fakeAnnotateOutput()
0128 {
0129     std::cout << "1: #include \\\"RingBuffer.h\\\"" << std::endl;
0130     std::cout << "1: #include \\\"inc/test/someClass.h\\\"" << std::endl;
0131     std::cout << "1: //#include \\\"hejsa.h\\\"" << std::endl;
0132     std::cout << "1: " << std::endl;
0133     std::cout << "1: #include <iostream>" << std::endl;
0134     std::cout << "1: " << std::endl;
0135     std::cout << "1: #include <vector>" << std::endl;
0136     std::cout << "1: #include <algorithm>" << std::endl;
0137     std::cout << "1: " << std::endl;
0138     std::cout << "1: #include <limits>" << std::endl;
0139     std::cout << "1: " << std::endl;
0140     std::cout << "1: #include <cstdlib>" << std::endl;
0141     std::cout << "1: #include <ctime>" << std::endl;
0142     std::cout << "1: " << std::endl;
0143     std::cout << "1: " << std::endl;
0144     std::cout << "5: void fillBuffer( RingBuffer& myBuffer, std::vector<uint64_t>& testVector )" << std::endl;
0145     std::cout << "1: {" << std::endl;
0146     std::cout << "1:     uint64_t random_range( std::numeric_limits<unsigned long>::max() );" << std::endl;
0147     std::cout << "12:     uint64_t random_number ( 0 );" << std::endl;
0148     std::cout << "79:     /// First fill the buffer" << std::endl;
0149     std::cout << "1:     for ( size_t i =0; i < RINGBUFFER_SIZE; ++i )" << std::endl;
0150     std::cout << "1:     {" << std::endl;
0151     std::cout << "5:         random_number = std::rand() % random_range;" << std::endl;
0152     std::cout << "5:         myBuffer.push_back ( random_number );" << std::endl;
0153     std::cout << "5:         testVector.push_back ( random_number );" << std::endl;
0154     std::cout << "6:     }" << std::endl;
0155     std::cout << "76: }" << std::endl;
0156     std::cout << "76: " << std::endl;
0157     std::cout << "17: void testWithOnlyknown( RingBuffer& myBuffer, std::vector<uint64_t>& testVector )" << std::endl;
0158     std::cout << "17: {" << std::endl;
0159     std::cout << "17:     uint64_t random_range ( RINGBUFFER_SIZE );" << std::endl;
0160     std::cout << "97:     uint64_t random_number ( 0 );" << std::endl;
0161     std::cout << "12:     /// Perform the test run on values we have already inserted." << std::endl;
0162     std::cout << "1:     for ( size_t j =0; j < 1000000; ++j )" << std::endl;
0163     std::cout << "1:     {" << std::endl;
0164     std::cout << "1:         random_number = std::rand() % random_range;" << std::endl;
0165     std::cout << "1:         myBuffer.push_back ( testVector[random_number] );" << std::endl;
0166     std::cout << "1:     }" << std::endl;
0167     std::cout << "67: " << std::endl;
0168     std::cout << "67: }" << std::endl;
0169     std::cout << "67: " << std::endl;
0170     std::cout << "60: int main( int argc, char **argv )" << std::endl;
0171     std::cout << "60: {" << std::endl;
0172     std::cout << "27:     RingBuffer myBuffer;" << std::endl;
0173     std::cout << "1:     std::vector<uint64_t> testVector;" << std::endl;
0174     std::cout << "1: " << std::endl;
0175     std::cout << "1:     std::srand( std::time ( 0 ) );" << std::endl;
0176     std::cout << "1: " << std::endl;
0177     std::cout << "1:     fillBuffer( myBuffer, testVector );" << std::endl;
0178     std::cout << "27:     testWithOnlyknown( myBuffer, testVector );" << std::endl;
0179     std::cout << "27:   " << std::endl;
0180     std::cout << "27:     std::cout << \\\"Done Testing\\\" << std::endl;" << std::endl;
0181     std::cout << "1: " << std::endl;
0182     std::cout << "1:     return 0;" << std::endl;
0183     std::cout << "1: }" << std::endl;
0184     return 0;
0185 }
0186 
0187 int fakeEditOutput(QString const& filepath)
0188 {
0189     QByteArray tmp = filepath.toUtf8();
0190     std::string fileText(tmp.constData(), tmp.size());
0191     std::cout << fileText << "#1 - opened for edit" << std::endl;
0192     return 0;
0193 }
0194 
0195 int fakeAddOutput(QString const& filepath)
0196 {
0197     QByteArray tmp = filepath.toUtf8();
0198     std::string fileText(tmp.constData(), tmp.size());
0199     std::cout << fileText << "#1 - opened for add" << std::endl;
0200     return 0;
0201 }
0202 
0203 int main(int argc, char** argv)
0204 {
0205     if (!validateNumberOfArguments(argc, argv)) {
0206         std::cout << "Was not able to validate number of arguments: " << argc << std::endl;
0207         return -1;
0208     }
0209 
0210     if (qstrcmp(argv[1], "revert") == 0)  {
0211         return fakeRevertOutput();
0212     } else if (qstrcmp(argv[1], "sync") == 0) {
0213         return fakeSyncOutput();
0214     } else if (qstrcmp(argv[1], "submit") == 0) {
0215         return fakeSubmitOutput();
0216     } else if (qstrcmp(argv[1], "diff2") == 0) {
0217         return fakeDiff2Output();
0218     } else if (qstrcmp(argv[1], "diff") == 0) {
0219         return fakeDiffOutput();
0220     } else if (qstrcmp(argv[1], "filelog") == 0) {
0221         return fakeFileLogOutput(QString::fromUtf8(argv[3]));
0222     } else if (qstrcmp(argv[1], "annotate") == 0) {
0223         return fakeAnnotateOutput();
0224     } else if (qstrcmp(argv[1], "edit") == 0) {
0225         return fakeEditOutput(QString::fromUtf8(argv[2]));
0226     } else if (qstrcmp(argv[1], "fstat") == 0) {
0227         return fakeFstatOutput(QString::fromUtf8(argv[2]));
0228     } else if (qstrcmp(argv[1], "add") == 0) {
0229         return fakeAddOutput(QString::fromUtf8(argv[2]));
0230     }
0231     return -1;
0232 }