void TestMapSettingsManager::testMapMetaSaveLoad()
{
	Settings conf;
	std::string path = getTestTempDirectory()
		+ DIR_DELIM + "foobar" + DIR_DELIM + "map_meta.txt";

	// Create a set of mapgen params and save them to map meta
	conf.set("seed", "12345");
	conf.set("water_level", "5");
	MapSettingsManager mgr1(&conf, path);
	MapgenParams *params1 = mgr1.makeMapgenParams();
	UASSERT(params1);
	UASSERT(mgr1.saveMapMeta());

	// Now try loading the map meta to mapgen params
	conf.set("seed", "67890");
	conf.set("water_level", "32");
	MapSettingsManager mgr2(&conf, path);
	UASSERT(mgr2.loadMapMeta());
	MapgenParams *params2 = mgr2.makeMapgenParams();
	UASSERT(params2);

	// Check that both results are correct
	UASSERTEQ(u64, params1->seed, 12345);
	UASSERTEQ(s16, params1->water_level, 5);
	UASSERTEQ(u64, params2->seed, 12345);
	UASSERTEQ(s16, params2->water_level, 5);
}
void TestMapSettingsManager::testMapMetaFailures()
{
	std::string test_mapmeta_path;
	Settings conf;

	// Check to see if it'll fail on a non-existent map meta file
	test_mapmeta_path = "woobawooba/fgdfg/map_meta.txt";
	UASSERT(!fs::PathExists(test_mapmeta_path));

	MapSettingsManager mgr1(&conf, test_mapmeta_path);
	UASSERT(!mgr1.loadMapMeta());

	// Check to see if it'll fail on a corrupt map meta file
	test_mapmeta_path = makeMetaFile(true);
	UASSERT(fs::PathExists(test_mapmeta_path));

	MapSettingsManager mgr2(&conf, test_mapmeta_path);
	UASSERT(!mgr2.loadMapMeta());
}
    /*!
     * @brief add_members() and remove_member()
     */
    void test_add_remove_members() {
//      std::cout << "test_add_remove_members IN" << std::endl;
      CORBA::Boolean ret;
      SDOPackage::SDO_var sdo;
      SDOPackage::SDOList slist;
      SDOPackage::SDOList* rslist;
      Organization_impl* m_pOi2;
      std::string str;
      CORBA::Any any;

      RTC::RTObject_impl* rtobj2;
      RTC::Manager& mgr2(RTC::Manager::instance());
      mgr2.activateManager();
      rtobj2 = new ::RTC::RTObject_impl(&mgr2);
      m_pOi2 = new Organization_impl(rtobj2->getObjRef());

      // SDO のセット時、InvalidParameter を取得できるか?
      // add_members()に、NULL や 空のリストを渡してもlength()=0となるため
      // InvalidParameterを返すケースはない。
      // SDOList のセット時、空のリストを渡して true を取得できるか?

      short sflg = -1;
      try {
	slist = NULL;
	ret = m_pOi->add_members(slist);
	CPPUNIT_ASSERT(ret);
	sflg = 0;
      }
      catch (InvalidParameter ip) {
        cout << "InvalidParameter exception." << endl;
        sflg = 1;
      }
      catch (NotAvailable na) {
        cout << "NotAvailable exception." << endl;
        sflg = 2;
      }
      catch (InternalError ip) {
        cout << "InternalError exception." << endl;
        sflg = 3;
      }
      catch (...) {
        cout << "othrer exception." << endl;
        sflg = 4;
      }
      CPPUNIT_ASSERT(sflg == 0);

      // SDOList のセット時、リストをセットして true を取得できるか?
      sflg = -1;
      try {
	sdo = SDOPackage::SDO::_duplicate(rtobj2->getObjRef());
	CORBA_SeqUtil::push_back(slist, sdo);
	rtobj2->setInstanceName("hoge1");

	// SDOメンバーの追加が成功するか?
	ret = m_pOi2->add_members(slist);
	CPPUNIT_ASSERT(ret);
	sflg = 0;

        str = m_pOi2->get_organization_id(); 
	any <<= str.c_str();
	ret = m_pOi2->set_organization_property_value("instance_name", any);
      }
      catch (InvalidParameter ip) {
        cout << "InvalidParameter exception." << endl;
        sflg = 1;
      }
      catch (NotAvailable na) {
        cout << "NotAvailable exception." << endl;
        sflg = 2;
      }
      catch (InternalError ip) {
        cout << "InternalError exception." << endl;
        sflg = 3;
      }
      catch (...) {
        cout << "othrer exception." << endl;
        sflg = 4;
      }
      CPPUNIT_ASSERT(sflg == 0);

      // 1件のSDOList取得が行えるか?
      rslist = m_pOi2->get_members();
      CPPUNIT_ASSERT(rslist->length() == 1);

      // SDOList削除時、引数未定義でInvalidParameterを取得できるか?
      sflg = -1;
      try {
	ret = m_pOi2->remove_member("");
	CPPUNIT_ASSERT(ret);
	sflg = 0;
      }
      catch (InvalidParameter ip) {
//        cout << "InvalidParameter exception." << endl;
        sflg = 1;
      }
      catch (NotAvailable na) {
        cout << "NotAvailable exception." << endl;
        sflg = 2;
      }
      catch (InternalError ip) {
        cout << "InternalError exception." << endl;
        sflg = 3;
      }
      catch (...) {
        cout << "othrer exception." << endl;
        sflg = 4;
      }
      CPPUNIT_ASSERT(sflg == 1);

      // SDOList削除時、引数不正でInvalidParameterを取得できるか?
      sflg = -1;
      try {
	ret = m_pOi2->remove_member("dummy");
	CPPUNIT_ASSERT(ret);
	sflg = 0;
      }
      catch (InvalidParameter ip) {
//        cout << "InvalidParameter exception." << endl;
        sflg = 1;
      }
      catch (NotAvailable na) {
        cout << "NotAvailable exception." << endl;
        sflg = 2;
      }
      catch (InternalError ip) {
        cout << "InternalError exception." << endl;
        sflg = 3;
      }
      catch (...) {
        cout << "othrer exception." << endl;
        sflg = 4;
      }
      CPPUNIT_ASSERT(sflg == 1);

      // SDOList削除時、正しい引数で削除できるか?
      sflg = -1;
      try {
	ret = m_pOi2->remove_member("hoge1");
	CPPUNIT_ASSERT(ret);
	sflg = 0;
      }
      catch (InvalidParameter ip) {
        cout << "InvalidParameter exception." << endl;
        sflg = 1;
      }
      catch (NotAvailable na) {
        cout << "NotAvailable exception." << endl;
        sflg = 2;
      }
      catch (InternalError ip) {
        cout << "InternalError exception." << endl;
        sflg = 3;
      }
      catch (...) {
        cout << "othrer exception." << endl;
        sflg = 4;
      }
      CPPUNIT_ASSERT(sflg == 0);

      // 0件のSDOList取得が行えるか?
      rslist = m_pOi2->get_members();
      CPPUNIT_ASSERT(rslist->length() == 0);

      if ( !CORBA::is_nil( mgr2.getPOA()) ) {
        if ( !CORBA::is_nil(mgr2.getPOAManager()) ) {
          mgr2.getPOAManager()->deactivate(false, true);
        }
      }
      rtobj2->_remove_ref();
      m_pOi2->_remove_ref();
//      std::cout << "test_add_remove_members OUT" << std::endl;
    }
    /*!
     * @brief set_members() and get_members()
     */
    void test_set_get_members() {
//      std::cout << "test_set_get_members IN" << std::endl;
      CORBA::Boolean ret;
      SDOPackage::SDO_var sdo;
      SDOPackage::SDOList slist;
      SDOPackage::SDOList* rslist;

      // SDO のセット時、InvalidParameter を取得できるか?
      // set_members()に、NULL や 空のリストを渡してもlength()=0となるため
      // InvalidParameterを返すケースはない。
      // SDOList のセット時、空のリストを渡して取得できるか?
      short sflg = -1;
      try {
	slist = NULL;
	ret = m_pOi->set_members(slist);
	CPPUNIT_ASSERT(ret);
	sflg = 0;
      }
      catch (InvalidParameter ip) {
        cout << "InvalidParameter exception." << endl;
        sflg = 1;
      }
      catch (NotAvailable na) {
        cout << "NotAvailable exception." << endl;
        sflg = 2;
      }
      catch (InternalError ip) {
        cout << "InternalError exception." << endl;
        sflg = 3;
      }
      catch (...) {
        cout << "othrer exception." << endl;
        sflg = 4;
      }
      CPPUNIT_ASSERT(sflg == 0);

      // 0件のSDOList取得が行えるか?
      rslist = m_pOi->get_members();
      CPPUNIT_ASSERT(rslist->length() == 0);


      // SDOList のセット時、リストをセットして true を取得できるか?
      sflg = -1;
      try {
	RTC::RTObject_impl* rtobj2;
	RTC::Manager& mgr2(RTC::Manager::instance());
	rtobj2 = new ::RTC::RTObject_impl(&mgr2);
	sdo = SDOPackage::SDO::_duplicate(rtobj2->getObjRef());
	CORBA_SeqUtil::push_back(slist, sdo);
	ret = m_pOi->set_members(slist);
	CPPUNIT_ASSERT(ret);
	sflg = 0;
        rtobj2->_remove_ref();
      }
      catch (InvalidParameter ip) {
        cout << "InvalidParameter exception." << endl;
        sflg = 1;
      }
      catch (NotAvailable na) {
        cout << "NotAvailable exception." << endl;
        sflg = 2;
      }
      catch (InternalError ip) {
        cout << "InternalError exception." << endl;
        sflg = 3;
      }
      catch (...) {
        cout << "othrer exception." << endl;
        sflg = 4;
      }
      CPPUNIT_ASSERT(sflg == 0);

      // 1件のSDOList取得が行えるか?
      rslist = m_pOi->get_members();
      CPPUNIT_ASSERT(rslist->length() == 1);
//      std::cout << "test_set_get_members OUT" << std::endl;
    }
    /*!
     * @brief set_owner() and get_owner()
     */
    void test_set_get_owner() {
//      std::cout << "test_set_get_owner IN" << std::endl;
      CORBA::Boolean ret;
      SDOPackage::SDOSystemElement_var varOwner;
      SDOPackage::SDOSystemElement_ptr ptrOwner;

      try {
	// オーナー取得が行えるか?
	varOwner = m_pOi->get_owner();
	CPPUNIT_ASSERT(!::CORBA::is_nil(varOwner));

	// InvalidParameter exceptionを確認
	short sflg = -1;
	try {
	  // オーナー設定時、InvalidParameter が返されるか?
	  ptrOwner = SDOPackage::SDOSystemElement::_nil();
	  ret = m_pOi->set_owner(ptrOwner);
	  CPPUNIT_ASSERT(ret);
	  sflg = 0;
	}
	catch (InvalidParameter ip) {
//	  cout << "InvalidParameter exception." << endl;
	  sflg = 1;
	}
	catch (NotAvailable na) {
	  cout << "NotAvailable exception." << endl;
	  sflg = 2;
	}
	catch (InternalError ip) {
	  cout << "InternalError exception." << endl;
	  sflg = 3;
	}
	catch (...) {
	  cout << "othrer exception." << endl;
	  sflg = 4;
	}
	CPPUNIT_ASSERT(sflg == 1);

	// 戻り値:true を確認
	sflg = -1;
	try {
	  // オーナー設定時、true が返されるか?
	  ::RTC::RTObject_impl* rtobj2;
	  ::RTC::Manager& mgr2(RTC::Manager::instance());
	  rtobj2 = new ::RTC::RTObject_impl(&mgr2);
	  ptrOwner = rtobj2->getObjRef();

	  ret = m_pOi->set_owner(ptrOwner);
	  CPPUNIT_ASSERT(ret);
	  sflg = 0;
          rtobj2->_remove_ref();
	}
	catch (InvalidParameter ip) {
	  cout << "InvalidParameter exception." << endl;
	  sflg = 1;
	}
	catch (NotAvailable na) {
	  cout << "NotAvailable exception." << endl;
	  sflg = 2;
	}
	catch (InternalError ip) {
	  cout << "InternalError exception." << endl;
	  sflg = 3;
	}
	catch (...) {
	  cout << "othrer exception." << endl;
	  sflg = 4;
	}
	CPPUNIT_ASSERT(sflg == 0);
      }
      catch (InvalidParameter ip) {
	cout << "InvalidParameter exception." << endl;
      }
      catch (NotAvailable na) {
	cout << "NotAvailable exception." << endl;
      }
      catch (InternalError ip) {
	cout << "InternalError exception." << endl;
      }
      catch (...) {
	cout << "othrer exception." << endl;
      }
//      std::cout << "test_set_get_owner OUT" << std::endl;
    }
Exemple #6
0
int main(int argc, char** argv)
{
  int i;
  char c;
  int verb=0;
  int startValue=63130;
  int nentries=100;
  while( (c=getopt(argc, argv, "vs:n:")) != -1 )
    switch(c) {
    case 's':
      startValue=atoi(optarg);
      break;
    case 'n':
      nentries=atoi(optarg);
      break;
    case 'v':
      verb=1;
      break;
    default:
      usage();
    }
  if(optind==argc)
    usage();
  string rootDBFileName = argv[optind];
  
  H4DBManager mgr(false, rootDBFileName.c_str());
  
  H4Run* runEntry=(H4Run*)mgr.getEntry("H4Run", startValue);
  if(!runEntry) {
    std::cout << "testAsciiDB: wrong start value val="
	 << startValue << std::endl;
    usage();
  }
  
  // loop over a few runs and dumps them into an ASCII file
  ofstream ofs("rootdbDump.txt");
  ofs << "class H4Run" << std::endl;
  for(i=0;i<nentries;i++) {
    int n = mgr.update(startValue+i, H4DBEntry::NoSuchSubindex, runEntry);
    if(n<1) continue;
    if(n>1) continue; // we don't care (but we certainly should)
    runEntry->dumpToAsciiFile(ofs);
  }
  ofs.close();
  if(verb) 
    std::cout << "testAsciiDB: dumped " << nentries << " events," << std::endl
	 << "             starting from evt# "
	 << startValue << " into file rootdbDump.txt" << std::endl;
  
  if(verb)
    std::cout << "testAsciiDB: now attempting to reread the ASCII file...";
  
  // Now, we want to re-read the ASCII file with a new H4DBManager
  // in write mode ... 
  H4DBManager* mgr_tmp = new H4DBManager;
  mgr_tmp->openDB(true, "rootdbDump.root");
  mgr_tmp->readAsciiFile("rootdbDump.txt");
  delete mgr_tmp;
  if(verb)
    std::cout << "testAsciiDB: done." << std::endl;
  
  if(verb)
    std::cout << "testAsciiDB: checking that no information was lost during the operation..."
	 << std::endl;
  
  H4DBManager mgr2(false, "rootdbDump.root");
  H4Run* runEntry2=(H4Run*)mgr2.getEntry("H4Run", startValue);
  if(!runEntry2) {
    std::cout << "testAsciiDB: unable to reread root database created from Ascii file" << std::endl;
    exit(-2);
  }
  
  for(i=0;i<nentries;i++) {
    int index = i+startValue;
    int n  = mgr.update(index, H4DBEntry::NoSuchSubindex, runEntry);
    int n2 = mgr2.update(index, H4DBEntry::NoSuchSubindex, runEntry2);
    
    if(n != n2) {
      std::cout << "testAsciiDB: ERROR rereading db, index=" << index
	   << " n,n2=" << n << "," << n2 << std::endl;
      continue;
    }
    
    if(runEntry->getRunNumber() != runEntry2->getRunNumber() ) {
      std::cout << "testAsciiDB: ERROR rereading db, index=" << index
	   << " runNumbers 1,2=" << runEntry->getRunNumber() 
	   << ", " << runEntry2->getRunNumber() << std::endl;
      continue;
    }
    
    if(runEntry->getSubRun() != runEntry2->getSubRun() ) {
      std::cout << "testAsciiDB: ERROR rereading db, index=" << index
	   << " subRuns 1,2=" << runEntry->getSubRun() 
	   << ", " << runEntry2->getSubRun() << std::endl;
      continue;
    }
    
    if(runEntry->getStartTime() != runEntry2->getStartTime() ) {
      std::cout << "testAsciiDB: ERROR rereading db, index=" << index
	   << " startTime 1,2=" << runEntry->getStartTime() 
	   << ", " << runEntry2->getStartTime() << std::endl;
      continue;
    }

    if(runEntry->getStopTime() != runEntry2->getStopTime() ) {
      std::cout << "testAsciiDB: ERROR rereading db, index=" << index
	   << " startTime 1,2=" << runEntry->getStopTime() 
	   << ", " << runEntry2->getStopTime() << std::endl;
      continue;
    }
    
    if(verb) {
      runEntry->print();
      runEntry2->print();
    }
  }
  
  if(verb)
    std::cout << "OK!" << std::endl;
}
Exemple #7
0
void CEZX::get_wallpaper(char* ret) {
	QString wall;
	SETUP_SET_Manager mgr2(FILE_THEME_CFG, false);
	mgr2.getSettingInfo("THEME_CONFIG_TABLE", "WallPaper", wall, "", true);
	sprintf(ret, "%s", (const char*)wall);
}