Update of /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/EditProtocolTestImpl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31766/EditProtocolTestImpl Modified Files: EPMobDepPhase.h EPEffectVisitor.cpp EPAnnotationTest.cpp EPEffectVisitor.h EPAnnotationVisitor.cpp EPContainedTrackVisitor.cpp EPNameVisitor.cpp EPMobDepPhase.cpp EPEffectTest.cpp EPAnnotationVisitor.h EPTrackContentsVisitor.h Added Files: EPHeaderTest.cpp EPParameterTest.h EPDefinitionTest.h EPParameterVisitor.h EPDefinitionVisitor.cpp EPHeaderVisitor.h EPDefinitionTest.cpp EPHeaderVisitor.cpp EPParameterTest.cpp EPParameterVisitor.cpp EPHeaderTest.h EPDefinitionVisitor.h Log Message: Added new tests. Added new requirements to existing tests --- NEW FILE: EPHeaderTest.h --- //=---------------------------------------------------------------------= // // $Id$ // // The contents of this file are subject to the AAF SDK Public // Source License Agreement (the "License"); You may not use this file // except in compliance with the License. The License is available in // AAFSDKPSL.TXT, or you may obtain a copy of the License from the AAF // Association or its successor. // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See // the License for the specific language governing rights and limitations // under the License. // // The Original Code of this file is Copyright 1998-2004, Licensor of the // AAF Association. // //=---------------------------------------------------------------------= #ifndef __EPHeaderTest_h_ #define __EPHeaderTest_h_ //Test/Result files #include <Test.h> //Ax files #include <AxTypes.h> namespace aafanalyzer { class TestLevelTestResult; using namespace boost; class EPHeaderTest : public Test { public: EPHeaderTest( wostream& log, shared_ptr<const TestGraph> spGraph ); virtual ~EPHeaderTest(); virtual shared_ptr<TestLevelTestResult> Execute(); virtual AxString GetName() const; virtual AxString GetDescription() const; static const TestInfo GetTestInfo(); private: // prohibited EPHeaderTest(); EPHeaderTest( const EPHeaderTest& ); EPHeaderTest& operator=( const EPHeaderTest& ); }; } // end of namespace diskstream #endif /* __EPHeaderTest_h_*/ --- NEW FILE: EPParameterVisitor.h --- //=---------------------------------------------------------------------= // // $Id$ // // The contents of this file are subject to the AAF SDK Public // Source License Agreement (the "License"); You may not use this file // except in compliance with the License. The License is available in // AAFSDKPSL.TXT, or you may obtain a copy of the License from the AAF // Association or its successor. // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See // the License for the specific language governing rights and limitations // under the License. // // The Original Code of this file is Copyright 1998-2004, Licensor of the // AAF Association. // //=---------------------------------------------------------------------= #ifndef __EPParameterVisitor_h_ #define __EPParameterVisitor_h_ //Edit Protocol Analyzer Base files #include <EPTypedVisitor.h> #include <EPTypedObjNode.h> //STL files #include <set> namespace aafanalyzer { class DetailLevelTestResult; using namespace boost; using namespace std; class EPParameterVisitor : public EPTypedVisitor { public: EPParameterVisitor( wostream& log, shared_ptr<EdgeMap> spEdgeMap ); virtual ~EPParameterVisitor(); virtual bool PreOrderVisit( AAFTypedObjNode<IAAFParameter>& node ); virtual bool PreOrderVisit( AAFTypedObjNode<IAAFVaryingValue>& node ); shared_ptr<DetailLevelTestResult> GetResult(); private: wostream& _log; shared_ptr<EdgeMap> _spEdgeMap; shared_ptr<DetailLevelTestResult> _spResult; set<aafUID_t> _validInterpolationDefs; // prohibited EPParameterVisitor(); EPParameterVisitor( const EPParameterVisitor& ); EPParameterVisitor& operator=( const EPParameterVisitor& ); }; } // end of namespace diskstream #endif /*__EPParameterVisitor_h_*/ Index: EPNameVisitor.cpp =================================================================== RCS file: /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/EditProtocolTestImpl/EPNameVisitor.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** EPNameVisitor.cpp 14 Nov 2005 19:46:50 -0000 1.4 --- EPNameVisitor.cpp 30 Nov 2005 16:49:09 -0000 1.5 *************** *** 34,38 **** #include <AxUtil.h> #include <AxMobSlot.h> - #include <AxIterator.h> #include <AxDefObject.h> #include <AxDictionary.h> --- 34,37 ---- --- NEW FILE: EPParameterTest.cpp --- //=---------------------------------------------------------------------= // // $Id$ // // The contents of this file are subject to the AAF SDK Public // Source License Agreement (the "License"); You may not use this file // except in compliance with the License. The License is available in // AAFSDKPSL.TXT, or you may obtain a copy of the License from the AAF // Association or its successor. // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See // the License for the specific language governing rights and limitations // under the License. // // The Original Code of this file is Copyright 1998-2004, Licensor of the // AAF Association. // //=---------------------------------------------------------------------= //Edit Protocol Test files #include "EPParameterTest.h" #include "EPParameterVisitor.h" //Test/Result files #include <TestLevelTestResult.h> #include <DetailLevelTestResult.h> //AAF Analyzer Base files #include <TestGraph.h> //Requirement files #include <Requirement.h> //Analyzer Base files #include <DepthFirstTraversal.h> //STL files #include <vector> namespace { const wchar_t* TEST_NAME = L"Edit Protocol Parameter Test"; const wchar_t* TEST_DESC = L"Verify that all parameters in the AAF file are valid."; } // end of namespace //====================================================================== namespace aafanalyzer { using namespace std; EPParameterTest::EPParameterTest( wostream& log, shared_ptr<const TestGraph> spGraph ) : Test( log, GetTestInfo() ) { SetTestGraph(spGraph); } EPParameterTest::~EPParameterTest() {} shared_ptr<TestLevelTestResult> EPParameterTest::Execute() { shared_ptr<EPParameterVisitor> spVisitor(new EPParameterVisitor( GetOutStream(), GetTestGraph()->GetEdgeMap() ) ); DepthFirstTraversal dfs(GetTestGraph()->GetEdgeMap(), GetTestGraph()->GetRootNode()); const shared_ptr<const Test> me = this->shared_from_this(); Requirement::RequirementMapSP spMyReqs(new Requirement::RequirementMap(this->GetCoveredRequirements())); shared_ptr<TestLevelTestResult> spResult( new TestLevelTestResult(TEST_NAME, TEST_DESC, L"-", // explain L"-", // DOCREF REQUIRED TestResult::PASS, me, spMyReqs ) ); dfs.TraverseDown( spVisitor, GetTestGraph()->GetRootNode() ); spResult->AppendSubtestResult( spVisitor->GetResult() ); spResult->SetResult( spResult->GetAggregateResult() ); if ( spResult->GetResult() == TestResult::FAIL ) { spResult->SetExplanation(L"Test Failed - See \"Edit Protocol Parameter Visitor\" Visitor for details"); } //Update the requirement status based upon the status of the requirements in //the visitor. for (int reqLevel = TestResult::PASS; reqLevel <= TestResult::FAIL; reqLevel++) { Requirement::RequirementMap childReqs = spVisitor->GetResult()->GetRequirements( (TestResult::Result)reqLevel ); Requirement::RequirementMap::const_iterator iter; for( iter = childReqs.begin(); iter != childReqs.end(); ++iter ) { spResult->SetRequirementStatus( (TestResult::Result)reqLevel, iter->second ); } } return spResult; } AxString EPParameterTest::GetName() const { return TEST_NAME; } AxString EPParameterTest::GetDescription() const { return TEST_DESC; } const TestInfo EPParameterTest::GetTestInfo() { shared_ptr<vector<AxString> > spReqIds(new vector<AxString>); spReqIds->push_back(L"REQ_EP_174"); //Must be constant or varying. spReqIds->push_back(L"REQ_EP_175"); //Valid Interpolators. return TestInfo(L"EPParameterTest", spReqIds); } } // end of namespace aafanalyzer --- NEW FILE: EPParameterTest.h --- //=---------------------------------------------------------------------= // // $Id$ // // The contents of this file are subject to the AAF SDK Public // Source License Agreement (the "License"); You may not use this file // except in compliance with the License. The License is available in // AAFSDKPSL.TXT, or you may obtain a copy of the License from the AAF // Association or its successor. // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See // the License for the specific language governing rights and limitations // under the License. // // The Original Code of this file is Copyright 1998-2004, Licensor of the // AAF Association. // //=---------------------------------------------------------------------= #ifndef __EPParameterTest_h_ #define __EPParameterTest_h_ //Test/Result files #include <Test.h> //Ax files #include <AxTypes.h> namespace aafanalyzer { class TestLevelTestResult; using namespace boost; class EPParameterTest : public Test { public: EPParameterTest( wostream& log, shared_ptr<const TestGraph> spGraph ); virtual ~EPParameterTest(); virtual shared_ptr<TestLevelTestResult> Execute(); virtual AxString GetName() const; virtual AxString GetDescription() const; static const TestInfo GetTestInfo(); private: // prohibited EPParameterTest(); EPParameterTest( const EPParameterTest& ); EPParameterTest& operator=( const EPParameterTest& ); }; } // end of namespace diskstream #endif /* __EPParameterTest_h_*/ Index: EPMobDepPhase.cpp =================================================================== RCS file: /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/EditProtocolTestImpl/EPMobDepPhase.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** EPMobDepPhase.cpp 24 Nov 2005 17:10:47 -0000 1.11 --- EPMobDepPhase.cpp 30 Nov 2005 16:49:09 -0000 1.12 *************** *** 128,131 **** --- 128,143 ---- shared_ptr<EPAnnotationTest> annotationTest( new EPAnnotationTest( _log, _spGraph ) ); spPhaseResult->AppendSubtestResult( annotationTest->Execute() ); + + // Eleventh, run the definition test + shared_ptr<EPDefinitionTest> definitionTest( new EPDefinitionTest( _log, _spGraph ) ); + spPhaseResult->AppendSubtestResult( definitionTest->Execute() ); + + // Twelevth, run the header test + shared_ptr<EPHeaderTest> headerTest( new EPHeaderTest( _log, _spGraph ) ); + spPhaseResult->AppendSubtestResult( headerTest->Execute() ); + + // Thirteenth, run the parameter test + shared_ptr<EPParameterTest> parameterTest( new EPParameterTest( _log, _spGraph ) ); + spPhaseResult->AppendSubtestResult( parameterTest->Execute() ); spPhaseResult->SetResult( spPhaseResult->GetAggregateResult() ); --- NEW FILE: EPHeaderTest.cpp --- //=---------------------------------------------------------------------= // // $Id$ // // The contents of this file are subject to the AAF SDK Public // Source License Agreement (the "License"); You may not use this file // except in compliance with the License. The License is available in // AAFSDKPSL.TXT, or you may obtain a copy of the License from the AAF // Association or its successor. // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See // the License for the specific language governing rights and limitations // under the License. // // The Original Code of this file is Copyright 1998-2004, Licensor of the // AAF Association. // //=---------------------------------------------------------------------= //Edit Protocol Test files #include "EPHeaderTest.h" #include "EPHeaderVisitor.h" //Test/Result files #include <TestLevelTestResult.h> #include <DetailLevelTestResult.h> //AAF Analyzer Base files #include <TestGraph.h> //Requirement files #include <Requirement.h> //Analyzer Base files #include <DepthFirstTraversal.h> namespace { const wchar_t* TEST_NAME = L"Edit Protocol Header Test"; const wchar_t* TEST_DESC = L"Verify the AAF file header is valid."; } // end of namespace //====================================================================== namespace aafanalyzer { using namespace std; EPHeaderTest::EPHeaderTest( wostream& log, shared_ptr<const TestGraph> spGraph ) : Test( log, GetTestInfo() ) { SetTestGraph(spGraph); } EPHeaderTest::~EPHeaderTest() {} shared_ptr<TestLevelTestResult> EPHeaderTest::Execute() { shared_ptr<EPHeaderVisitor> spVisitor(new EPHeaderVisitor( GetOutStream() ) ); DepthFirstTraversal dfs(GetTestGraph()->GetEdgeMap(), GetTestGraph()->GetRootNode()); const shared_ptr<const Test> me = this->shared_from_this(); Requirement::RequirementMapSP spMyReqs(new Requirement::RequirementMap(this->GetCoveredRequirements())); shared_ptr<TestLevelTestResult> spResult( new TestLevelTestResult(TEST_NAME, TEST_DESC, L"-", // explain L"-", // DOCREF REQUIRED TestResult::PASS, me, spMyReqs ) ); dfs.TraverseDown( spVisitor, GetTestGraph()->GetRootNode() ); spResult->AppendSubtestResult( spVisitor->GetResult() ); spResult->SetResult( spResult->GetAggregateResult() ); if ( spResult->GetResult() == TestResult::FAIL ) { spResult->SetExplanation(L"Test Failed - See \"Edit Protocol Header Visitor\" Visitor for details"); } //Update the requirement status based upon the status of the requirements in //the visitor. for (int reqLevel = TestResult::PASS; reqLevel <= TestResult::FAIL; reqLevel++) { Requirement::RequirementMap childReqs = spVisitor->GetResult()->GetRequirements( (TestResult::Result)reqLevel ); Requirement::RequirementMap::const_iterator iter; for( iter = childReqs.begin(); iter != childReqs.end(); ++iter ) { spResult->SetRequirementStatus( (TestResult::Result)reqLevel, iter->second ); } } return spResult; } AxString EPHeaderTest::GetName() const { return TEST_NAME; } AxString EPHeaderTest::GetDescription() const { return TEST_DESC; } const TestInfo EPHeaderTest::GetTestInfo() { shared_ptr<vector<AxString> > spReqIds(new vector<AxString>); spReqIds->push_back(L"REQ_EP_255"); //Operational Pattern return TestInfo(L"EPHeaderTest", spReqIds); } } // end of namespace aafanalyzer Index: EPContainedTrackVisitor.cpp =================================================================== RCS file: /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/EditProtocolTestImpl/EPContainedTrackVisitor.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** EPContainedTrackVisitor.cpp 21 Nov 2005 21:32:26 -0000 1.6 --- EPContainedTrackVisitor.cpp 30 Nov 2005 16:49:09 -0000 1.7 *************** *** 34,38 **** #include <AxMetaDef.h> #include <AxMobSlot.h> - #include <AxIterator.h> #include <AxComponent.h> #include <AxDefObject.h> --- 34,37 ---- --- NEW FILE: EPParameterVisitor.cpp --- //=---------------------------------------------------------------------= // // $Id$ // // The contents of this file are subject to the AAF SDK Public // Source License Agreement (the "License"); You may not use this file // except in compliance with the License. The License is available in // AAFSDKPSL.TXT, or you may obtain a copy of the License from the AAF // Association or its successor. // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See // the License for the specific language governing rights and limitations // under the License. // // The Original Code of this file is Copyright 1998-2004, Licensor of the // AAF Association. // //=---------------------------------------------------------------------= //Edit Protocol Test files #include "EPParameterVisitor.h" #include "EPParameterTest.h" //Test/Result files #include <DetailLevelTestResult.h> #include <TestRegistry.h> //Analyzer Base files #include <DepthFirstTraversal.h> //Ax files #include <AxParameter.h> #include <AxDefObject.h> //#include <AxEx.h> //AAF files #include <AAFClassDefUIDs.h> #include <AAFInterpolatorDefs.h> //#include <AAFResult.h> namespace { using namespace aafanalyzer; } // end of namespace //====================================================================== namespace aafanalyzer { using namespace boost; EPParameterVisitor::EPParameterVisitor( wostream& log, shared_ptr<EdgeMap> spEdgeMap ) : _log(log), _spEdgeMap( spEdgeMap ), _spResult( new DetailLevelTestResult( L"Edit Protocol Parameter Visitor", L"Visit parameters and make sure they are valid.", L"", // explain L"", // DOCREF REQUIRED TestResult::PASS, TestRegistry::GetInstance().GetRequirementsForTest( EPParameterTest::GetTestInfo().GetName() ) ) ) { _validInterpolationDefs.insert( kAAFInterpolationDef_Constant ); _validInterpolationDefs.insert( kAAFInterpolationDef_Linear ); _validInterpolationDefs.insert( kAAFInterpolationDef_Log ); _validInterpolationDefs.insert( kAAFInterpolationDef_Power ); _validInterpolationDefs.insert( kAAFInterpolationDef_BSpline ); } EPParameterVisitor::~EPParameterVisitor() {} bool EPParameterVisitor::PreOrderVisit( AAFTypedObjNode<IAAFParameter>& node ) { //Parameter isn't constant or varying so fail 174. AxString name = this->GetMobSlotName( _spEdgeMap, node ); _spResult->AddInformationResult( L"REQ_EP_174", L"Parameter within " + name + L" is not a ConstantValue or VaryingValue.", TestResult::FAIL ); return false; } bool EPParameterVisitor::PreOrderVisit( AAFTypedObjNode<IAAFVaryingValue>& node ) { AxVaryingValue axVaryingVal( node.GetAAFObjectOfType() ); AxInterpolationDef axIntDef( axVaryingVal.GetInterpolationDefinition() ); if ( _validInterpolationDefs.find( axIntDef.GetAUID() ) == _validInterpolationDefs.end() ) { AxString name = this->GetMobSlotName( _spEdgeMap, node ); _spResult->AddInformationResult( L"REQ_EP_175", L"VaryingValue object in " + name + L" has an illegal interpolation definition (AUID = " + AxStringUtil::uid2Str( axIntDef.GetAUID() ) + L").", TestResult::FAIL ); } //Regardless of pass/fail, there is no need to traverse further. return false; } shared_ptr<DetailLevelTestResult> EPParameterVisitor::GetResult() { return _spResult; } } // end of namespace aafanalyzer --- NEW FILE: EPDefinitionVisitor.cpp --- //=---------------------------------------------------------------------= // // $Id$ // // The contents of this file are subject to the AAF SDK Public // Source License Agreement (the "License"); You may not use this file // except in compliance with the License. The License is available in // AAFSDKPSL.TXT, or you may obtain a copy of the License from the AAF // Association or its successor. // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See // the License for the specific language governing rights and limitations // under the License. // // The Original Code of this file is Copyright 1998-2004, Licensor of the // AAF Association. // //=---------------------------------------------------------------------= //Edit Protocol Test files #include "EPDefinitionVisitor.h" #include "EPDefinitionTest.h" //Test/Result files #include <DetailLevelTestResult.h> #include <TestRegistry.h> //Analyzer Base files #include <EdgeMap.h> //Ax files #include <AxDefObject.h> #include <AxComponent.h> namespace { using namespace aafanalyzer; } // end of namespace //====================================================================== namespace aafanalyzer { using namespace boost; EPDefinitionVisitor::EPDefinitionVisitor( wostream& log, shared_ptr<EdgeMap> spEdgeMap ) : _log(log), _spEdgeMap( spEdgeMap ), _spResult( new DetailLevelTestResult( L"Edit Protocol Definition Visitor", L"Visit Data Definitions and Components to make sure all Data Definitions are valid.", L"", // explain L"", // DOCREF REQUIRED TestResult::PASS, TestRegistry::GetInstance().GetRequirementsForTest( EPDefinitionTest::GetTestInfo().GetName() ) ) ) {} EPDefinitionVisitor::~EPDefinitionVisitor() {} bool EPDefinitionVisitor::PreOrderVisit( AAFTypedObjNode<IAAFOperationDef>& node ) { AxOperationDef axOpDef( node.GetAAFObjectOfType() ); _registeredDefinitions[axOpDef.GetAUID()] = axOpDef.GetName(); return false; } bool EPDefinitionVisitor::PreOrderVisit( AAFTypedObjNode<IAAFOperationGroup>& node ) { AxOperationGroup axOpGroup( node.GetAAFObjectOfType() ); AxDataDef axOpGroupDDef( axOpGroup.GetDataDef() ); AxOperationDef axOpDef( axOpGroup.GetOperationDef() ); _usedDefinitions.insert( axOpDef.GetAUID() ); AxDataDef axOpDefDDef( axOpDef.GetDataDef() ); if ( !axOpGroupDDef.IsDataDefOf( axOpDefDDef ) ) { _spResult->AddInformationResult( L"REQ_EP_162", L"OperationGroup in " + this->GetMobSlotName( _spEdgeMap, node ) + L" has data definition value \"" + axOpGroupDDef.GetName() + L"\" and references OperationDefinition \"" + axOpDef.GetName() + L"\" with data definition value \"" + axOpDefDDef.GetName() + L"\".", TestResult::FAIL ); } //Continue checking even if this node failed. Need to record AUIDs of //data definitions in use. return true; } void EPDefinitionVisitor::CheckForUnusedOperationDefinitions() { //Remove all used OperationDefinitions from the registered set. set<aafUID_t>::const_iterator sIter; for ( sIter = _usedDefinitions.begin(); sIter != _usedDefinitions.end(); sIter++ ) { _registeredDefinitions.erase( *sIter ); } //Present a warning for every unused OperationDefinition. map<aafUID_t, AxString>::const_iterator mIter; for ( mIter = _registeredDefinitions.begin(); mIter != _registeredDefinitions.end(); mIter++ ) { _spResult->AddInformationResult( L"REQ_EP_162", L"OperationDefinition \"" + mIter->second + L"\" is not referenced.", TestResult::WARN ); } } shared_ptr<DetailLevelTestResult> EPDefinitionVisitor::GetResult() { return _spResult; } } // end of namespace aafanalyzer --- NEW FILE: EPHeaderVisitor.h --- //=---------------------------------------------------------------------= // // $Id$ // // The contents of this file are subject to the AAF SDK Public // Source License Agreement (the "License"); You may not use this file // except in compliance with the License. The License is available in // AAFSDKPSL.TXT, or you may obtain a copy of the License from the AAF // Association or its successor. // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See // the License for the specific language governing rights and limitations // under the License. // // The Original Code of this file is Copyright 1998-2004, Licensor of the // AAF Association. // //=---------------------------------------------------------------------= #ifndef __EPHeaderVisitor_h_ #define __EPHeaderVisitor_h_ //AAF Analyzer Base files #include <TypedVisitor.h> #include <AAFTypedObjNode.h> //Ax files #include <AxTypes.h> namespace aafanalyzer { using namespace boost; class DetailLevelTestResult; class EPHeaderVisitor : public TypedVisitor { public: EPHeaderVisitor( wostream& log ); virtual ~EPHeaderVisitor(); virtual bool PreOrderVisit( AAFTypedObjNode<IAAFHeader>& node ); shared_ptr<DetailLevelTestResult> GetResult(); private: wostream& _log; shared_ptr<DetailLevelTestResult> _spResult; // prohibited EPHeaderVisitor(); EPHeaderVisitor( const EPHeaderVisitor& ); EPHeaderVisitor& operator=( const EPHeaderVisitor& ); }; } // end of namespace diskstream #endif /*__EPHeaderVisitor_h_*/ Index: EPAnnotationTest.cpp =================================================================== RCS file: /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/EditProtocolTestImpl/EPAnnotationTest.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** EPAnnotationTest.cpp 24 Nov 2005 17:10:47 -0000 1.1 --- EPAnnotationTest.cpp 30 Nov 2005 16:49:09 -0000 1.2 *************** *** 80,83 **** --- 80,85 ---- dfs.TraverseDown( spVisitor, GetTestGraph()->GetRootNode() ); + spVisitor->CheckForTaggedValueDefinitions(); + spVisitor->CheckForKLVValueDefinitions(); spResult->AppendSubtestResult( spVisitor->GetResult() ); *************** *** 121,124 **** --- 123,128 ---- spReqIds->push_back(L"REQ_EP_149"); //CommentMarker in Essence Tracks. spReqIds->push_back(L"REQ_EP_150"); //CommentMarker in EventMob Slots. + spReqIds->push_back(L"REQ_EP_151"); //TaggedValues registered. + spReqIds->push_back(L"REQ_EP_152"); //KLVData registered. return TestInfo(L"EPAnnotationTest", spReqIds); } Index: EPAnnotationVisitor.cpp =================================================================== RCS file: /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/EditProtocolTestImpl/EPAnnotationVisitor.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** EPAnnotationVisitor.cpp 24 Nov 2005 17:10:47 -0000 1.1 --- EPAnnotationVisitor.cpp 30 Nov 2005 16:49:09 -0000 1.2 *************** *** 30,33 **** --- 30,36 ---- #include <AxComponent.h> #include <AxEx.h> + #include <AxTaggedValue.h> + #include <AxKLVData.h> + #include <AxDefObject.h> //AAF files *************** *** 525,528 **** --- 528,571 ---- } + /* + * + * TaggedValue/KLVData/Definitions + * + */ + + bool EPAnnotationVisitor::PreOrderVisit( AAFTypedObjNode<IAAFTaggedValue>& node ) + { + AxTaggedValue axTaggedVal( node.GetAAFObjectOfType() ); + _taggedValueNames.insert( axTaggedVal.GetName() ); + return false; + } + + bool EPAnnotationVisitor::PreOrderVisit( AAFTypedObjNode<IAAFKLVData>& node ) + { + AxKLVData axKLVData( node.GetAAFObjectOfType() ); + _klvDataKeys.insert( axKLVData.GetKey() ); + return false; + } + + bool EPAnnotationVisitor::PreOrderVisit( AAFTypedObjNode<IAAFTaggedValueDefinition>& node ) + { + AxTaggedValueDef axTaggedValDef( node.GetAAFObjectOfType() ); + _taggedValueDefs.insert( axTaggedValDef.GetName() ); + return false; + } + + bool EPAnnotationVisitor::PreOrderVisit( AAFTypedObjNode<IAAFKLVDataDefinition>& node ) + { + AxKLVDataDef axKLVDataDef( node.GetAAFObjectOfType() ); + _klvDataDefs.insert( axKLVDataDef.GetAUID() ); + return false; + } + + /* + * + * Helper Functions + * + */ + bool EPAnnotationVisitor::PopStacks() *************** *** 532,535 **** --- 575,629 ---- } + /* + * + * Check Functions + * + */ + void EPAnnotationVisitor::CheckForTaggedValueDefinitions() + { + //Remove all registered TaggedValues from the registered set. + set<AxString>::const_iterator dIter; + for ( dIter = _taggedValueDefs.begin(); dIter != _taggedValueDefs.end(); dIter++ ) + { + _taggedValueNames.erase( *dIter ); + } + + //Fail for every unregistered TaggedValue. + set<AxString>::const_iterator uIter; + for ( uIter = _taggedValueNames.begin(); uIter != _taggedValueNames.end(); uIter++ ) + { + _spResult->AddInformationResult( + L"REQ_EP_151", + L"TaggedValue \"" + *uIter + L"\" is not documented in the dictionary.", + TestResult::FAIL ); + } + } + + void EPAnnotationVisitor::CheckForKLVValueDefinitions() + { + //Remove all registered TaggedValues from the registered set. + set<aafUID_t>::const_iterator dIter; + for ( dIter = _klvDataDefs.begin(); dIter != _klvDataDefs.end(); dIter++ ) + { + _klvDataKeys.erase( *dIter ); + } + + //Fail for every unregistered TaggedValue. + set<aafUID_t>::const_iterator uIter; + for ( uIter = _klvDataKeys.begin(); uIter != _klvDataKeys.end(); uIter++ ) + { + _spResult->AddInformationResult( + L"REQ_EP_152", + L"KLVData with key " + AxStringUtil::uid2Str(*uIter) + L" is not documented in the dictionary.", + TestResult::FAIL ); + } + } + + /* + * + * Accessors + * + */ + shared_ptr<DetailLevelTestResult> EPAnnotationVisitor::GetResult() { Index: EPAnnotationVisitor.h =================================================================== RCS file: /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/EditProtocolTestImpl/EPAnnotationVisitor.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** EPAnnotationVisitor.h 24 Nov 2005 17:10:47 -0000 1.1 --- EPAnnotationVisitor.h 30 Nov 2005 16:49:09 -0000 1.2 *************** *** 28,31 **** --- 28,32 ---- //STL files #include <stack> + #include <set> class AxComponent; *************** *** 68,71 **** --- 69,77 ---- virtual bool PreOrderVisit( AAFTypedObjNode<IAAFSelector>& node ); + virtual bool PreOrderVisit( AAFTypedObjNode<IAAFTaggedValue>& node ); + virtual bool PreOrderVisit( AAFTypedObjNode<IAAFKLVData>& node ); + virtual bool PreOrderVisit( AAFTypedObjNode<IAAFTaggedValueDefinition>& node ); + virtual bool PreOrderVisit( AAFTypedObjNode<IAAFKLVDataDefinition>& node ); + virtual bool PreOrderVisit( EPTypedObjNode<IAAFTimelineMobSlot, EPAudioTrack>& node ); virtual bool PreOrderVisit( EPTypedObjNode<IAAFTimelineMobSlot, EPVideoTrack>& node ); *************** *** 121,124 **** --- 127,132 ---- shared_ptr<DetailLevelTestResult> GetResult(); + void CheckForTaggedValueDefinitions(); + void CheckForKLVValueDefinitions(); private: *************** *** 132,135 **** --- 140,148 ---- stack<bool> _isParentMobSlot; + set<AxString> _taggedValueNames; + set<AxString> _taggedValueDefs; + set<aafUID_t> _klvDataKeys; + set<aafUID_t> _klvDataDefs; + bool PopStacks(); Index: EPEffectTest.cpp =================================================================== RCS file: /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/EditProtocolTestImpl/EPEffectTest.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** EPEffectTest.cpp 21 Nov 2005 15:29:49 -0000 1.1 --- EPEffectTest.cpp 30 Nov 2005 16:49:09 -0000 1.2 *************** *** 139,142 **** --- 139,144 ---- spReqIds->push_back(L"REQ_EP_244"); //Single-Parameter Mono Audio Dissolve in Transition. spReqIds->push_back(L"REQ_EP_247"); //Two-Parameter Audio Dissolve in Transition. + spReqIds->push_back(L"REQ_EP_248"); //Two-Parameter Mono Audio Dissolve Input Length. + spReqIds->push_back(L"REQ_EP_249"); //Two-Parameter Mono Audio Dissolve Input Length. return TestInfo(L"EPEffectTest", spReqIds); } --- NEW FILE: EPHeaderVisitor.cpp --- //=---------------------------------------------------------------------= // // $Id$ // // The contents of this file are subject to the AAF SDK Public // Source License Agreement (the "License"); You may not use this file // except in compliance with the License. The License is available in // AAFSDKPSL.TXT, or you may obtain a copy of the License from the AAF // Association or its successor. // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See // the License for the specific language governing rights and limitations // under the License. // // The Original Code of this file is Copyright 1998-2004, Licensor of the // AAF Association. // //=---------------------------------------------------------------------= //Edit Protocol Test files #include "EPHeaderVisitor.h" #include "EPHeaderTest.h" //Test/Result files #include <DetailLevelTestResult.h> #include <TestRegistry.h> //Requirement files #include <RequirementRegistry.h> //Ax files #include <AxHeader.h> #include <AAFResult.h> #include <AAFOPDefs.h> namespace { using namespace aafanalyzer; } // end of namespace //====================================================================== namespace aafanalyzer { using namespace boost; EPHeaderVisitor::EPHeaderVisitor( wostream& log ) : _log(log), _spResult( new DetailLevelTestResult( L"Edit Protocol Header Visitor", L"Visit the AAF File Header and verify it meets the Edit Protocol requirements.", L"", // explain L"", // DOCREF REQUIRED TestResult::PASS, TestRegistry::GetInstance().GetRequirementsForTest( EPHeaderTest::GetTestInfo().GetName() ) ) ) {} EPHeaderVisitor::~EPHeaderVisitor() {} bool EPHeaderVisitor::PreOrderVisit( AAFTypedObjNode<IAAFHeader>& node ) { AxHeader axHeader( node.GetAAFObjectOfType() ); try { aafUID_t opPattern = axHeader.GetOperationalPattern(); if ( opPattern != kAAFOPDef_EditProtocol ) { _spResult->SetRequirementStatus( TestResult::FAIL, RequirementRegistry::GetInstance().GetRequirement( L"REQ_EP_255" ) ); _spResult->SetExplanation( L"Header::OperationalPattern property is not equal to OpEditProtocol." ); _spResult->SetResult( TestResult::FAIL ); } } catch ( const AxExHResult& ex ) { if ( ex.getHResult() == AAFRESULT_PROP_NOT_PRESENT ) { _spResult->SetRequirementStatus( TestResult::FAIL, RequirementRegistry::GetInstance().GetRequirement( L"REQ_EP_255" ) ); _spResult->SetExplanation( L"Header::OperationalPattern property is not present." ); _spResult->SetResult( TestResult::FAIL ); } else { throw ex; } } return false; } shared_ptr<DetailLevelTestResult> EPHeaderVisitor::GetResult() { return _spResult; } } // end of namespace aafanalyzer Index: EPTrackContentsVisitor.h =================================================================== RCS file: /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/EditProtocolTestImpl/EPTrackContentsVisitor.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** EPTrackContentsVisitor.h 14 Nov 2005 19:46:50 -0000 1.4 --- EPTrackContentsVisitor.h 30 Nov 2005 16:49:09 -0000 1.5 *************** *** 32,38 **** #include <AAFClassDefUIDs.h> - //STL files - #include <set> - //Not in the aafanalyzer namespace so the forward declaration must be made //outside of the namespace. --- 32,35 ---- --- NEW FILE: EPDefinitionTest.cpp --- //=---------------------------------------------------------------------= // // $Id$ // // The contents of this file are subject to the AAF SDK Public // Source License Agreement (the "License"); You may not use this file // except in compliance with the License. The License is available in // AAFSDKPSL.TXT, or you may obtain a copy of the License from the AAF // Association or its successor. // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See // the License for the specific language governing rights and limitations // under the License. // // The Original Code of this file is Copyright 1998-2004, Licensor of the // AAF Association. // //=---------------------------------------------------------------------= //Edit Protocol Test files #include "EPDefinitionTest.h" #include "EPDefinitionVisitor.h" //Test/Result files #include <TestLevelTestResult.h> #include <DetailLevelTestResult.h> //AAF Analyzer Base files #include <TestGraph.h> //Requirement files #include <Requirement.h> //Analyzer Base files #include <DepthFirstTraversal.h> //STL files #include <vector> namespace { const wchar_t* TEST_NAME = L"Edit Protocol Definition Test"; const wchar_t* TEST_DESC = L"Verify the use of DataDefinition objects throught the file."; } // end of namespace //====================================================================== namespace aafanalyzer { using namespace std; EPDefinitionTest::EPDefinitionTest( wostream& log, shared_ptr<const TestGraph> spGraph ) : Test( log, GetTestInfo() ) { SetTestGraph(spGraph); } EPDefinitionTest::~EPDefinitionTest() {} shared_ptr<TestLevelTestResult> EPDefinitionTest::Execute() { shared_ptr<EPDefinitionVisitor> spVisitor(new EPDefinitionVisitor( GetOutStream(), GetTestGraph()->GetEdgeMap() ) ); DepthFirstTraversal dfs(GetTestGraph()->GetEdgeMap(), GetTestGraph()->GetRootNode()); const shared_ptr<const Test> me = this->shared_from_this(); Requirement::RequirementMapSP spMyReqs(new Requirement::RequirementMap(this->GetCoveredRequirements())); shared_ptr<TestLevelTestResult> spResult( new TestLevelTestResult(TEST_NAME, TEST_DESC, L"-", // explain L"-", // DOCREF REQUIRED TestResult::PASS, me, spMyReqs ) ); dfs.TraverseDown( spVisitor, GetTestGraph()->GetRootNode() ); spVisitor->CheckForUnusedOperationDefinitions(); spResult->AppendSubtestResult( spVisitor->GetResult() ); spResult->SetResult( spResult->GetAggregateResult() ); if ( spResult->GetResult() == TestResult::FAIL ) { spResult->SetExplanation(L"Test Failed - See \"Edit Protocol Track Contents Visitor\" Visitor for details"); } //Update the requirement status based upon the status of the requirements in //the visitor. for (int reqLevel = TestResult::PASS; reqLevel <= TestResult::FAIL; reqLevel++) { Requirement::RequirementMap childReqs = spVisitor->GetResult()->GetRequirements( (TestResult::Result)reqLevel ); Requirement::RequirementMap::const_iterator iter; for( iter = childReqs.begin(); iter != childReqs.end(); ++iter ) { spResult->SetRequirementStatus( (TestResult::Result)reqLevel, iter->second ); } } return spResult; } AxString EPDefinitionTest::GetName() const { return TEST_NAME; } AxString EPDefinitionTest::GetDescription() const { return TEST_DESC; } const TestInfo EPDefinitionTest::GetTestInfo() { shared_ptr<vector<AxString> > spReqIds(new vector<AxString>); spReqIds->push_back(L"REQ_EP_162"); //Operation Group/Definition return TestInfo(L"EPDefinitionTest", spReqIds); } } // end of namespace aafanalyzer Index: EPEffectVisitor.cpp =================================================================== RCS file: /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/EditProtocolTestImpl/EPEffectVisitor.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** EPEffectVisitor.cpp 21 Nov 2005 15:29:49 -0000 1.1 --- EPEffectVisitor.cpp 30 Nov 2005 16:49:09 -0000 1.2 *************** *** 27,34 **** --- 27,38 ---- #include <TestRegistry.h> + //Analyzer Base files + #include <DepthFirstTraversal.h> + //Ax files #include <AxComponent.h> #include <AxParameter.h> #include <AxEx.h> + #include <AxIterator.h> //AAF files *************** *** 42,45 **** --- 46,135 ---- namespace { + using namespace aafanalyzer; + + class TransitionInputVisitor : public TypedVisitor + { + public: + TransitionInputVisitor() + {} + + ~TransitionInputVisitor() + {} + + bool PreOrderVisit( AAFTypedObjNode<IAAFTransition>& node ) + { + //The traversal started at an operation group and should have + //proceeded here immediatley. Record the address of this transition + //object and continue up to the parent sequence. + _spIaafTransition = AxQueryInterface<IAAFTransition, IAAFComponent>( node.GetAAFObjectOfType() ); + return true; + } + + bool PreOrderVisit( AAFTypedObjNode<IAAFSequence>& node ) + { + AxSequence axSequence( node.GetAAFObjectOfType() ); + + //The graph may not return edges in order, therefore, we need to + //loop through and find the correct transition by address. Use + //this method as an iterator does not guarantee an orderd traversal. + aafUInt32 index = 0; + aafUInt32 numComponents = axSequence.CountComponents(); + + for ( ; index < numComponents; index++ ) + { + if ( axSequence.GetComponentAt( index ) == _spIaafTransition ) + { + break; + } + } + + if ( index >= numComponents ) + { + //A fatal error has occured as the transition was not found. + //Throw an exception. + } + + //Get the preceeding and following components + if ( index > 0 ) + { + _spPreceeding = axSequence.GetComponentAt( index - 1); + } + if ( index < numComponents - 1 ) + { + _spFollowing = axSequence.GetComponentAt( index + 1); + } + + //Traversal should start at an operation group, traverse up to + //the parent transition and then up to this sequence. There is + //no need to traverse any further. + return false; + } + + IAAFComponentSP GetPreceedingComponent() + { + return _spPreceeding; + } + + IAAFComponentSP GetFollowingComponent() + { + return _spFollowing; + } + + IAAFTransitionSP GetTransition() + { + return AxQueryInterface<IAAFComponent, IAAFTransition>( _spIaafTransition ); + } + + private: + + IAAFComponentSP _spIaafTransition; + IAAFComponentSP _spPreceeding; + IAAFComponentSP _spFollowing; + + // prohibited + TransitionInputVisitor( const TransitionInputVisitor& ); + TransitionInputVisitor& operator=( const TransitionInputVisitor& ); + }; + } // end of namespace *************** *** 293,296 **** --- 383,517 ---- bool testPassed = true; testPassed = VeirfyTransitionRequirement( node, true, L"REQ_EP_247", EPTwoParameterAudioDissolveEffect::GetName() ); + + AxString name = EPTwoParameterAudioDissolveEffect::GetName() + L" in " + this->GetMobSlotName( _spEdgeMap, node ); + if ( !testPassed ) + { + //Parent is not a transition, so, we can't check REQ_EP_249. + AxString explain = name + L" is not within a Transition object."; + _spResult->AddInformationResult( L"REQ_EP_248", explain, TestResult::FAIL ); + _spResult->AddInformationResult( L"REQ_EP_249", explain, TestResult::FAIL ); + } + else + { + shared_ptr<TransitionInputVisitor> spVisitor( new TransitionInputVisitor() ); + shared_ptr<Node> spNode( node.GetSharedPointerToNode() ); + DepthFirstTraversal dft( _spEdgeMap, spNode ); + dft.TraverseUp( spVisitor ); + + bool incomingPassed = true; + bool outgoingPassed = true; + + aafLength_t transitionLen; + AxTransition axTransition( spVisitor->GetTransition() ); + try + { + transitionLen = axTransition.GetLength(); + } + catch ( const AxExHResult& ex ) + { + if ( ex.getHResult() == AAFRESULT_PROP_NOT_PRESENT ) + { + AxString explain = L"Transition object of " + name + + L" does not have a length property."; + _spResult->AddInformationResult( L"REQ_EP_248", explain, TestResult::FAIL ); + _spResult->AddInformationResult( L"REQ_EP_249", explain, TestResult::FAIL ); + incomingPassed = false; + outgoingPassed = false; + } + else + { + throw ex; + } + } + + if ( spVisitor->GetFollowingComponent() ) + { + aafLength_t incomingLen; + AxComponent incoming( spVisitor->GetFollowingComponent() ); + try + { + incomingLen = incoming.GetLength(); + } + catch ( const AxExHResult& ex ) + { + if ( ex.getHResult() == AAFRESULT_PROP_NOT_PRESENT ) + { + AxString explain = L"Incoming segment of " + name + + L" does not have a length property."; + _spResult->AddInformationResult( L"REQ_EP_248", explain, TestResult::FAIL ); + _spResult->AddInformationResult( L"REQ_EP_249", explain, TestResult::FAIL ); + incomingPassed = false; + } + else + { + throw ex; + } + } + + if ( incomingPassed && incomingLen < transitionLen ) + { + wstringstream ss; + + ss << name << L" has an incoming segment with length = " + << incomingLen << L" and a transition with length = " + << transitionLen << L"."; + _spResult->AddInformationResult( L"REQ_EP_248", ss.str().c_str(), TestResult::FAIL ); + _spResult->AddInformationResult( L"REQ_EP_249", ss.str().c_str(), TestResult::FAIL ); + incomingPassed = false; + } + } + else + { + AxString explain = name + L" does not have an incoming segment."; + _spResult->AddInformationResult( L"REQ_EP_248", explain, TestResult::FAIL ); + _spResult->AddInformationResult( L"REQ_EP_249", explain, TestResult::FAIL ); + testPassed = false; + } + + if ( spVisitor->GetPreceedingComponent() ) + { + aafLength_t outgoingLen; + AxComponent outgoing( spVisitor->GetPreceedingComponent() ); + try + { + outgoingLen = outgoing.GetLength(); + } + catch ( const AxExHResult& ex ) + { + if ( ex.getHResult() == AAFRESULT_PROP_NOT_PRESENT ) + { + AxString explain = L"Outgoing segment of " + name + + L" does not have a length property."; + _spResult->AddInformationResult( L"REQ_EP_249", explain, TestResult::FAIL ); + outgoingPassed = false; + } + else + { + throw ex; + } + } + + if ( outgoingPassed && outgoingLen < transitionLen ) + { + wstringstream ss; + + ss << name << L" has an outgoing segment with length = " + << outgoingLen << L" and a transition with length = " + << transitionLen << L"."; + _spResult->AddInformationResult( L"REQ_EP_249", ss.str().c_str(), TestResult::FAIL ); + outgoingPassed = false; + } + } + else + { + AxString explain = name + L" does not have an outgoing segment."; + _spResult->AddInformationResult( L"REQ_EP_249", explain, TestResult::FAIL ); + testPassed = false; + } + + testPassed = incomingPassed && outgoingPassed; + + } + _isParentTransition.push( false ); return testPassed; Index: EPEffectVisitor.h =================================================================== RCS file: /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/EditProtocolTestImpl/EPEffectVisitor.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** EPEffectVisitor.h 21 Nov 2005 15:29:49 -0000 1.1 --- EPEffectVisitor.h 30 Nov 2005 16:49:09 -0000 1.2 *************** *** 26,31 **** #include <EPTypedObjNode.h> - //Ax files - //STL files #include <stack> --- 26,29 ---- Index: EPMobDepPhase.h =================================================================== RCS file: /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/EditProtocolTestImpl/EPMobDepPhase.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** EPMobDepPhase.h 24 Nov 2005 17:10:47 -0000 1.8 --- EPMobDepPhase.h 30 Nov 2005 16:49:09 -0000 1.9 *************** *** 34,37 **** --- 34,40 ---- #include <EPEffectTest.h> #include <EPAnnotationTest.h> + #include <EPDefinitionTest.h> + #include <EPHeaderTest.h> + #include <EPParameterTest.h> //Test/Result files --- NEW FILE: EPDefinitionVisitor.h --- //=---------------------------------------------------------------------= // // $Id$ // // The contents of this file are subject to the AAF SDK Public // Source License Agreement (the "License"); You may not use this file // except in compliance with the License. The License is available in // AAFSDKPSL.TXT, or you may obtain a copy of the License from the AAF // Association or its successor. // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See // the License for the specific language governing rights and limitations // under the License. // // The Original Code of this file is Copyright 1998-2004, Licensor of the // AAF Association. // //=---------------------------------------------------------------------= #ifndef __EPDefinitionVisitor_h_ #define __EPDefinitionVisitor_h_ //Edit Protocol Analyzer Base files #include <EPTypedVisitor.h> #include <EPTypedObjNode.h> //Ax files #include <AxTypes.h> //STL files #include <set> #include <map> //Not in the aafanalyzer namespace so the forward declaration must be made //outside of the namespace. class AxClassDef; class AxMob; class AxMobSlot; namespace aafanalyzer { using namespace boost; class DetailLevelTestResult; class EPDefinitionVisitor : public EPTypedVisitor { public: EPDefinitionVisitor( wostream& log, shared_ptr<EdgeMap> spEdgeMap ); virtual ~EPDefinitionVisitor(); virtual bool PreOrderVisit( AAFTypedObjNode<IAAFOperationDef>& node ); virtual bool PreOrderVisit( AAFTypedObjNode<IAAFOperationGroup>& node ); void CheckForUnusedOperationDefinitions(); shared_ptr<DetailLevelTestResult> GetResult(); private: wostream& _log; shared_ptr<EdgeMap> _spEdgeMap; shared_ptr<DetailLevelTestResult> _spResult; set<aafUID_t> _usedDefinitions; map<aafUID_t, AxString> _registeredDefinitions; // prohibited EPDefinitionVisitor(); EPDefinitionVisitor( const EPDefinitionVisitor& ); EPDefinitionVisitor& operator=( const EPDefinitionVisitor& ); }; } // end of namespace diskstream #endif /*__EPDefinitionVisitor_h_*/ --- NEW FILE: EPDefinitionTest.h --- //=---------------------------------------------------------------------= // // $Id$ // // The contents of this file are subject to the AAF SDK Public // Source License Agreement (the "License"); You may not use this file // except in compliance with the License. The License is available in // AAFSDKPSL.TXT, or you may obtain a copy of the License from the AAF // Association or its successor. // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See // the License for the specific language governing rights and limitations // under the License. // // The Original Code of this file is Copyright 1998-2004, Licensor of the // AAF Association. // //=---------------------------------------------------------------------= #ifndef __EPDefinitionTest_h_ #define __EPDefinitionTest_h_ //Test/Result files #include <Test.h> //Ax files #include <AxTypes.h> namespace aafanalyzer { class TestLevelTestResult; using namespace boost; class EPDefinitionTest : public Test { public: EPDefinitionTest( wostream& log, shared_ptr<const TestGraph> spGraph ); virtual ~EPDefinitionTest(); virtual shared_ptr<TestLevelTestResult> Execute(); virtual AxString GetName() const; virtual AxString GetDescription() const; static const TestInfo GetTestInfo(); private: // prohibited EPDefinitionTest(); EPDefinitionTest( const EPDefinitionTest& ); EPDefinitionTest& operator=( const EPDefinitionTest& ); }; } // end of namespace diskstream #endif /* __EPDefinitionTest_h_*/ |