|
From: <ma...@us...> - 2011-07-19 09:17:47
|
Revision: 1156
http://scstudio.svn.sourceforge.net/scstudio/?rev=1156&view=rev
Author: madzin
Date: 2011-07-19 09:17:41 +0000 (Tue, 19 Jul 2011)
Log Message:
-----------
Modify Find Flow output messages. Add new tests
Modified Paths:
--------------
trunk/src/membership/membership_alg.cpp
trunk/src/view/visio/addon/document.cpp
trunk/tests/membership/flow10_neg.vsd
trunk/tests/membership/flow12_neg.vsd
trunk/tests/membership/flow14_pos.vsd
trunk/tests/membership/flow15_pos.vsd
trunk/tests/membership/flow19_pos.vsd
trunk/tests/membership/flow20_pos.vsd
trunk/tests/membership/spec11.vsd
Added Paths:
-----------
trunk/tests/membership/flow21_neg.vsd
trunk/tests/membership/flow22_neg.vsd
trunk/tests/membership/spec12.vsd
Modified: trunk/src/membership/membership_alg.cpp
===================================================================
--- trunk/src/membership/membership_alg.cpp 2011-07-18 21:59:19 UTC (rev 1155)
+++ trunk/src/membership/membership_alg.cpp 2011-07-19 09:17:41 UTC (rev 1156)
@@ -101,8 +101,11 @@
return NULL;
}
- print_report(RS_NOTICE, L"Flow \"" + bmsc->get_label() + L"\" meets the specification.");
+ std::wstring msg = L"Flow \"" + bmsc->get_label() + L"\" meets the specification.";
+ std::vector<MscPtr> result_vec;
+ messages.push_back(std::make_pair(msg, result_vec));
+
delete c;
return result;
}
@@ -130,7 +133,7 @@
instances_name += instances[i];
}
- print_report(RS_ERROR, L"Flow \"" + bmsc->get_label() + L"\" does not meet the specification on instances:" + instances_name);
+ print_report(RS_ERROR, L"Flow \"" + bmsc_f->get_label() + L"\" does not meet the specification on instances:" + instances_name);
delete c;
return NULL;
@@ -158,7 +161,7 @@
if(c->get_result()->get_corupted_intervals_size().first != 0)
{
- std::wstring msg = L"Flow \"" + bmsc->get_label() + L"\" does not satisfy time constraints of the specification. ";
+ std::wstring msg = L"Flow \"" + bmsc_f->get_label() + L"\" does not satisfy time constraints of the specification. ";
msg += L"For more information (red intervals are not satisfied, blue intervals are partialy satisfied): ";
std::vector<MscPtr> result_vec;
@@ -172,7 +175,7 @@
if(c->get_result()->get_corupted_intervals_size().second != 0)
{
- std::wstring msg = L"Flow \"" + bmsc->get_label() + L" does not satisfy time constraints of the specification. Some intervals are only partialy satisfied. ";
+ std::wstring msg = L"Flow \"" + bmsc_f->get_label() + L" does not satisfy time constraints of the specification. Some intervals are only partialy satisfied. ";
msg += L"For more information: ";
std::vector<MscPtr> result_vec;
@@ -184,7 +187,7 @@
return NULL;
}
- print_report(RS_NOTICE, L"Flow \"" + bmsc->get_label() + L"\" meets the specification.");
+ print_report(RS_NOTICE, L"Flow \"" + bmsc_f->get_label() + L"\" meets the specification.");
delete c;
return NULL;
@@ -202,20 +205,50 @@
MscPtr temp;
bool cover = false;
std::vector<std::pair<std::wstring, std::vector<MscPtr> > > messages;
+ HMscPtr hmsc = boost::dynamic_pointer_cast<HMsc>(msc);
+ BMscPtr bmsc = boost::dynamic_pointer_cast<BMsc>(msc);
+ BMscGraphDuplicator hmsc_duplicator;
+ BMscDuplicator bmsc_duplicator;
+ MscPtr dup_msc = NULL;
+ std::vector<MscPtr> msc_for_cover;
+
for(unsigned int i = 0; i < bmscs.size(); i++)
{
temp = NULL;
- temp = find_flow(msc, bmscs[i], instances, messages);
+ dup_msc = NULL;
+ if(hmsc == NULL && bmsc != NULL)
+ dup_msc = bmsc_duplicator.duplicate(bmsc);
+
+ if(hmsc != NULL && bmsc == NULL)
+ dup_msc = hmsc_duplicator.duplicate(hmsc);
+
+ if(dup_msc == NULL)
+ throw std::runtime_error("Error: unexpected behaviour.");
+
+ temp = find_flow(dup_msc, bmscs[i], instances, messages);
+
if(temp != NULL)
+ {
+ msc_for_cover.push_back(bmscs[i]);
cover = true;
+ }
}
if(cover)
{
+ std::vector<std::pair<std::wstring, std::vector<MscPtr> > > msg;
+
+ dup_msc = hmsc_duplicator.duplicate(hmsc);
+
+ for(unsigned int i = 0; i < msc_for_cover.size(); i++)
+ {
+ find_flow(dup_msc, msc_for_cover[i], instances, msg);
+ }
+
std::vector<MscPtr> msc_cover;
- msc_cover.push_back(msc);
+ msc_cover.push_back(dup_msc);
if(bmscs.size() > 1)
messages.push_back(std::make_pair(L"Flows coverage of the specification.", msc_cover));
@@ -243,7 +276,7 @@
//TODO it is necessary to copy MSC because of path returning.
//dup_hmsc should be MSC graph. Due to that duplicatior throws exception during copying time intervals, membership workes just with MSC graphs.
dup_hmsc = hmsc;
-// dup_hmsc = duplicator.duplicate(hmsc);
+ //dup_hmsc = duplicator.duplicate(hmsc);
c->set_hmsc(dup_hmsc);
@@ -1129,8 +1162,12 @@
//in case the node is reference,
//this increase the value of attribute membership_counter
//membership counter - store amount of node memberships (occurrences) in the flow
- if(dynamic_cast<ReferenceNode*>(node.get()) != NULL)
+ if(dynamic_cast<ReferenceNode*>(node.get()) != NULL &&
+ c->get_result()->get_corupted_intervals_size().first == 0 &&
+ c->get_result()->get_corupted_intervals_size().second == 0)
+ {
node->set_attribute("membership_counter" , node->get_attribute("membership_counter", 0)+1);
+ }
successor = dynamic_cast<SuccessorNode*>(node.get());
Modified: trunk/src/view/visio/addon/document.cpp
===================================================================
--- trunk/src/view/visio/addon/document.cpp 2011-07-18 21:59:19 UTC (rev 1155)
+++ trunk/src/view/visio/addon/document.cpp 2011-07-19 09:17:41 UTC (rev 1156)
@@ -1148,7 +1148,10 @@
for(result_it = result_messages.begin(); result_it != result_messages.end(); result_it++)
{
- m_reportView->Print(RS_NOTICE, result_it->first, result_it->second.front());
+ if(result_it->second.empty())
+ m_reportView->Print(RS_NOTICE, result_it->first);
+ else
+ m_reportView->Print(RS_NOTICE, result_it->first, result_it->second.front());
}
return VAORC_SUCCESS;
Modified: trunk/tests/membership/flow10_neg.vsd
===================================================================
(Binary files differ)
Modified: trunk/tests/membership/flow12_neg.vsd
===================================================================
(Binary files differ)
Modified: trunk/tests/membership/flow14_pos.vsd
===================================================================
(Binary files differ)
Modified: trunk/tests/membership/flow15_pos.vsd
===================================================================
(Binary files differ)
Modified: trunk/tests/membership/flow19_pos.vsd
===================================================================
(Binary files differ)
Modified: trunk/tests/membership/flow20_pos.vsd
===================================================================
(Binary files differ)
Added: trunk/tests/membership/flow21_neg.vsd
===================================================================
(Binary files differ)
Property changes on: trunk/tests/membership/flow21_neg.vsd
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/tests/membership/flow22_neg.vsd
===================================================================
(Binary files differ)
Property changes on: trunk/tests/membership/flow22_neg.vsd
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Modified: trunk/tests/membership/spec11.vsd
===================================================================
(Binary files differ)
Added: trunk/tests/membership/spec12.vsd
===================================================================
(Binary files differ)
Property changes on: trunk/tests/membership/spec12.vsd
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|