/* 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; }
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()); }
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); }
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); }
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; }
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); } }