📄 mpresourcetest.cpp
字号:
// add the resource to the flow graph
res = pFlowGraph->addResource(*pResource1);
CPPUNIT_ASSERT(res == OS_SUCCESS);
CPPUNIT_ASSERT(pResource1->getFlowGraph() == pFlowGraph);
// remove the resource from the flow graph
res = pFlowGraph->removeResource(*pResource1);
CPPUNIT_ASSERT(res == OS_SUCCESS);
CPPUNIT_ASSERT(pResource1->getFlowGraph() == NULL);
delete pResource1;
delete pFlowGraph;
}
void testInputOutputInfoAndCounts()
{
MpFlowGraphBase* pFlowGraph = 0;
MpTestResource* pResource1 = 0;
MpTestResource* pResource2 = 0;
MpTestResource* pDownstream = 0;
MpTestResource* pUpstream = 0;
int downstreamPortIdx;
int upstreamPortIdx;
OsStatus res;
pFlowGraph = new MpFlowGraphBase(30, 30);
pResource1 = new MpTestResource("Test1", 0, 5, 1, 4);
pResource2 = new MpTestResource("Test2", 0, 5, 1, 4);
// Initially, there should be no input or output links
CPPUNIT_ASSERT_EQUAL(0, pResource1->numInputs());
CPPUNIT_ASSERT_EQUAL(0, pResource1->numOutputs());
CPPUNIT_ASSERT_EQUAL(0, pResource2->numInputs());
CPPUNIT_ASSERT_EQUAL(0, pResource2->numOutputs());
res = pFlowGraph->addResource(*pResource1);
CPPUNIT_ASSERT(res == OS_SUCCESS);
res = pFlowGraph->addResource(*pResource2);
CPPUNIT_ASSERT(res == OS_SUCCESS);
// add links from
// pResource1, output port 0 -> pResource2, input port 1
// pResource1, output port 3 -> pResource2, input port 2
res = pFlowGraph->addLink(*pResource1, 0, *pResource2, 1);
CPPUNIT_ASSERT(res == OS_SUCCESS);
res = pFlowGraph->addLink(*pResource1, 3, *pResource2, 2);
CPPUNIT_ASSERT(res == OS_SUCCESS);
// verify that the number of input and output links are correct
CPPUNIT_ASSERT_EQUAL(0, pResource1->numInputs());
CPPUNIT_ASSERT_EQUAL(2, pResource1->numOutputs());
CPPUNIT_ASSERT_EQUAL(2, pResource2->numInputs());
CPPUNIT_ASSERT_EQUAL(0, pResource2->numOutputs());
// verify the input information for the downstream resource
pResource2->getInputInfo(0, (MpResource*&) pUpstream, upstreamPortIdx);
CPPUNIT_ASSERT(pUpstream == NULL); // nothing should be connected on input 0
pResource2->getInputInfo(1, (MpResource*&) pUpstream, upstreamPortIdx);
CPPUNIT_ASSERT(pUpstream == pResource1);
CPPUNIT_ASSERT_EQUAL(0, upstreamPortIdx);
pResource2->getInputInfo(2, (MpResource*&) pUpstream, upstreamPortIdx);
CPPUNIT_ASSERT(pUpstream == pResource1);
CPPUNIT_ASSERT_EQUAL(3, upstreamPortIdx);
// verify the output information for the upstream resource
pResource1->getOutputInfo(1, (MpResource*&) pDownstream, downstreamPortIdx);
CPPUNIT_ASSERT(pDownstream == NULL); // nothing should be connected on output 1
pResource1->getOutputInfo(0, (MpResource*&) pDownstream, downstreamPortIdx);
CPPUNIT_ASSERT(pDownstream == pResource2);
CPPUNIT_ASSERT_EQUAL(1, downstreamPortIdx);
pResource1->getOutputInfo(3, (MpResource*&) pDownstream, downstreamPortIdx);
CPPUNIT_ASSERT(pDownstream == pResource2);
CPPUNIT_ASSERT_EQUAL(2, downstreamPortIdx);
// remove the two links
res = pFlowGraph->removeLink(*pResource1, 0);
CPPUNIT_ASSERT(res == OS_SUCCESS);
res = pFlowGraph->removeLink(*pResource1, 3);
CPPUNIT_ASSERT(res == OS_SUCCESS);
// verify the input information for the downstream resource
pResource2->getInputInfo(1, (MpResource*&) pUpstream, upstreamPortIdx);
CPPUNIT_ASSERT(pUpstream == NULL);
pResource2->getInputInfo(2, (MpResource*&) pUpstream, upstreamPortIdx);
CPPUNIT_ASSERT(pUpstream == NULL);
// verify the output information for the upstream resource
pResource1->getOutputInfo(0, (MpResource*&) pDownstream, downstreamPortIdx);
CPPUNIT_ASSERT(pDownstream == NULL);
pResource1->getOutputInfo(3, (MpResource*&) pDownstream, downstreamPortIdx);
CPPUNIT_ASSERT(pDownstream == NULL);
// verify the number of input and output links are correct
CPPUNIT_ASSERT_EQUAL(0, pResource1->numInputs());
CPPUNIT_ASSERT_EQUAL(0, pResource1->numOutputs());
CPPUNIT_ASSERT_EQUAL(0, pResource2->numInputs());
CPPUNIT_ASSERT_EQUAL(0, pResource2->numOutputs());
// remove the resources from the flow graph
res = pFlowGraph->removeResource(*pResource1);
CPPUNIT_ASSERT(res == OS_SUCCESS);
res = pFlowGraph->removeResource(*pResource2);
CPPUNIT_ASSERT(res == OS_SUCCESS);
delete pResource1;
delete pResource2;
delete pFlowGraph;
}
void testIsEnabled()
{
MpTestResource* pResource1 = 0;
pResource1 = new MpTestResource("Test", 0, 5, 1, 4);
CPPUNIT_ASSERT(!pResource1->isEnabled()); // should be disabled initially
pResource1->enable();
CPPUNIT_ASSERT(pResource1->isEnabled());
pResource1->enable(); // second enable() should be a no-op
CPPUNIT_ASSERT(pResource1->isEnabled());
pResource1->disable();
CPPUNIT_ASSERT(! pResource1->isEnabled());
pResource1->disable(); // second disable() should be a no-op
CPPUNIT_ASSERT(! pResource1->isEnabled());
delete pResource1;
}
void testIsInputOutputConnectedDisconnected()
{
MpFlowGraphBase* pFlowGraph = 0;
MpTestResource* pResource1 = 0;
MpTestResource* pResource2 = 0;
OsStatus res;
pFlowGraph = new MpFlowGraphBase(30, 30);
pResource1 = new MpTestResource("Test1", 0, 2, 0, 2);
pResource2 = new MpTestResource("Test2", 0, 2, 0, 2);
res = pFlowGraph->addResource(*pResource1);
CPPUNIT_ASSERT(res == OS_SUCCESS);
res = pFlowGraph->addResource(*pResource2);
CPPUNIT_ASSERT(res == OS_SUCCESS);
// add link from
// pResource1, output port 1 -> pResource2, input port 1
res = pFlowGraph->addLink(*pResource1, 1, *pResource2, 1);
CPPUNIT_ASSERT(res == OS_SUCCESS);
// verify the link state for the inputs and outputs
CPPUNIT_ASSERT(!pResource1->isInputConnected(-1)); // check invalid ports
CPPUNIT_ASSERT(! pResource1->isInputConnected(2));
CPPUNIT_ASSERT(! pResource1->isInputUnconnected(-1));
CPPUNIT_ASSERT(! pResource1->isInputUnconnected(2));
CPPUNIT_ASSERT(! pResource1->isInputConnected(0)); // check valid parts that
CPPUNIT_ASSERT(! pResource1->isInputConnected(1)); // are not connected
CPPUNIT_ASSERT(! pResource1->isOutputConnected(0));
CPPUNIT_ASSERT( pResource1->isInputUnconnected(0));
CPPUNIT_ASSERT( pResource1->isInputUnconnected(1));
CPPUNIT_ASSERT( pResource1->isOutputUnconnected(0));
CPPUNIT_ASSERT(! pResource2->isInputConnected(0));
CPPUNIT_ASSERT(! pResource2->isOutputConnected(0));
CPPUNIT_ASSERT(! pResource2->isOutputConnected(1));
CPPUNIT_ASSERT( pResource2->isInputUnconnected(0));
CPPUNIT_ASSERT( pResource2->isOutputUnconnected(0));
CPPUNIT_ASSERT( pResource2->isOutputUnconnected(1));
CPPUNIT_ASSERT( pResource1->isOutputConnected(1)); // check connected ports
CPPUNIT_ASSERT(! pResource1->isOutputUnconnected(1));
CPPUNIT_ASSERT( pResource2->isInputConnected(1));
CPPUNIT_ASSERT(! pResource2->isInputUnconnected(1));
// remove the link and resources from the flow graph
res = pFlowGraph->removeLink(*pResource1, 1);
CPPUNIT_ASSERT(res == OS_SUCCESS);
res = pFlowGraph->removeResource(*pResource1);
CPPUNIT_ASSERT(res == OS_SUCCESS);
res = pFlowGraph->removeResource(*pResource2);
CPPUNIT_ASSERT(res == OS_SUCCESS);
delete pResource1;
delete pResource2;
delete pFlowGraph;
}
};
CPPUNIT_TEST_SUITE_REGISTRATION(MpResourceTest);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -