///Create a test harness that runs tests matching the substrings ///passed on the command line. argc and argv are interpreted as if ///they were the arguments to main. If no substrings are given ///(that is, no arguments are passed), all tests are run, as if one ///argument of an empty string had been given. GTestHarness(int argc, char**argv) { //Make list of test names to match if(argc < 2){ m_testNameSubstr.push_back(""); }else{ for(int i = 1; i < argc; ++i){ m_testNameSubstr.push_back(argv[i]); } } //Ready performance stats char buf[256]; if(GApp::appPath(buf, 256, true) == -1) throw Ex("Failed to retrieve app path"); if(chdir(buf) != 0) throw Ex("Failed to change the dir to the app folder"); m_testTimes.flags(std::ios::showpoint | std::ios::skipws | std::ios::dec | std::ios::fixed | std::ios::left); m_testTimes.width(PERF_FILE_CHARS); m_testTimes.precision(PERF_FILE_CHARS - 3); string s; GTime::appendTimeStampValue(&s, "-", " ", ":", false); m_testTimes << s; }
throw std::invalid_argument(Exception(String("joint waypoint text file must contain at least 2 'waypoint' vectors"))); init(qs,times,deltas); } else { // output std::ostringstream out; // comment header out << "# Joint waypoint trajectory [joint positions & times (at-end)]" << std::endl; out << "# the following line should be 'absolute' for absolute qi's & t values or 'relative' if the vectors represent inter-waypoint deltas dqi's & dt" << std::endl; out << "absolute" << std::endl; // not "relative" out << "# q0 q1 ... qn t" << std::endl; std::ostream::fmtflags savedFlags = out.setf(std::ios_base::dec | std::ios_base::right); Int savedPrec = out.precision(10); Int savedWidth = out.width(13); const Int dof=qs[0].size(); // this is a hack, as under gcc the flags don't appear to stay set after an output op (!?) #define setflags \ out.setf(std::ios_base::dec | std::ios_base::right); \ out.precision(10); \ out.width(13); setflags; for(Int i=0; i<qs.size(); i++) { Vector q(qs[i]); Time t(times[i]); for(Int e=0; e<dof; e++) out << q[e] << " "; setflags;