// Command-line options overriding file options TEST(param,CmdlineOverride) { //create a file name std::string pfilename(alps::testing::temporary_filename("pfile.ini.")); // Generate INI file { std::ofstream pfile(pfilename.c_str()); pfile << "param1 = 111\n" "param2 = 222\n"; } // Imitate the command line args const char* argv[]={"THIS_PROGRAM", // argv[0] pfilename.c_str(), // filename is the 1st argument "--param1=999", // override param1 "--param3=333", // one more parameter "--trigger_opt" }; // a trigger option const int argc=sizeof(argv)/sizeof(*argv); alps::params p(argc, argv); p. define<int>("param1","Parameter 1"). define<int>("param2","Parameter 2"). define<int>("param3","Parameter 3"). define("trigger_opt","Trigger param"); EXPECT_EQ(999,p["param1"]); EXPECT_EQ(222,p["param2"]); EXPECT_EQ(333,p["param3"]); EXPECT_TRUE(bool(p["trigger_opt"])); }
bool MidPlayer::load_sierra_ins(const std::string& fname) { boost::filesystem::path pfilename(fname); auto basename = pfilename.stem().string().substr(0, 3); pfilename.remove_filename() /= basename + "patch.003"; FileStream f(pfilename.string()); if(!f) return false; f.seekrel(2); m_stins = 0; for(int i = 0; i < 2; i++) { for(int k = 0; k < 48; k++) { int l = i * 48 + k; logger->trace(L4CXX_LOCATION, "%2d: ", l); unsigned char ins[28]; f.read(ins, 28); m_myInsBank[l][0] = (ins[9] * 0x80) + (ins[10] * 0x40) + (ins[5] * 0x20) + (ins[11] * 0x10) + ins[1]; //1=ins5 m_myInsBank[l][1] = (ins[22] * 0x80) + (ins[23] * 0x40) + (ins[18] * 0x20) + (ins[24] * 0x10) + ins[14]; //1=ins18 m_myInsBank[l][2] = (ins[0] << 6) + ins[8]; m_myInsBank[l][3] = (ins[13] << 6) + ins[21]; m_myInsBank[l][4] = (ins[3] << 4) + ins[6]; m_myInsBank[l][5] = (ins[16] << 4) + ins[19]; m_myInsBank[l][6] = (ins[4] << 4) + ins[7]; m_myInsBank[l][7] = (ins[17] << 4) + ins[20]; m_myInsBank[l][8] = ins[26]; m_myInsBank[l][9] = ins[27]; m_myInsBank[l][10] = ((ins[2] << 1)) + (1 - (ins[12] & 1)); //(ins[12] ? 0:1)+((ins[2]<<1)); for(auto j = 0; j < 11; j++) logger->trace(L4CXX_LOCATION, "%02X ", int(m_myInsBank[l][j])); m_stins++; } f.seekrel(2); } m_sMyInsBank = m_myInsBank; return true; }
alps::params get_file_param(const std::string& name1, const std::string& name2, T val1, T val2) { //create a file name std::string pfilename(alps::temporary_filename("pfile")+".ini"); // Generate INI file { std::ofstream pfile(pfilename.c_str()); pfile << name1 << " = " << val1 << "\n" << name2 << " = " << val2 << "\n"; } const char* argv[] = { "this program", pfilename.c_str() }; const int argc=sizeof(argv)/sizeof(*argv); return alps::params(argc,argv); }
// Repeated parameters in the INI file TEST(param,RepeatingInFile) { //create a file name std::string pfilename(alps::testing::temporary_filename("pfile.ini.")); // Generate INI file { std::ofstream pfile(pfilename.c_str()); pfile << "parname = 1\n" "parname = 2\n"; } // Imitate the command line args const char* argv[]={"THIS_PROGRAM", pfilename.c_str()}; const int argc=sizeof(argv)/sizeof(*argv); //define the parameters alps::params p(argc,argv); p.description("This is a test program"). define<int>("parname","repeated parameter"); EXPECT_THROW(p["parname"],boost::program_options::multiple_occurrences); }