/** * Copyright - See the COPYRIGHT that is included with this distribution. * pvAccessCPP is distributed subject to a Software License Agreement found * in file LICENSE that is included with this distribution. */ #include #include #include #include namespace { struct Qnode : public epics::pvAccess::fair_queue::entry { unsigned i; Qnode(unsigned i):i(i) {} }; } // namespace static unsigned Ninput[] = {0,0,0,1,0,2,1,0,1,0,0}; static unsigned Nexpect[] = {0,1,2,0,1,0,1,0,0,0,0}; static void testOrder() { epics::pvAccess::fair_queue Q; typedef epics::pvAccess::fair_queue::value_type value_type; std::vector unique, inputs, outputs; unique.resize(3); unique[0].reset(new Qnode(0)); unique[1].reset(new Qnode(1)); unique[2].reset(new Qnode(2)); testDiag("Queueing"); for(unsigned i=0; ii); } } testOk(outputs.size()==NELEMENTS(Nexpect), "sizes match actual %u expected %u", (unsigned)outputs.size(), (unsigned)NELEMENTS(Nexpect)); for(unsigned i=0; i=outputs.size()) { testFail("output truncated"); continue; } testOk(outputs[i]->i==Nexpect[i], "[%u] %u == %u", i, (unsigned)outputs[i]->i, Nexpect[i]); } } MAIN(testFairQueue) { testPlan(12); testOrder(); return testDone(); }