From: James P. T. <jpt...@us...> - 2008-05-18 19:33:59
|
Update of /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/TestPhaseLib In directory sc8-pr-cvs11.sourceforge.net:/tmp/cvs-serv26279/Utilities/AAFAnalyzer/TestPhaseLib Modified Files: DetailLevelTestResult.cpp DetailLevelTestResult.h TestLevelTestResult.cpp TestLevelTestResult.h TestRegistry.cpp TestRegistry.h TestResult.cpp TestResult.h Log Message: Commit in preparation for AAFAnalyzer integration into registratin and compliance web site. These are the last fiew analyzer changes completed last October but held back in developer private repository until now. Resolve tracker items 1388192 Regression Testing Speed Ratio, 1388257 Unreferenced OperationDefinition, 388300 Enhancement to TestResult for GUI, 1388330 Better Tests Needed, 1388326 StaticMobSlots in the Derivation Chain, 1388262 Regression Testing Data Definition Values, resolve incorrect reporting if REQ_EP_163/164 in effects test. Index: TestRegistry.cpp =================================================================== RCS file: /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/TestPhaseLib/TestRegistry.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** TestRegistry.cpp 16 Sep 2007 15:04:43 -0000 1.6 --- TestRegistry.cpp 18 May 2008 18:37:01 -0000 1.7 *************** *** 49,54 **** TestRegistry* TestRegistry::_pTestRegistry = NULL; ! TestRegistry::TestRegistry() : ! _useUnsafeRequirements( false ) { } --- 49,53 ---- TestRegistry* TestRegistry::_pTestRegistry = NULL; ! TestRegistry::TestRegistry() { } *************** *** 76,153 **** void TestRegistry::Register( const TestInfo& info ) { ! Requirement::RequirementMapSP coveredByTest(new Requirement::RequirementMap()); ! const wstring name = info.GetName(); ! if ( _testSet.find( name ) == _testSet.end() ) ! { ! RequirementRegistry& reqRegistry = RequirementRegistry::GetInstance(); ! //Get all requirements matching the list of requirement ids. An ! //exception is thrown if the requirement is not registered. ! const shared_ptr<const vector<wstring> > spRequirements = info.GetRequirementIds(); ! vector<wstring>::const_iterator iter; ! ! for ( iter = spRequirements->begin(); iter != spRequirements->end(); iter++) ! { ! wstring id = *iter; ! ! try ! { ! shared_ptr<const Requirement> req(reqRegistry.GetRequirement(id)); ! ! if ( coveredByTest->find(id) == coveredByTest->end() ) ! { ! (*coveredByTest)[id] = req; ! } ! if ( _coveredRequirements.find(id) == _coveredRequirements.end() ) ! { ! _coveredRequirements[id] = req; ! } ! } ! catch ( RequirementRegistryException ex ) ! { ! //If unsafe requirement checking is turned on, it is ok for a ! //test to use a requirement that does not exist. To do this, ! //create a new Requirement and store it in the necessary maps, ! //however, do not register it because it should not be reported ! //by the Requirement Registry as a loaded requirement. ! if ( _useUnsafeRequirements ) ! { ! shared_ptr<const Requirement> unsafeReq( ! new Requirement(id, ! Requirement::FILE, ! L"file", ! Requirement::ADHOC, ! L"adhoc", ! L"", // action ! L"Unsafe Requirement", // name ! L"This Requirement ID does not exist in the requirements file", // desc ! L"", // annotation ! L"", // note ! L"None", // document ! L"N/A", // document version ! L"N/A" ) ); // document section ! if ( coveredByTest->find(id) == coveredByTest->end() ) ! { ! (*coveredByTest)[id] = unsafeReq; ! } ! if ( _coveredRequirements.find(id) == _coveredRequirements.end() ) ! { ! _coveredRequirements[id] = unsafeReq; ! } ! } ! else ! { ! throw ex; ! } ! } ! } ! _testSet[name] = coveredByTest; ! } ! else { ! wstring msg; ! msg = L"Test " + name + L" is already registered."; ! throw TestRegistryException( msg.c_str() ); } ! } --- 75,111 ---- void TestRegistry::Register( const TestInfo& info ) { ! Requirement::RequirementMapSP coveredByTest(new Requirement::RequirementMap()); ! const wstring name = info.GetName(); ! if ( _testSet.find( name ) == _testSet.end() ) ! { ! RequirementRegistry& reqRegistry = RequirementRegistry::GetInstance(); ! //Get all requirements matching the list of requirement ids. An ! //exception is thrown if the requirement is not registered. ! const shared_ptr<const vector<wstring> > spRequirements = info.GetRequirementIds(); ! vector<wstring>::const_iterator iter; ! ! for ( iter = spRequirements->begin(); iter != spRequirements->end(); iter++) { ! wstring id = *iter; ! ! shared_ptr<const Requirement> req(reqRegistry.GetRequirement(id)); ! ! if ( coveredByTest->find(id) == coveredByTest->end() ) ! { ! (*coveredByTest)[id] = req; ! } ! if ( _coveredRequirements.find(id) == _coveredRequirements.end() ) ! { ! _coveredRequirements[id] = req; ! } } ! _testSet[name] = coveredByTest; ! } ! else ! { ! wstring msg; ! msg = L"Test " + name + L" is already registered."; ! throw TestRegistryException( msg.c_str() ); ! } } *************** *** 217,229 **** } - void TestRegistry::UseUnsafeRequirements() - { - _useUnsafeRequirements = true; - } - - bool TestRegistry::IsUnsafeRequirements() - { - return _useUnsafeRequirements; - } - } // end of namespace diskstream --- 175,177 ---- Index: DetailLevelTestResult.h =================================================================== RCS file: /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/TestPhaseLib/DetailLevelTestResult.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** DetailLevelTestResult.h 21 Aug 2007 14:08:34 -0000 1.5 --- DetailLevelTestResult.h 18 May 2008 18:37:01 -0000 1.6 *************** *** 25,28 **** --- 25,31 ---- #include "LowLevelTestResult.h" + //Base files + #include <Node.h> + namespace aafanalyzer { *************** *** 53,69 **** // requirment. Call must identify the requirment, provide a result, // and an explanation. DetailLevelTestResult( const shared_ptr<const Test> associatedTest, const wstring& explain, const wstring& reqId, ! Result result ); ! ! // Call provides result name and description rather than using the ! // requirements name and description. ! DetailLevelTestResult( const shared_ptr<const Test> associatedTest, ! const wstring& name, ! const wstring& desc, ! const wstring& explain, ! const wstring& reqId, ! Result result ); virtual ~DetailLevelTestResult(); --- 56,66 ---- // requirment. Call must identify the requirment, provide a result, // and an explanation. + // Pass a null spNode if this result cannot be associated with a + // single node. DetailLevelTestResult( const shared_ptr<const Test> associatedTest, const wstring& explain, const wstring& reqId, ! Result result, ! shared_ptr<Node> _spNode ); virtual ~DetailLevelTestResult(); *************** *** 79,82 **** --- 76,83 ---- virtual const enum ResultLevel GetResultType() const; + // Returns ~0 if this result is not associated with any particular + // node. + shared_ptr<Node> DetailLevelTestResult::GetAssociatedNode(); + private: *************** *** 92,95 **** --- 93,99 ---- // in sets in the TestResult base class. This is less obtuse. const wstring& _reqId; + + // The node associated with the AAF object that caused the error. + shared_ptr<Node> _spNode; }; Index: TestResult.h =================================================================== RCS file: /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/TestPhaseLib/TestResult.h,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** TestResult.h 16 Sep 2007 15:04:47 -0000 1.10 --- TestResult.h 18 May 2008 18:37:09 -0000 1.11 *************** *** 50,54 **** // (minimum value) should always be UNDEFINED, and the rightmost // (maxium value) should alwasy be FAIL. ! enum Result {UNDEFINED, COVERED, NOTED, PASS, WARN, FAIL}; // The specialized type of this result. --- 50,54 ---- // (minimum value) should always be UNDEFINED, and the rightmost // (maxium value) should alwasy be FAIL. ! enum Result {UNDEFINED, COVERED, NOTED, PASS, INFO, WARN, FAIL}; // The specialized type of this result. *************** *** 83,89 **** const Requirement::RequirementMap& GetRequirements( Result type ) const; - // Get the kind of specialized result this is. - virtual const enum ResultLevel GetResultType() const =0; - // Add an abitrary detail to a result. Any number of details can // be added. --- 83,86 ---- *************** *** 105,108 **** --- 102,108 ---- bool HasResult( const wstring& reqId, Result result ) const; + // Get the kind of specialized result this is. + virtual const enum ResultLevel GetResultType() const =0; + protected: *************** *** 127,131 **** // SetResult interface. void ProtectedSetResult( Result result ); ! // Clear/Add/Remove - used to implement consolidate. // Used to implement consolidate. --- 127,131 ---- // SetResult interface. void ProtectedSetResult( Result result ); ! // Clear/Add/Remove - used to implement consolidate. // Used to implement consolidate. *************** *** 165,168 **** --- 165,169 ---- const Requirement::RequirementMapSP _spNotedRequirements; const Requirement::RequirementMapSP _spPassedRequirements; + const Requirement::RequirementMapSP _spInfoRequirements; const Requirement::RequirementMapSP _spWarnedRequirements; const Requirement::RequirementMapSP _spFailedRequirements; Index: TestRegistry.h =================================================================== RCS file: /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/TestPhaseLib/TestRegistry.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** TestRegistry.h 2 Nov 2005 20:55:38 -0000 1.5 --- TestRegistry.h 18 May 2008 18:37:01 -0000 1.6 *************** *** 54,59 **** const Requirement::RequirementMap& GetRequirementCoverage() const; bool VerifyTestResultCoverage(const shared_ptr<TopLevelTestResult> results) const; - void UseUnsafeRequirements(); - bool IsUnsafeRequirements(); private: --- 54,57 ---- *************** *** 67,71 **** Map _testSet; Requirement::RequirementMap _coveredRequirements; - bool _useUnsafeRequirements; // prohibited --- 65,68 ---- Index: TestLevelTestResult.cpp =================================================================== RCS file: /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/TestPhaseLib/TestLevelTestResult.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** TestLevelTestResult.cpp 16 Sep 2007 15:04:36 -0000 1.5 --- TestLevelTestResult.cpp 18 May 2008 18:37:01 -0000 1.6 *************** *** 80,96 **** } shared_ptr<DetailLevelTestResult> TestLevelTestResult::AddSingleResult( const wstring& reqId, Result result, ! const wstring& resultName, ! const wstring& resultDesc, ! const wstring& resultExplain ) { shared_ptr<DetailLevelTestResult> spResult( new DetailLevelTestResult( this->GetAssociatedTest(), ! resultName, ! resultDesc, ! resultExplain, reqId, ! result ) ); this->AddSubtestResult( spResult ); --- 80,95 ---- } + shared_ptr<DetailLevelTestResult> TestLevelTestResult::AddSingleResult( const wstring& reqId, + const wstring& explain, Result result, ! Node& node ) { shared_ptr<DetailLevelTestResult> spResult( new DetailLevelTestResult( this->GetAssociatedTest(), ! explain, reqId, ! result, ! node.GetSharedPointerToNode() ) ); this->AddSubtestResult( spResult ); *************** *** 99,105 **** } ! shared_ptr<DetailLevelTestResult> TestLevelTestResult::AddSingleResult( const wstring& reqId, ! const wstring& explain, ! Result result ) { shared_ptr<DetailLevelTestResult> --- 98,104 ---- } ! shared_ptr<DetailLevelTestResult> TestLevelTestResult::AddUnassociatedSingleResult( const wstring& reqId, ! const wstring& explain, ! Result result ) { shared_ptr<DetailLevelTestResult> *************** *** 107,111 **** explain, reqId, ! result ) ); this->AddSubtestResult( spResult ); --- 106,111 ---- explain, reqId, ! result, ! shared_ptr<Node>() ) ); this->AddSubtestResult( spResult ); Index: TestResult.cpp =================================================================== RCS file: /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/TestPhaseLib/TestResult.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** TestResult.cpp 16 Sep 2007 15:04:45 -0000 1.10 --- TestResult.cpp 18 May 2008 18:37:08 -0000 1.11 *************** *** 68,71 **** --- 68,72 ---- _spNotedRequirements( new Requirement::RequirementMap() ), _spPassedRequirements( new Requirement::RequirementMap() ), + _spInfoRequirements( new Requirement::RequirementMap() ), _spWarnedRequirements( new Requirement::RequirementMap() ), _spFailedRequirements( new Requirement::RequirementMap() ), *************** *** 84,87 **** --- 85,89 ---- _spNotedRequirements( new Requirement::RequirementMap() ), _spPassedRequirements( new Requirement::RequirementMap() ), + _spInfoRequirements( new Requirement::RequirementMap() ), _spWarnedRequirements( new Requirement::RequirementMap() ), _spFailedRequirements( new Requirement::RequirementMap() ), *************** *** 149,152 **** --- 151,157 ---- return *_spPassedRequirements; break; + case INFO: + return *_spInfoRequirements; + break; case WARN: return *_spWarnedRequirements; *************** *** 181,206 **** bool TestResult::ContainsRequirement( const wstring& id, Result& outContainedIn ) { ! if ( _spCoveredRequirements->find(id) != _spCoveredRequirements->end() ) { ! outContainedIn = COVERED; ! return true; } ! else if ( _spNotedRequirements->find(id) != _spNotedRequirements->end() ) { ! outContainedIn = NOTED; ! return true; } ! else if ( _spPassedRequirements->find(id) != _spPassedRequirements->end() ) { ! outContainedIn = PASS; ! return true; ! } else if ( _spWarnedRequirements->find(id) != _spWarnedRequirements->end() ) { ! outContainedIn = WARN; ! return true; ! } else if ( _spFailedRequirements->find(id) != _spFailedRequirements->end() ) { ! outContainedIn = FAIL; ! return true; ! } else if ( _spUndefinedRequirements->find(id) != _spUndefinedRequirements->end() ) { ! outContainedIn = UNDEFINED; ! return true; ! } else { ! return false; } } --- 186,227 ---- bool TestResult::ContainsRequirement( const wstring& id, Result& outContainedIn ) { ! if ( _spCoveredRequirements->find(id) != _spCoveredRequirements->end() ) ! { ! outContainedIn = COVERED; ! return true; } ! else if ( _spNotedRequirements->find(id) != _spNotedRequirements->end() ) ! { ! outContainedIn = NOTED; ! return true; } ! else if ( _spPassedRequirements->find(id) != _spPassedRequirements->end() ) ! { ! outContainedIn = PASS; ! return true; ! } ! else if ( _spInfoRequirements->find(id) != _spInfoRequirements->end() ) ! { ! outContainedIn = INFO; ! return true; ! } ! else if ( _spWarnedRequirements->find(id) != _spWarnedRequirements->end() ) ! { ! outContainedIn = WARN; ! return true; ! } ! else if ( _spFailedRequirements->find(id) != _spFailedRequirements->end() ) ! { ! outContainedIn = FAIL; ! return true; ! } ! else if ( _spUndefinedRequirements->find(id) != _spUndefinedRequirements->end() ) ! { ! outContainedIn = UNDEFINED; ! return true; ! } ! else ! { ! return false; } } *************** *** 216,219 **** --- 237,242 ---- case WARN: return _spWarnedRequirements->find(id) != _spWarnedRequirements->end(); + case INFO: + return _spInfoRequirements->find(id) != _spInfoRequirements->end(); case PASS: return _spPassedRequirements->find(id) != _spPassedRequirements->end(); *************** *** 270,273 **** --- 293,299 ---- return _spPassedRequirements; break; + case INFO: + return _spInfoRequirements; + break; case WARN: return _spWarnedRequirements; *************** *** 361,364 **** --- 387,391 ---- DumpRequirementSet( L"noted", prefix, os, _spNotedRequirements ); DumpRequirementSet( L"pass", prefix, os, _spPassedRequirements ); + DumpRequirementSet( L"info", prefix, os, _spInfoRequirements ); DumpRequirementSet( L"warn", prefix, os, _spWarnedRequirements ); DumpRequirementSet( L"fail", prefix, os, _spFailedRequirements ); Index: DetailLevelTestResult.cpp =================================================================== RCS file: /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/TestPhaseLib/DetailLevelTestResult.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** DetailLevelTestResult.cpp 23 Sep 2007 14:13:49 -0000 1.7 --- DetailLevelTestResult.cpp 18 May 2008 18:37:01 -0000 1.8 *************** *** 49,55 **** const wstring& explain, const wstring& reqId, ! Result result ) : LowLevelTestResult( associatedTest, L"", L"", explain ), ! _reqId( reqId ) { shared_ptr<const Requirement> spReq = GetRequirement(); --- 49,57 ---- const wstring& explain, const wstring& reqId, ! Result result, ! shared_ptr<Node> spNode ) : LowLevelTestResult( associatedTest, L"", L"", explain ), ! _reqId( reqId ), ! _spNode( spNode ) { shared_ptr<const Requirement> spReq = GetRequirement(); *************** *** 59,74 **** } - DetailLevelTestResult::DetailLevelTestResult( const shared_ptr<const Test> associatedTest, - const wstring& name, - const wstring& desc, - const wstring& explain, - const wstring& reqId, - Result result ) - : LowLevelTestResult( associatedTest, name, desc, explain ), - _reqId( reqId ) - { - SetResult( _reqId, result ); - } - DetailLevelTestResult::~DetailLevelTestResult() {} --- 61,64 ---- *************** *** 150,152 **** --- 140,147 ---- } + shared_ptr<Node> DetailLevelTestResult::GetAssociatedNode() + { + return _spNode; + } + } // end of namespace diskstream Index: TestLevelTestResult.h =================================================================== RCS file: /cvsroot/aaf/AAF/Utilities/AAFAnalyzer/TestPhaseLib/TestLevelTestResult.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** TestLevelTestResult.h 23 Sep 2007 14:13:49 -0000 1.5 --- TestLevelTestResult.h 18 May 2008 18:37:01 -0000 1.6 *************** *** 25,28 **** --- 25,31 ---- #include "LowLevelTestResult.h" + //Base + #include <Node.h> + namespace aafanalyzer { *************** *** 60,79 **** const enum ResultLevel GetResultType() const; ! // Add a single result for one requirement. ! // DEPRECATED - use the version below that doesn't take result ! // name/desc arguments. ! shared_ptr<DetailLevelTestResult> AddSingleResult( const wstring& reqId, ! Result result, ! const wstring& resultName, ! const wstring& resultDesc, ! const wstring& resultExplain ); ! - // Add a single result for one requirement. Result name - // and description are those of the requirment. Call must explain - // the result. shared_ptr<DetailLevelTestResult> AddSingleResult( const wstring& reqId, const wstring& resultExplain, ! Result result ); private: --- 63,79 ---- const enum ResultLevel GetResultType() const; ! // Add a single result for one requirement. Result name and ! // description are those of the requirment. Caller must explain the ! // result. shared_ptr<DetailLevelTestResult> AddSingleResult( const wstring& reqId, const wstring& resultExplain, ! Result result, ! Node& node ); ! ! // Same as above, but not associated with any particular node. ! shared_ptr<DetailLevelTestResult> AddUnassociatedSingleResult( const wstring& reqId, ! const wstring& resultExplain, ! Result result ); private: |