PhoenixInkscape  2.0.0
Generate multiple png files with svg inkscape files
main.cpp
Go to the documentation of this file.
1 
2 /***************************************
3  Auteur : Pierre Aubert
4  Mail : pierre.aubert@lapp.in2p3.fr
5  Licence : CeCILL-C
6 ****************************************/
7 
8 #include <map>
9 #include <iostream>
10 #include "phoenix_assert.h"
11 #include "phoenix_check.h"
12 #include "PString.h"
13 #include "phoenix_system.h"
14 
16 
19 void fillMapString(std::map<PString, bool> & mapStr, const PVecString & listStr){
20  for(PVecString::const_iterator it(listStr.begin()); it != listStr.end(); ++it){
21  mapStr[*it] = true;
22  }
23 }
24 
26 
31 bool checkResultSeparator(const PString & resultCmd, const PString & expectedResult, char separator){
32  PVecString listRes = resultCmd.split(separator);
33  PVecString listExpectedRes = expectedResult.split(separator);
34 
35  std::map<PString, bool> mapExpectedRes;
36  fillMapString(mapExpectedRes, listExpectedRes);
37 
38  bool b(true);
39  for(PVecString::const_iterator it(listRes.begin()); it != listRes.end(); ++it){
40  b &= mapExpectedRes.find(*it) != mapExpectedRes.end();
41  }
42 
43  return b;
44 }
45 
47 
51 bool checkResult(const PString & resultCmd, const PString & expectedResult){
52  if(!checkResultSeparator(resultCmd, expectedResult, ' ')){
53  if(!checkResultSeparator(resultCmd, expectedResult, '\n')){
54  return false;
55  }
56  }
57  return true;
58 }
59 
61 
68 bool checkOptionCompletion(const PString & program, const PString & partialOption,
69  const PString & prevCursorOption, const PString & cursorOption, const PString & expectedResult)
70 {
71  PString command(program + " __bashcompletionmode=\""+cursorOption+"\" __bashcompletionmodeprev=\""+prevCursorOption+"\" prgName " + partialOption);
72  PString resultCmd(phoenix_popen(command));
73 // std::cout << "checkOptionCompletion : command '"<<command<<"':\n\tresult = '"<<resultCmd<<"', expectedResult = '"<<expectedResult<<"'" << std::endl;
74 
75  bool b(checkResult(resultCmd, expectedResult));
76  return b;
77 }
78 
81  phoenix_assert(checkOptionCompletion(PROGRAM_OPTION_COMPLETION_MODE, "", "", "", "class source --help -h --version -v \n"));
82  phoenix_assert(checkOptionCompletion(PROGRAM_OPTION_COMPLETION_MODE, "class", "class", "", "--name -n --template -t --config -c --help -h --version -v \n"));
83  phoenix_assert(checkOptionCompletion(PROGRAM_OPTION_COMPLETION_MODE, "class", "class", "-", "--name -n --template -t --config -c --help -h --version -v \n"));
84  phoenix_assert(checkOptionCompletion(PROGRAM_OPTION_COMPLETION_MODE, "class", "class", "--", "--name --template --config --help --version \n"));
85  phoenix_assert(checkOptionCompletion(PROGRAM_OPTION_COMPLETION_MODE, "class", "class", "--n", "--name \n"));
86  phoenix_assert(checkOptionCompletion(PROGRAM_OPTION_COMPLETION_MODE, "class --name=test --", "--name=test", "--", "--template --config --help --version \n"));
87  phoenix_assert(checkOptionCompletion(PROGRAM_OPTION_COMPLETION_MODE, "class --name=\"test\" --", "--name=\"test\"", "--", "--template --config --help --version \n"));
88  phoenix_assert(checkOptionCompletion(PROGRAM_OPTION_COMPLETION_MODE, "class -n \"test\" --", "\"test\"", "--", "--template --config --help --version \n"));
89  phoenix_assert(checkOptionCompletion(PROGRAM_OPTION_COMPLETION_MODE, "source", "source", "", "--name -n --help -h --version -v \n"));
90  phoenix_assert(checkOptionCompletion(PROGRAM_OPTION_COMPLETION_MODE, "class --config ", "--config", "", "./\n"));
91  phoenix_assert(checkOptionCompletion(PROGRAM_OPTION_COMPLETION_MODE, "class --config " DIR_COMPLETION, "--config", DIR_COMPLETION, DIR_COMPLETION "/0-someDir\n" DIR_COMPLETION "/1-someFile.txt\n\n"));
92  phoenix_assert(checkOptionCompletion(PROGRAM_OPTION_COMPLETION_MODE, "class --config " DIR_COMPLETION "/0-someDir", "--config", DIR_COMPLETION "/0-someDir", DIR_COMPLETION "/0-someDir/someFile.txt\n\n"));
93  phoenix_assert(checkOptionCompletion(PROGRAM_OPTION_COMPLETION_MODE, "class --config " DIR_COMPLETION "/0-someDir/someFile.txt", "--config", DIR_COMPLETION "/0-someDir/someFile.txt", "\n"));
94  phoenix_assert(checkOptionCompletion(PROGRAM_OPTION_COMPLETION_MODE, "class --config " DIR_COMPLETION "/0-someDir/some", "--config", DIR_COMPLETION "/0-someDir/some", DIR_COMPLETION "/0-someDir/someFile.txt\n\n"));
95  phoenix_assert(checkOptionCompletion(PROGRAM_OPTION_COMPLETION_MODE_DIR, "class --dir " DIR_COMPLETION "/0-some", "--dir", DIR_COMPLETION "/0-some", DIR_COMPLETION "/0-someDir\n\n"));
96  phoenix_assert(checkOptionCompletion(PROGRAM_OPTION_COMPLETION_MODE_DIR, "class --dir " DIR_COMPLETION, "--dir", DIR_COMPLETION, DIR_COMPLETION "/0-someDir\n\n"));
97 }
98 
99 int main(int argc, char** argv){
100  testCompletion();
101  return 0;
102 }
103 
104 
std::vector< PString > PVecString
Definition: PString.h:96
Extends the std::string.
Definition: PString.h:16
std::vector< PString > split(char separator) const
Cut a PString on the given separator char.
Definition: PString.cpp:420
#define phoenix_assert(isOk)
PString phoenix_popen(const PString &command)
Execute the given command and returns the output of this command.
int main(int argc, char **argv)
Definition: main.cpp:290
bool checkOptionCompletion(const PString &program, const PString &partialOption, const PString &prevCursorOption, const PString &cursorOption, const PString &expectedResult)
Check the option completion of a program.
Definition: main.cpp:21
void testCompletion()
Test the completion of the option.
Definition: main.cpp:32
void fillMapString(std::map< PString, bool > &mapStr, const PVecString &listStr)
Create a map with a string.
Definition: main.cpp:19
bool checkResult(const PString &resultCmd, const PString &expectedResult)
Check the restut.
Definition: main.cpp:51
bool checkResultSeparator(const PString &resultCmd, const PString &expectedResult, char separator)
Check the restut.
Definition: main.cpp:31