Пример #1
0
/* Finds the median-of-five in the array spanning **left to **right
 * and puts the value in *pivot_ptr.
 */
static yes_no find_pivot_5(char **left, char **right, char **pivot_ptr)
{
  char **p;
  int step = (right - left) / 4;
  char *a = *left;
  char *b = *(left + step);
  char *c = *(left + step + step);
  char *d = *(left + step + step + step);
  char *e = *right;

  o5(a, b, c, d, e);

  if (strcmp(a, c) == -1) {
    *pivot_ptr = c;
    return yes;
  }
  if (strcmp(c, d) == -1) {
    *pivot_ptr = d;
    return yes;
  }
  if (strcmp(d, e) == -1) {
    *pivot_ptr = e;
    return yes;
  }
  for (p = left + 1; p <= right; ++p) {
    if (strcmp(*p, *left) != 0) {
        *pivot_ptr = (strcmp(*p, *left) == -1) ? *left : *p;
      return yes;
    }
  }
  return no;
}
Пример #2
0
TEST(CacheTest, GetSet) {
	order_id_t o1(true);
	order_id_t o2(true);
	order_id_t o3(true);
	OrderInfo_ptr oi1 = boost::make_shared<OrderInfo>();
	mc.add(o1,oi1);
	mc.add(o2,oi1);
	mc.add(o3,oi1);

	// check get(...) method
	std::cerr << "Testing cache.get(oid)" << std::endl;
	char sidbuf[UUID_STRLEN + 1];
	char oidbuf[UUID_STRLEN + 1];
	order_id_t o4(true);
	strategy_id_t s1(true);
	std::cerr << "Created oid: " << o4.c_str(oidbuf) << std::endl;
	std::cerr << "Created sid: " << s1.c_str(sidbuf) << std::endl;
	// clear the buffer!
	memset(sidbuf, 0, sizeof(sidbuf));
	OrderInfo_ptr oi2 = boost::make_shared<OrderInfo>(o4, s1);
	mc.add(o4, oi2);
	OrderInfo_ptr foundoi = mc.get(o4);
	EXPECT_NE(foundoi, OrderInfo_ptr());
	std::cerr << "Found strategy id: " << foundoi->getStrategyID().c_str(sidbuf) << std::endl;
	std::cerr << "Cache size(): " << (mc.getCache())->size() << std::endl;

	// EXPECT FAILURE
	order_id_t o5(true);
	OrderInfo_ptr oi3 = mc.get(o5);	
	EXPECT_EQ(oi3, OrderInfo_ptr());
	//assert(oi3 != OrderInfo_ptr());	
}
Пример #3
0
TEST(Obis, Obis_strparsing) {
	Obis o1(0x1, 0x1, 97, 97, 0xff, 0xff); // 97 = SC_F
	Obis o2("1-1:F.F");
	ASSERT_EQ(o1, o2);

	Obis o3(0x1, 0x1, 96, 98, 0xff, 0xff); // 96 = SC_C, 98 = SC_L
	Obis o4("1-1:C.L");
	ASSERT_EQ(o3, o4);

	Obis o5(0x1, 0x1, 96, 99, 0xff, 0xff); // 96 = SC_C, 99 = SC_P
	Obis o6("1-1:C.P");
	ASSERT_EQ(o5, o6);

	ASSERT_THROW(Obis o7("1-1:x:y"), vz::VZException);
	Obis o8("power-l1");
	ASSERT_EQ(Obis("1-0:21.7"), o8);

}
Пример #4
0
TEST(Obis, Obis_extStrParsing) {
	Obis o1(0xff, 0xff, 0x0, 0x0, 0x0, 0xff);
	Obis o2("0.0.0");
	ASSERT_EQ(o1, o2) << o1.toString( )<< o2.toString();
	ASSERT_EQ(o1.toString(), o2.toString());

	Obis o3(0xff, 0xff, 0x1, 0x2, 0x3, 0xff);
	Obis o4("1.2.3");
	ASSERT_EQ(o3, o4);
	ASSERT_EQ(o3.toString(), o4.toString());

	Obis o5(0xff, 0xff, 0x61, 0x61, 0xff, 0xff);
	Obis o6("F.F");
	ASSERT_EQ(o5, o6);

	Obis o7(0xff, 0xff, 0x0, 0x0, 0x2, 0xff);
	Obis o8("0.0.2");
	ASSERT_EQ(o7, o8);

	// this should throw an exception as hex codes are not valid inside obis codes.
	ASSERT_THROW(Obis o10("1.8.0*FF"), vz::VZException);
	ASSERT_THROW(Obis o10("1.8.0*F1"), vz::VZException);
}
Пример #5
0
int main(int argc) {


  seal::PluginManager::get()->initialise();
  pool::URIParser p;
  p.parse();
  
  pool::IFileCatalog lcat;
  pool::IFileCatalog * cat = &lcat;
  cat->setWriteCatalog(p.contactstring());
  cat->connect();

  cat->start();
  
  
  pool::IDataSvc *svc = pool::DataSvcFactory::instance(cat);
  // Define the policy for the implicit file handling
  pool::DatabaseConnectionPolicy policy;
  policy.setWriteModeForNonExisting(pool::DatabaseConnectionPolicy::CREATE);
  // policy.setWriteModeForExisting(pool::DatabaseConnectionPolicy::OVERWRITE);
  policy.setWriteModeForExisting(pool::DatabaseConnectionPolicy::UPDATE);
  svc->session().setDefaultConnectionPolicy(policy);


  svc->transaction().start(pool::ITransaction::UPDATE);
  pool::Ref<NavigationTests::AS> as(svc, new NavigationTests::AS);
  {
    pool::Placement place("DN", pool::DatabaseSpecification::PFN, "L", ROOT::Reflex::Type(), pool::ROOTKEY_StorageType.type()); 
    // This will also register the file. For this to occur, the placement object must use a PFN.
    as.markWrite(place);
  }
  as->p.t=new NavigationTests::BT;
  as->p.t->k = 3;

  // svc->transaction().start(pool::ITransaction::UPDATE);
  pool::Ref<NavigationTests::T2> o1(svc, new NavigationTests::T2);
  {
    pool::Placement place("DN", pool::DatabaseSpecification::PFN, "L", ROOT::Reflex::Type(), pool::ROOTKEY_StorageType.type()); 
    // This will also register the file. For this to occur, the placement object must use a PFN.
    o1.markWrite(place);
  }
  pool::Ref<NavigationTests::T2> o2(svc, new NavigationTests::T2);
  {
    pool::Placement place("DN", pool::DatabaseSpecification::PFN, "L", ROOT::Reflex::Type(), pool::ROOTKEY_StorageType.type()); 
    // This will also register the file. For this to occur, the placement object must use a PFN.
    o2.markWrite(place);
  }
  pool::Ref<NavigationTests::T2> o3(svc, new NavigationTests::T2);
  {
    pool::Placement place("DN", pool::DatabaseSpecification::PFN, "L", ROOT::Reflex::Type(), pool::ROOTKEY_StorageType.type()); 
    // This will also register the file. For this to occur, the placement object must use a PFN.
    o3.markWrite(place);
  }
  pool::Ref<NavigationTests::T2> o5(svc, new NavigationTests::T2);
  {
    pool::Placement place("DN", pool::DatabaseSpecification::PFN, "L", ROOT::Reflex::Type(), pool::ROOTKEY_StorageType.type()); 
    // This will also register the file. For this to occur, the placement object must use a PFN.
    o5.markWrite(place);
  }
  pool::Ref<NavigationTests::K> o4(svc, new NavigationTests::K);
  {
    pool::Placement place("DN", pool::DatabaseSpecification::PFN, "K", ROOT::Reflex::Type(), pool::ROOTKEY_StorageType.type()); 
    // This will also register the file. For this to occur, the placement object must use a PFN.
    o4.markWrite(place);
  }
  o3->bs.push_back(o1);
  o3->bs.push_back(o2);
  o3->bs.push_back(o5);
  o5->bs.push_back(o2);

  std::cout << "vec size " << o3->bs.size() << std::endl;

  // svc->cacheSvc().resetCache();
  o1.reset();
  std::cout << "o1 " << o1.toString() << std::endl;
  std::cout << "o1 o " << o1.isOpen() <<std:: endl;
  std::cout << "o1 p " << o1.isNull() << std::endl;
  std::cout << "o2 p " << o2.isNull() << std::endl;
  svc->transaction().commit();
  svc->session().disconnectAll();
  svc->cacheSvc().resetCache();

  svc->transaction().start(pool::ITransaction::UPDATE);
  // std::cout << "o1 p " << o1.isNull() << std::endl;
  std::cout << "o1 " << o1.toString() << std::endl;
  std::cout << "o1 o " << o1.isOpen() <<std:: endl;
  std::cout << "o1 p " << o1.isNull() << std::endl;
  o1.markDelete();  
  o1.reset();
  std::cout << "after delete and reset" << std::endl;
  std::cout << "o1 " << o1.toString() << std::endl;
  std::cout << "o1 o " << o1.isOpen() <<std:: endl;
  std::cout << "o1 p " << o1.isNull() << std::endl;
  std::cout << "o2 d " << o2.toString() << std::endl;
  std::cout << "o2 t " << o2.token() << std::endl;
  std::cout << "o2 p " << o2.isNull() << std::endl;
  svc->transaction().commit();
  svc->session().disconnectAll();

  svc->transaction().start(pool::ITransaction::UPDATE);
  std::cout << "vec size " << o3->bs.size() << std::endl;
  std::cout << "here we do not die anymore..." << std::endl;
  std::cout << "o2 d " << o2.toString() << std::endl;
  std::cout << "o2 t " << o2.token() << std::endl;
  std::cout << "o2 p " << o2.isNull() << std::endl;
  pool::Ref<NavigationTests::T2> o22 = o2;
  svc->transaction().commit();
  svc->session().disconnectAll();

  svc->cacheSvc().resetCache();

  svc->transaction().start(pool::ITransaction::UPDATE);
  std::cout << "vec size " << o3->bs.size() << std::endl;
  o3->bs.push_back(o5);
  o3.markUpdate();
  std::cout << "vec size " << o3->bs.size() << std::endl;
  svc->transaction().commit();
  if (argc>1) svc->session().disconnectAll();
  svc->cacheSvc().resetCache();
  svc->transaction().start(pool::ITransaction::UPDATE);
  std::cout << "vec size " << o3->bs.size() << std::endl;
  o3->bs.push_back(o5);
  std::cout << "vec size " << o3->bs.size() << std::endl;
  o3.markUpdate();
  svc->transaction().commit();
  svc->session().disconnectAll();

  svc->cacheSvc().resetCache();


  svc->transaction().start(pool::ITransaction::UPDATE);
  std::cout << "o1 d " << o1.toString() << std::endl;
  std::cout << "o1 t " << o1.token() << std::endl;
  std::cout << "o1 p " << o1.isNull() << std::endl;
  std::cout << "o2 d " << o2.toString() << std::endl;
  std::cout << "o2 t " << o2.token() << std::endl;
  std::cout << "o2 p " << o2.isNull() << std::endl;  /// this is true???
  svc->transaction().commit();
  svc->session().disconnectAll();

  try {
    svc->transaction().start(pool::ITransaction::UPDATE);
    std::cout << "o2 d " << o2.toString() << std::endl;
    std::cout << "o2 t " << o2.token() << std::endl;
    std::cout << "o2 p " << o2.isNull() << std::endl;
    o2.markUpdate();
    std::cout << "after update 1" << std::endl;
    o2.markDelete();  
    std::cout << "after delete 1" << std::endl;
    o2.markUpdate(); 
    std::cout << "after update 2" << std::endl;
    o2.markDelete();  
    std::cout << "after delete 2" << std::endl;
    o22.markDelete();  
    std::cout << "after delete 22" << std::endl;
    o3.markDelete();  
    std::cout << "after delete 3" << std::endl;
    pool::Ref<NavigationTests::T2> ol(svc, new NavigationTests::T2);
    {
      pool::Placement place("DN", pool::DatabaseSpecification::PFN, "L", ROOT::Reflex::Type(), pool::ROOTKEY_StorageType.type()); 
      // This will also register the file. For this to occur, the placement object must use a PFN.
      ol.markWrite(place);
  }
    svc->transaction().commit();
    svc->session().disconnectAll();
  }
  catch(const seal::Error& er){
    std::cout << "caught seal exception " << std::endl;
    std::cerr << er.explainSelf();
    std::cerr << std::endl;
    svc->transaction().commit();
    svc->session().disconnectAll();
   }


  svc->transaction().start(pool::ITransaction::UPDATE);
  pool::Ref<NavigationTests::T2> oA(svc,new NavigationTests::T2);
  {
    pool::Placement place("DN", pool::DatabaseSpecification::PFN, "L", ROOT::Reflex::Type(), pool::ROOTKEY_StorageType.type()); 
    // This will also register the file. For this to occur, the placement object must use a PFN.
    oA.markWrite(place);
  }
  svc->transaction().commit();
  svc->session().disconnectAll();

  svc->transaction().start(pool::ITransaction::UPDATE);
  oA.markDelete();
  pool::Ref<NavigationTests::T2> oB(svc,new NavigationTests::T2);
  {
    pool::Placement place("DN", pool::DatabaseSpecification::PFN, "L", ROOT::Reflex::Type(), pool::ROOTKEY_StorageType.type()); 
    // This will also register the file. For this to occur, the placement object must use a PFN.
    oB.markWrite(place);
  }
  oA = oB;
  svc->transaction().commit();
  svc->session().disconnectAll();
  try {
    svc->transaction().start(pool::ITransaction::UPDATE);
    oA.markDelete();  
    std::cout << "after delete A" << std::endl;
     svc->transaction().commit();
    svc->session().disconnectAll();
  }
  catch(const seal::Error& er){
    std::cout << "caught seal exception " << std::endl;
    std::cerr << er.explainSelf();
    std::cerr << std::endl;
    svc->transaction().commit();
    svc->session().disconnectAll();
   }

  try {
    svc->transaction().start(pool::ITransaction::UPDATE);
    o5.markDelete();  
    std::cout << "after delete 5" << std::endl;
    o3.markDelete();  
    std::cout << "after delete 3 2" << std::endl;
    svc->transaction().commit();
    svc->session().disconnectAll();
  }
  catch(const seal::Error& er){
    std::cout << "OK! caught seal exception " << std::endl;
    std::cerr << er.explainSelf();
    std::cerr << std::endl;
    svc->transaction().commit();
    svc->session().disconnectAll();
   }

  try {
    svc->transaction().start(pool::ITransaction::READ);
    pool::Ref<NavigationTests::T2> h2;
    std::cout << "before is open" <<std:: endl;
    std::cout <<  h2.isOpen() <<std:: endl;
    std::cout << "before reset" <<std:: endl;
    h2.reset();
    svc->transaction().commit();
    svc->session().disconnectAll();
   }
  catch(const seal::Error& er){
    std::cout << "caught seal exception " << std::endl;
    std::cerr << er.explainSelf();
    std::cerr << std::endl;
    svc->transaction().commit();
    svc->session().disconnectAll();
  }


  cat->commit();

  delete svc;
  

}
Пример #6
0
int main(int argc, char **argv){
    Operand o1(6);
    Operand o2(8);
    Operand o3(4);
    Operand o4(5);
    Operand o5(3);
    Mult m(&o1,&o2);
    Add a(&m,&o3);
    Add a2(&o2,&o3);
    Sqr sq(&a2);
    Div div(&m,&o3);
    Add a3(&div,&o4);
    Sqr sq2(&o5);
    Sub sub(&a3,&sq2);
    std::cout<<a.evaluate()<<std::endl;
    std::cout<<sq.evaluate()<<std::endl;
    std::cout<<sub.evaluate()<<std::endl<<std::endl;
    
    InsertSort iSort;
    Lcontainer lcon(&iSort);
    lcon.add_element(&o1);
    lcon.add_element(&sub);
    lcon.add_element(&div);
    lcon.add_element(&sq2);
    lcon.add_element(&m);
    std::cout<<lcon.at(0)->evaluate()<<std::endl;
    std::cout<<lcon.at(1)->evaluate()<<std::endl<<std::endl;

    lcon.print();
    std::cout<<std::endl;

    lcon.swap(0,1);
    lcon.print();
    std::cout<<std::endl;

    std::cout<<"Sorting list with ascending insertion sort"<<std::endl;
    lcon.sort();
    lcon.print();
    std::cout<<std::endl;


    std::cout<<"Sorting list with descending bubble sort"<<std::endl;
    BubbleSort bSort;
    lcon.set_sort_function(&bSort);
    lcon.sort();
    lcon.print();
    std::cout<<std::endl;

    Vcontainer vcon(&iSort);
    vcon.add_element(&a2);
    vcon.add_element(&sq2);
    vcon.add_element(&m);
    vcon.add_element(&div);
    vcon.add_element(&a3);
    vcon.add_element(&a);

    std::cout<<"Sorting vector with ascending insertion sort"<<std::endl;
    vcon.sort();
    vcon.print();
    std::cout<<std::endl;

    std::cout<<"Sorting vector with descending bubble sort"<<std::endl;
    vcon.set_sort_function(&bSort);
    vcon.sort();
    vcon.print();
    std::cout<<std::endl;

}
/*  
 * START THE VM 
 */
void startVM(Vm* vm)
{
    vm->PC = 0;

    while (charArrayToInt(0,2,vm->IR) != 99)
    {
        nextInstruction(vm);

        switch (charArrayToInt(0,2,vm->IR)) 
        {
            case 0:
                o0(vm);
                break;
            case 1: 
                o1(vm);
                break;
            case 2:
                o2(vm);
                break;
            case 3:
                o3(vm);
                break;
            case 4:
                o4(vm);
                break;
            case 5:
                o5(vm);
                break;
            case 6:
                o6(vm);
                break;
            case 7:
                o7(vm);
                break;
            case 8:
                o8(vm);
                break;
            case 9:
                o9(vm);
                break;
            case 10:
                o10(vm);
                break;
            case 11:
                o11(vm);
                break;
            case 12:
                o12(vm);
                break;
            case 13:
                o13(vm);
                break;
            case 14:
                o14(vm);
                break;
            case 15:
                o15(vm);
                break;
            case 16:
                o16(vm);
                break;
            case 17:
                o17(vm);
                break;
            case 18:
                o18(vm);
                break;
            case 19:
                o19(vm);
                break;
            case 20:
                o20(vm);
                break;
            case 21:
                o21(vm);
                break;
            case 22:
                o22(vm);
                break;
            case 23:
                o23(vm);
                break;
            case 24:
                o24(vm);
                break;
            case 25:
                o25(vm);
                break;
            case 26:
                o26(vm);
                break;
            case 27:
                o27(vm);
                break;
            case 28:
                o28(vm);
                break;
            case 29:
                o29(vm);
                break;
            case 30:
                o30(vm);
                break;
            case 31:
                o31(vm);
                break;
            case 32:
                o32(vm);
                break;
            case 33:
                o33(vm);
                break;
            case 34:
                o34(vm);
                break;
            case 35:
                o35(vm);
                break;
            case 99:
                o99(vm);
                break;
            default:
                // Code
                break;
        }
        displayVmFinal(vm);
    }
}