|
From: <ma...@us...> - 2010-03-02 12:43:40
|
Revision: 647
http://scstudio.svn.sourceforge.net/scstudio/?rev=647&view=rev
Author: madzin
Date: 2010-03-02 12:43:32 +0000 (Tue, 02 Mar 2010)
Log Message:
-----------
Fixs membership bugs with empty instances, adds new tests
Modified Paths:
--------------
trunk/src/membership/membership_alg.cpp
trunk/src/membership/membership_alg.h
trunk/tests/membership/CMakeLists.txt
Added Paths:
-----------
trunk/tests/membership/test_bmsc24_1.mpr
trunk/tests/membership/test_bmsc24_2.mpr
trunk/tests/membership/test_bmsc25_1.mpr
trunk/tests/membership/test_bmsc25_2.mpr
trunk/tests/membership/test_bmsc26_1.mpr
trunk/tests/membership/test_bmsc26_2.mpr
trunk/tests/membership/test_bmsc27.mpr
trunk/tests/membership/test_bmsc27_1.mpr
trunk/tests/membership/test_hmsc24.mpr
trunk/tests/membership/test_hmsc25.mpr
trunk/tests/membership/test_hmsc26.mpr
Modified: trunk/src/membership/membership_alg.cpp
===================================================================
--- trunk/src/membership/membership_alg.cpp 2010-03-02 10:50:56 UTC (rev 646)
+++ trunk/src/membership/membership_alg.cpp 2010-03-02 12:43:32 UTC (rev 647)
@@ -57,6 +57,14 @@
void set_identification(Event* node_e, Event* b_e);
+bool is_node_null(ReferenceNodePtr node);
+
+bool is_instance_null(InstancePtr instance);
+
+bool is_cor_area_null(CoregionAreaPtr cor);
+
+bool is_strict_area_null(StrictOrderAreaPtr strict);
+
/*
* Returns precondition list of the membership algorithm
*/
@@ -161,16 +169,14 @@
return true;
}
- std::cout << "false 01" << std::endl;
return false;
}
else
{
-
//TODO add this check to while cycle
//when deosn't exist empty path to EndNode
- if (b->is_null())
+ if (b->is_null() && !is_node_null(node))
return false;
//checks if this node with this configuration was checked
@@ -717,7 +723,12 @@
b_events = old_position->get_events();
if (!b_events.size() == 1)
- return false;
+ {
+ if(!is_instance_null(node_instance))
+ return false;
+ else
+ return true;
+ }
if (node_instance != NULL)
node_area = node_instance->get_first();
@@ -947,4 +958,77 @@
}
}
-}
\ No newline at end of file
+}
+
+bool is_node_null(ReferenceNodePtr node)
+{
+ MscPtr msc = node->get_msc();
+
+ BMscPtr bmsc = boost::dynamic_pointer_cast<BMsc> (msc);
+
+ if(bmsc == NULL)
+ {
+ std::cerr << "Internal Error: typecast failed" << std::endl;
+ return false;
+ }
+
+ InstancePtrList instances = bmsc->get_instances();
+ InstancePtrList::iterator it;
+
+ for(it = instances.begin(); it != instances.end(); it++)
+ {
+ if(!is_instance_null(*it))
+ return false;
+ }
+
+ return true;
+}
+
+bool is_instance_null(InstancePtr instance)
+{
+ EventAreaPtr area;
+ StrictOrderAreaPtr strict;
+ CoregionAreaPtr cor;
+
+ if(instance == NULL)
+ return true;
+
+ area = instance->get_first();
+
+ while(area != NULL)
+ {
+ strict = boost::dynamic_pointer_cast<StrictOrderArea>(area);
+
+ if(strict == NULL)
+ {
+ cor = boost::dynamic_pointer_cast<CoregionArea>(area);
+
+ if(cor != NULL)
+ if(!is_cor_area_null(cor))
+ return false;
+ }
+ else
+ if(!is_strict_area_null(strict))
+ return false;
+
+ area = area->get_next();
+ }
+
+ return true;
+}
+
+bool is_cor_area_null(CoregionAreaPtr cor)
+{
+ if(!cor->get_minimal_events().empty())
+ return false;
+
+ return true;
+}
+
+bool is_strict_area_null(StrictOrderAreaPtr strict)
+{
+ if(strict->get_first() != NULL)
+ return false;
+
+ return true;
+}
Modified: trunk/src/membership/membership_alg.h
===================================================================
--- trunk/src/membership/membership_alg.h 2010-03-02 10:50:56 UTC (rev 646)
+++ trunk/src/membership/membership_alg.h 2010-03-02 12:43:32 UTC (rev 647)
@@ -117,7 +117,8 @@
for(it=events.begin(); it!=events.end(); it++)
{
//osefovat to nepaci sa mi to porovnavanie
- if(*it == event) return *it;
+ if(*it == event)
+ return *it;
}
return NULL;
@@ -212,7 +213,6 @@
{
this->m_counter = 0;
-//dobrobit null
this->instance_list = instances;
InstancePtrList::iterator it;
EventAreaPtr area;
@@ -224,22 +224,16 @@
st_area = boost::dynamic_pointer_cast<StrictOrderArea>(area);
if(st_area != NULL)
- {
- PositionPtr pos = new Position((*it)->get_label(), st_area->get_first());
- positions.insert(pos);
-// positions.insert(new Position((*it)->get_label(), st_area->get_first()));
- }
+ positions.insert(new Position((*it)->get_label(), st_area->get_first()));
else
- {
-
- }
+ if((*it)->get_first())
+ std::cerr << "Error: Coregions in pattern bMSC are not supported" << std::endl;
}
}
- Configuration(ConfigurationPtr origin) //std::set<PositionPtr> positions)
+ Configuration(ConfigurationPtr origin)
{
this->m_counter = 0;
-// this->positions = positions;
InstancePtrList origin_inst = origin->get_instances();
this->instance_list.insert(instance_list.begin(), origin_inst.begin(), origin_inst.end());
@@ -252,7 +246,6 @@
{
this->positions.insert(new Position(*it));
}
-// this->positions.insert(origin_positions.begin(), origin_positions.end());
}
Modified: trunk/tests/membership/CMakeLists.txt
===================================================================
--- trunk/tests/membership/CMakeLists.txt 2010-03-02 10:50:56 UTC (rev 646)
+++ trunk/tests/membership/CMakeLists.txt 2010-03-02 12:43:32 UTC (rev 647)
@@ -138,4 +138,21 @@
ADD_TEST(membership_test-58 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_hmsc23.mpr ${CMAKE_CURRENT_SOURCE_DIR}/test_bmsc23_4.mpr 1)
+#empty MSC
+ADD_TEST(membership_test-59 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_hmsc24.mpr ${CMAKE_CURRENT_SOURCE_DIR}/test_bmsc24_1.mpr 1)
+ADD_TEST(membership_test-60 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_hmsc24.mpr ${CMAKE_CURRENT_SOURCE_DIR}/test_bmsc24_2.mpr 1)
+
+ADD_TEST(membership_test-61 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_hmsc25.mpr ${CMAKE_CURRENT_SOURCE_DIR}/test_bmsc25_1.mpr 1)
+
+ADD_TEST(membership_test-62 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_hmsc25.mpr ${CMAKE_CURRENT_SOURCE_DIR}/test_bmsc25_2.mpr 1)
+
+#not empty
+ADD_TEST(membership_test-63 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_hmsc26.mpr ${CMAKE_CURRENT_SOURCE_DIR}/test_bmsc26_1.mpr 1)
+
+ADD_TEST(membership_test-64 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_hmsc26.mpr ${CMAKE_CURRENT_SOURCE_DIR}/test_bmsc26_2.mpr 1)
+
+#bMSC x bMSC with coregion
+ADD_TEST(membership_test-65 ${MEMBERSHIP_TEST_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test_bmsc27.mpr ${CMAKE_CURRENT_SOURCE_DIR}/test_bmsc27_1.mpr 1)
+
+
Added: trunk/tests/membership/test_bmsc24_1.mpr
===================================================================
--- trunk/tests/membership/test_bmsc24_1.mpr (rev 0)
+++ trunk/tests/membership/test_bmsc24_1.mpr 2010-03-02 12:43:32 UTC (rev 647)
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+msc Test;
+A:instance;
+endinstance;
+
+B:instance;
+endinstance;
+endmsc;
Added: trunk/tests/membership/test_bmsc24_2.mpr
===================================================================
--- trunk/tests/membership/test_bmsc24_2.mpr (rev 0)
+++ trunk/tests/membership/test_bmsc24_2.mpr 2010-03-02 12:43:32 UTC (rev 647)
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+msc Test;
+endmsc;
Added: trunk/tests/membership/test_bmsc25_1.mpr
===================================================================
--- trunk/tests/membership/test_bmsc25_1.mpr (rev 0)
+++ trunk/tests/membership/test_bmsc25_1.mpr 2010-03-02 12:43:32 UTC (rev 647)
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+msc Test;
+A:instance;
+endinstance;
+
+B:instance;
+endinstance;
+endmsc;
Added: trunk/tests/membership/test_bmsc25_2.mpr
===================================================================
--- trunk/tests/membership/test_bmsc25_2.mpr (rev 0)
+++ trunk/tests/membership/test_bmsc25_2.mpr 2010-03-02 12:43:32 UTC (rev 647)
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+msc Test;
+endmsc;
Added: trunk/tests/membership/test_bmsc26_1.mpr
===================================================================
--- trunk/tests/membership/test_bmsc26_1.mpr (rev 0)
+++ trunk/tests/membership/test_bmsc26_1.mpr 2010-03-02 12:43:32 UTC (rev 647)
@@ -0,0 +1,15 @@
+mscdocument Drawing5;
+msc Page_1;
+inst Server;
+inst Client;
+Server: instance;
+in Http_request,0 from Client;
+out object,1 to Client;
+in result,2 from Client;
+endinstance;
+Client: instance;
+out Http_request,0 to Server;
+in object,1 from Server;
+out result,2 to Server;
+endinstance;
+endmsc;
Added: trunk/tests/membership/test_bmsc26_2.mpr
===================================================================
--- trunk/tests/membership/test_bmsc26_2.mpr (rev 0)
+++ trunk/tests/membership/test_bmsc26_2.mpr 2010-03-02 12:43:32 UTC (rev 647)
@@ -0,0 +1,19 @@
+mscdocument Drawing5;
+msc Page_1;
+inst Server;
+inst Client;
+Server: instance;
+in Http_request,0 from Client;
+out object,1 to Client;
+in result,2 from Client;
+out Fin_ack,0 to Client;
+in ack,1 from Client;
+endinstance;
+Client: instance;
+out Http_request,0 to Server;
+in object,1 from Server;
+out result,2 to Server;
+in Fin_ack,0 from Server;
+out ack,1 to Server;
+endinstance;
+endmsc;
Added: trunk/tests/membership/test_bmsc27.mpr
===================================================================
--- trunk/tests/membership/test_bmsc27.mpr (rev 0)
+++ trunk/tests/membership/test_bmsc27.mpr 2010-03-02 12:43:32 UTC (rev 647)
@@ -0,0 +1,17 @@
+mscdocument Drawing1;
+msc NAME;
+inst Server;
+inst Client;
+Server: instance;
+in Http_request,0 from Client;
+concurrent;
+out object,1 to Client;
+in result,2 from Client;
+endconcurrent;
+endinstance;
+Client: instance;
+out Http_request,0 to Server;
+in object,1 from Server;
+out result,2 to Server;
+endinstance;
+endmsc;
Added: trunk/tests/membership/test_bmsc27_1.mpr
===================================================================
--- trunk/tests/membership/test_bmsc27_1.mpr (rev 0)
+++ trunk/tests/membership/test_bmsc27_1.mpr 2010-03-02 12:43:32 UTC (rev 647)
@@ -0,0 +1,15 @@
+mscdocument Drawing3;
+msc Page_1;
+inst Server;
+inst Client;
+Server: instance;
+in Http_request,0 from Client;
+out object,1 to Client;
+in result,2 from Client;
+endinstance;
+Client: instance;
+out Http_request,0 to Server;
+in object,1 from Server;
+out result,2 to Server;
+endinstance;
+endmsc;
Added: trunk/tests/membership/test_hmsc24.mpr
===================================================================
--- trunk/tests/membership/test_hmsc24.mpr (rev 0)
+++ trunk/tests/membership/test_hmsc24.mpr 2010-03-02 12:43:32 UTC (rev 647)
@@ -0,0 +1,13 @@
+msc Page_1;
+initial connect L0;
+L0: reference Test connect L1;
+L1: final;
+endmsc;
+
+msc Test;
+A:instance;
+endinstance;
+
+B:instance;
+endinstance;
+endmsc;
Added: trunk/tests/membership/test_hmsc25.mpr
===================================================================
--- trunk/tests/membership/test_hmsc25.mpr (rev 0)
+++ trunk/tests/membership/test_hmsc25.mpr 2010-03-02 12:43:32 UTC (rev 647)
@@ -0,0 +1,15 @@
+msc Page_1;
+initial connect L0;
+L0: reference Test connect L1;
+L1: final;
+endmsc;
+
+msc Test;
+A:instance;
+endinstance;
+
+B:instance;
+concurrent;
+endconcurrent;
+endinstance;
+endmsc;
Added: trunk/tests/membership/test_hmsc26.mpr
===================================================================
--- trunk/tests/membership/test_hmsc26.mpr (rev 0)
+++ trunk/tests/membership/test_hmsc26.mpr 2010-03-02 12:43:32 UTC (rev 647)
@@ -0,0 +1,44 @@
+mscdocument Drawing1;
+msc nothing;
+inst Server;
+inst Client;
+Server: instance;
+endinstance;
+Client: instance;
+endinstance;
+endmsc;
+msc Page_1;
+initial connect L0;
+L0: reference NAME connect L1, L2;
+L1: reference sufix connect L3;
+L2: reference nothing connect L3;
+L3: final;
+endmsc;
+msc NAME;
+inst Server;
+inst Client;
+Server: instance;
+in Http_request,0 from Client;
+concurrent;
+out object,1 to Client;
+in result,2 from Client;
+endconcurrent;
+endinstance;
+Client: instance;
+out Http_request,0 to Server;
+in object,1 from Server;
+out result,2 to Server;
+endinstance;
+endmsc;
+msc sufix;
+inst Server;
+inst Client;
+Server: instance;
+out Fin_ack,0 to Client;
+in ack,1 from Client;
+endinstance;
+Client: instance;
+in Fin_ack,0 from Server;
+out ack,1 to Server;
+endinstance;
+endmsc;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|