diff --git a/comsdk/__pycache__/__init__.cpython-37.pyc b/comsdk/__pycache__/__init__.cpython-37.pyc
index 96476a13055c55d719c8c31d35daf1711a85dd9c..f9404d7651af084fa1904c30f3f2177d136df94d 100644
Binary files a/comsdk/__pycache__/__init__.cpython-37.pyc and b/comsdk/__pycache__/__init__.cpython-37.pyc differ
diff --git a/comsdk/__pycache__/comaux.cpython-37.pyc b/comsdk/__pycache__/comaux.cpython-37.pyc
index 0c6775c195a6cce1053443d0442fcdaa1f49b837..4542f51de64a0b77ce8e354a8bd8e1474687a982 100644
Binary files a/comsdk/__pycache__/comaux.cpython-37.pyc and b/comsdk/__pycache__/comaux.cpython-37.pyc differ
diff --git a/comsdk/__pycache__/communication.cpython-37.pyc b/comsdk/__pycache__/communication.cpython-37.pyc
index c03ec2656593016cdc752838fcee87e63f2e99b2..4d27064eec3908f8312c68db10e8c3e042a0505e 100644
Binary files a/comsdk/__pycache__/communication.cpython-37.pyc and b/comsdk/__pycache__/communication.cpython-37.pyc differ
diff --git a/comsdk/__pycache__/edge.cpython-37.pyc b/comsdk/__pycache__/edge.cpython-37.pyc
index 5ef6f8e54f5a9de2851a1e4170c2b62b58ac2f70..9fc9d7bc448ba0ff4d69489503373000e4f03660 100644
Binary files a/comsdk/__pycache__/edge.cpython-37.pyc and b/comsdk/__pycache__/edge.cpython-37.pyc differ
diff --git a/comsdk/__pycache__/graph.cpython-37.pyc b/comsdk/__pycache__/graph.cpython-37.pyc
index 2441707a68e91ef56b30367f30a1cb038ad97157..d26ff4d7ad63377bfc86d9c384514df6ae83d68d 100644
Binary files a/comsdk/__pycache__/graph.cpython-37.pyc and b/comsdk/__pycache__/graph.cpython-37.pyc differ
diff --git a/comsdk/__pycache__/parser.cpython-37.pyc b/comsdk/__pycache__/parser.cpython-37.pyc
index eed4fd4745737b0d02925f701e79609309e2e0dd..2af755407ceeea4d4b4325fc67d619ef32e898c6 100644
Binary files a/comsdk/__pycache__/parser.cpython-37.pyc and b/comsdk/__pycache__/parser.cpython-37.pyc differ
diff --git a/comsdk/parser.py b/comsdk/parser.py
index 8a90bdcd4f77505bda689bbc026f704d5cc742f6..f264ac0cfa19d097e9cbae3440504c26f124a2ab 100644
--- a/comsdk/parser.py
+++ b/comsdk/parser.py
@@ -361,7 +361,7 @@ def print_graph(cur_state, entities, bushes):
                 # print(cur_state.name, cur_state.selector)
                 if cur_state.selector not in toloadsel:
                     toloadsel.append(cur_state.selector)
-                body+="else {\n"+ "\tSEL_{} = {}();//{}\n".format(cur_state.name, cur_state.selector, cur_state.selector.comment )+"}\n"
+                body+="else {\n"+ "\tSEL_{} = {}(&data);//{}\n".format(cur_state.name, cur_state.selector, cur_state.selector.comment )+"}\n"
             else:
                 body+="else {\n\tfor (int seli = 0;"+" seli < {};".format(len(cur_state.transfers))+" seli++)\n"+"\t\tSEL_{}[seli]=true;".format(cur_state.name)+"\n}\n"
         for i, br in enumerate(cur_b.branches):
@@ -441,12 +441,12 @@ class _Bush():
             if edge.pred_f.name != "":
                 if edge.pred_f not in toloadpred:
                     toloadpred.append(edge.pred_f)
-                res+="\tcheck_pred({}(data), \"{}\");".format(edge.pred_f, edge.pred_f)
+                res+="\tcheck_pred({}(&data), \"{}\");".format(edge.pred_f, edge.pred_f)
                 res+="//{}\n".format(edge.pred_f.comment) if edge.pred_f.comment != "" else "\n"
             if edge.morph_f.name != "":
                 if edge.morph_f not in toloadmorph:
                     toloadmorph.append(edge.morph_f)
-                res+="\t{}(data);".format(edge.morph_f)
+                res+="\t{}(&data);".format(edge.morph_f)
                 res+="//{}\n".format(edge.morph_f.comment) if edge.morph_f.comment != "" else "\n"
         return res, toloadpred, toloadmorph
 
diff --git a/cpp/run.sh b/cpp/run.sh
index 727e0f22eb360ed1dcba6afd460462b3f1791dda..f7d40f63826e8e5463530cdc240ed4dec5c50d38 100755
--- a/cpp/run.sh
+++ b/cpp/run.sh
@@ -1,6 +1,9 @@
-g++ -c -fPIC  printers.cpp -o printers.o -I./dev ; g++ printers.o -shared -o libprinters.so; 
-if g++ ./template.cpp -o template.out -I./dev ./dev/core/anymap.cpp  -ldl; then
-./template.out;
+g++ -c -fPIC ./dev/core/anymap.cpp -o anymap.o -I./dev;
+g++ -c -fPIC  tests.cpp -o tests.o -I./dev;
+# g++ -c -fPIC ./dev/iniparser/iniparser.cpp -o iniparser.o -I./dev;
+g++ tests.o anymap.o -shared -o libtest.so; rm tests.o anymap.o;
+if g++ $1 -o graph.out -I./dev ./dev/core/anymap.cpp -ldl; then
+./graph.out;
 else 
  echo "Not Compiled!";
 fi;
\ No newline at end of file
diff --git a/cpp/template.cpp b/cpp/template.cpp
index a2f4e6ccd77a4a6ae38898036392f0853a5961cd..9aa7bba0e17baef44092c3cbd0a008521d8c7b75 100644
--- a/cpp/template.cpp
+++ b/cpp/template.cpp
@@ -2,23 +2,23 @@
 #include <anymap.h>
 #include <iniparser.h>
 
-typedef std::function<int(com::Anymap)> IntFunc;
-typedef std::function<bool(com::Anymap)> BoolFunc;
-typedef std::function<bool*(com::Anymap)> BoolArrFunc;  
+typedef std::function<int(com::Anymap*)> IntFunc;
+typedef std::function<bool(com::Anymap*)> BoolFunc;
+typedef std::function<bool*(com::Anymap*)> BoolArrFunc;  
 
 IntFunc LoadEntry(std::string lib, std::string func) {
     DllHandle handler;
-    return com::lib::loadFunction<int (com::Anymap), DllHandle>(lib.c_str(), func.c_str(), handler);
+    return com::lib::loadFunction<int (com::Anymap*), DllHandle>(lib.c_str(), func.c_str(), handler);
 }
 
 BoolFunc LoadPred(std::string lib, std::string func) {
     DllHandle handler;
-    return com::lib::loadFunction<int (com::Anymap), DllHandle>(lib.c_str(), func.c_str(), handler);
+    return com::lib::loadFunction<int (com::Anymap*), DllHandle>(lib.c_str(), func.c_str(), handler);
 }
 
 BoolArrFunc LoadSelector(std::string lib, std::string func){
     DllHandle handler;
-    return com::lib::loadFunction<bool* (com::Anymap), DllHandle>(lib.c_str(), func.c_str(), handler);
+    return com::lib::loadFunction<bool* (com::Anymap*), DllHandle>(lib.c_str(), func.c_str(), handler);
 }
 
 void check_pred(bool predval, std::string predname) {
@@ -30,13 +30,7 @@ void check_pred(bool predval, std::string predname) {
 
 int main(int argc, char const *argv[])
 {   
-    com::ini::INIParser parser(argv[1]);
-    if(!parser.isLoaded()){
-        std::cerr<<"Cannot find file:"<<argv[1]<<std::endl;
-        return -1;
-    }
     auto data = com::Anymap();
-    parser.loadINIDataToAnyMap(data, {"sld", "tsl", "bc"}, enu_LoadMode::lmRecursive);
     //Predicates
 % for pred in preds:
     auto ${pred} = LoadPred("${pred.module}", "${pred.name}"); 
diff --git a/main.py b/main.py
deleted file mode 100644
index ce2c84780e68fc0748bb4cfa45e56a1f1fb9c796..0000000000000000000000000000000000000000
--- a/main.py
+++ /dev/null
@@ -1,23 +0,0 @@
-from comsdk.graph import *
-from comsdk.edge import *
-from comsdk.communication import *
-from test_funcs.simplest import *
-
-
-data= {"a":1}
-
-pred = Func(func=dummy_predicate)
-morph = Func(func=increment_a_edge)
-s_1 = State('s_1')
-s_2 = State('s_2')
-s_3 = State('s_3')
-s_1.connect_to(s_2, edge=Edge(pred, morph))
-s_2.connect_to(s_3, edge=Edge(pred, morph))
-sub_s_1 = State('sub_s_1')
-sub_s_2 = State('sub_s_2')
-sub_s_1.connect_to(sub_s_2, edge=Edge(pred, morph))
-s_2.replace_with_graph(Graph(sub_s_1, sub_s_2))
-gr = Graph(s_1, s_3)
-
-gr.init_graph()
-gr.run(data)
\ No newline at end of file
diff --git a/output.cpp b/output.cpp
deleted file mode 100644
index 18236ae9ae9aff8a4a41c1b7e61e3700b4ee22ed..0000000000000000000000000000000000000000
--- a/output.cpp
+++ /dev/null
@@ -1,141 +0,0 @@
-#include <libtools.h>
-#include <anymap.h>
-#include <iniparser.h>
-
-typedef std::function<int(com::Anymap)> IntFunc;
-typedef std::function<bool(com::Anymap)> BoolFunc;
-typedef std::function<bool*(com::Anymap)> BoolArrFunc;  
-
-IntFunc LoadEntry(std::string lib, std::string func) {
-    DllHandle handler;
-    return com::lib::loadFunction<int (com::Anymap), DllHandle>(lib.c_str(), func.c_str(), handler);
-}
-
-BoolFunc LoadPred(std::string lib, std::string func) {
-    DllHandle handler;
-    return com::lib::loadFunction<int (com::Anymap), DllHandle>(lib.c_str(), func.c_str(), handler);
-}
-
-BoolArrFunc LoadSelector(std::string lib, std::string func){
-    DllHandle handler;
-    return com::lib::loadFunction<bool* (com::Anymap), DllHandle>(lib.c_str(), func.c_str(), handler);
-}
-
-void check_pred(bool predval, std::string predname) {
-    if predval{
-        std::cout<<"Predicate"<<predname<<"returned FALSE!"<<std::endl;
-        exit(-1)
-    }   
-}
-
-int main(int argc, char const *argv[])
-{   
-    com::ini::INIParser parser(argv[1]);
-    if(!parser.isLoaded()){
-        std::cerr<<"Cannot find file:"<<argv[1]<<std::endl;
-        return -1;
-    }
-    com::Anymap data();
-    parser.loadINIDataToAnyMap(data);
-    //Predicates
-    auto test_funcs.simplest_positiveness_predicate = LoadPred("test_funcs.simplest", "positiveness_predicate"); 
-    auto libcomsdk_pass_predicate = LoadPred("libcomsdk", "pass_predicate"); 
-    //Entry functions
-    auto test_funcs.simplest_increment_a_edge = LoadEntry("test_funcs.simplest", "increment_a_edge"); 
-    auto libgcdfes_pso_swarm_init = LoadEntry("libgcdfes", "pso_swarm_init"); 
-    auto libgcdfes_pso_agent_init = LoadEntry("libgcdfes", "pso_agent_init"); 
-    auto libgcdfes_pso_task_data_reinit = LoadEntry("libgcdfes", "pso_task_data_reinit"); 
-    auto libgcdfes_pso_hom_agent_postproc = LoadEntry("libgcdfes", "pso_hom_agent_postproc"); 
-    auto libgcdfes_pso_agent_reinit = LoadEntry("libgcdfes", "pso_agent_reinit"); 
-    auto libgcdfes_pso_swarm_analysing = LoadEntry("libgcdfes", "pso_swarm_analysing"); 
-    auto libgcdfes_pso_swarm_reinit = LoadEntry("libgcdfes", "pso_swarm_reinit"); 
-    auto libcomsdk_pass_processor = LoadEntry("libcomsdk", "pass_processor"); 
-    //Selectors
-    auto libgcdfes_check_pso_agent_reinit = LoadSelector("libgcdfes", "check_pso_agent_reinit"); 
-    auto libgcdfes_check_pso_swarm_reinit = LoadSelector("libgcdfes", "check_pso_swarm_reinit"); 
-    //Branch tokens
-    bool* SEL___BEGIN__ = new bool[1];
-    std::fill_n(SEL___BEGIN__, 1, true);
-    bool* SEL_gcdhom_inverted_model_pso1_S_4 = new bool[1];
-    std::fill_n(SEL_gcdhom_inverted_model_pso1_S_4, 1, false);
-    bool* SEL_gcdhom_inverted_model_pso1_S_6 = new bool[2];
-    std::fill_n(SEL_gcdhom_inverted_model_pso1_S_6, 2, false);
-    bool* SEL_gcdhom_inverted_model_pso1_S_7 = new bool[2];
-    std::fill_n(SEL_gcdhom_inverted_model_pso1_S_7, 2, false);
-    bool* SEL___END__ = new bool[0];
-    std::fill_n(SEL___END__, 0, false);
-
-if (SEL___BEGIN__[0]){
-	//root graph
-	check_pred(test_funcs.simplest_positiveness_predicate(data), "test_funcs.simplest_positiveness_predicate");
-	test_funcs.simplest_increment_a_edge(data);
-	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
-	libgcdfes_pso_swarm_init(data);//Инициализация метода роя частиц.
-	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
-	libgcdfes_pso_swarm_init(data);//Инициализация роя частиц.
-	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
-	libgcdfes_pso_agent_init(data);//Инициализация отдельной частицы в рамках метода роя частиц.
-}
-gcdhom_inverted_model_pso1_S_4:
-if (!(false || SEL___BEGIN__[0] || SEL_gcdhom_inverted_model_pso1_S_6[0] || SEL_gcdhom_inverted_model_pso1_S_7[0] )){
-	for (int seli = 0; seli < 1; seli++)
-		SEL_gcdhom_inverted_model_pso1_S_4[seli]=false;
-}else {
-	for (int seli = 0; seli < 1; seli++)
-		SEL_gcdhom_inverted_model_pso1_S_4[seli]=true;
-}
-if (SEL_gcdhom_inverted_model_pso1_S_4[0]){
-	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
-	libgcdfes_pso_task_data_reinit(data);//Реинициализация постановки задачи анализа эффективных характеристик КМ методом асимптотического осреднения.
-	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
-	libgcdfes_pso_hom_agent_postproc(data);//Постпроцессинг после решения отдельной задачи методом асимптотического осреднения.
-}
-gcdhom_inverted_model_pso1_S_6:
-if (!(false || SEL_gcdhom_inverted_model_pso1_S_4[0] )){
-	for (int seli = 0; seli < 2; seli++)
-		SEL_gcdhom_inverted_model_pso1_S_6[seli]=false;
-}else {
-	SEL_gcdhom_inverted_model_pso1_S_6 = libgcdfes_check_pso_agent_reinit();//
-}
-if (SEL_gcdhom_inverted_model_pso1_S_6[0]){
-	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
-	libgcdfes_pso_agent_reinit(data);//Реинициализация отдельной частицы (смещение частицы) в рое в рамках метода роя частиц.
-	goto gcdhom_inverted_model_pso1_S_4;
-}
-if (SEL_gcdhom_inverted_model_pso1_S_6[1]){
-	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
-	libgcdfes_pso_swarm_analysing(data);//Анализ всего роя частиц в рамках метода роя частиц.
-}
-gcdhom_inverted_model_pso1_S_7:
-if (!(false || SEL_gcdhom_inverted_model_pso1_S_6[1] )){
-	for (int seli = 0; seli < 2; seli++)
-		SEL_gcdhom_inverted_model_pso1_S_7[seli]=false;
-}else {
-	SEL_gcdhom_inverted_model_pso1_S_7 = libgcdfes_check_pso_swarm_reinit();//
-}
-if (SEL_gcdhom_inverted_model_pso1_S_7[0]){
-	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
-	libgcdfes_pso_swarm_reinit(data);//Реинициализация всего роя частиц в рамках метода роя частиц.
-	goto gcdhom_inverted_model_pso1_S_4;
-}
-if (SEL_gcdhom_inverted_model_pso1_S_7[1]){
-	//ПАСС, морфизм.
-	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
-	libcomsdk_pass_processor(data);
-	//root graph
-	check_pred(test_funcs.simplest_positiveness_predicate(data), "test_funcs.simplest_positiveness_predicate");
-	test_funcs.simplest_increment_a_edge(data);
-}
-if (!(false || SEL_gcdhom_inverted_model_pso1_S_7[1] )){
-	for (int seli = 0; seli < 0; seli++)
-		SEL___END__[seli]=false;
-}else {
-	for (int seli = 0; seli < 0; seli++)
-		SEL___END__[seli]=true;
-}
-
-
-TERM:
-    std::cout<<"Termination!\n"; 
-    return 0;
-}
diff --git a/res b/res
deleted file mode 100644
index eaebf0ef30fe16a096912798bfa8869bc0f8d37f..0000000000000000000000000000000000000000
--- a/res
+++ /dev/null
@@ -1,11 +0,0 @@
-__BEGIN__ --.()-.()--> INPUT_READY
-INPUT_READY --predicate_funcs.predicate_x()-case_gen_funcs.function_1()--> TEPMLATE_COPIED
-TEPMLATE_COPIED --predicate_funcs.predicate_y()-case_gen_funcs.function_2()--> NAMES_SUBSTITUTED
-NAMES_SUBSTITUTED --predicate_funcs.predicate_x()-case_gen_funcs.function_3()--> CONTENT_SUBSTITUTED
-CONTENT_SUBSTITUTED --.()-case_gen_funcs.create_dump()--> DUMP_CREATED
-CONTENT_SUBSTITUTED --predicate_funcs.predicate_y()-case_gen_funcs.save_to_db()--> RESULT_SAVED
-CONTENT_SUBSTITUTED --predicate_funcs.predicate_x()-case_gen_funcs.save_to_file()--> RESULT_SAVED
-RESULT_SAVED --predicate_funcs.predicate_y()-case_gen_funcs.repeat()--> INPUT_READY
-RESULT_SAVED --predicate_funcs.predicate_x()-case_gen_funcs.exit()--> __END__
-RESULT_SAVED --.()-case_gen_funcs.exit()--> __END__
-DUMP_CREATED --case_gen_funcs.check_dump()-case_gen_funcs.exit()--> __END__
diff --git a/result.cpp b/result.cpp
deleted file mode 100644
index 91525736249b0c1c5399d3b2ffc60974cb3e05e5..0000000000000000000000000000000000000000
--- a/result.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-#include <libtools.h>
-#include <anymap.h>
-
-typedef std::function<int(com::Anymap)> IntFunc;
-typedef std::function<bool(com::Anymap)> BoolFunc;
-typedef std::function<bool*(com::Anymap)> BoolArrFunc;  
-
-IntFunc LoadEntry(std::string lib, std::string func) {
-    DllHandle handler;
-    return com::lib::loadFunction<int (com::Anymap), DllHandle>(lib.c_str(), func.c_str(), handler);
-}
-
-BoolFunc LoadPred(std::string lib, std::string func) {
-    DllHandle handler;
-    return com::lib::loadFunction<int (com::Anymap), DllHandle>(lib.c_str(), func.c_str(), handler);
-}
-
-BoolArrFunc LoadSelector(std::string lib, std::string func){
-    DllHandle handler;
-    return com::lib::loadFunction<bool* (com::Anymap), DllHandle>(lib.c_str(), func.c_str(), handler);
-}
-
-void check_pred(bool predval, std::string predname) {
-    if predval{
-        std::cout<<"Predicate"<<predname<<"returned FALSE!"<<std::endl;
-        exit(-1)
-    }   
-}
-
-int main(int argc, char const *argv[])
-{   
-    auto data = com::Anymap();
-    //Predicates
-    auto test_funcs.simplest_positiveness_predicate = LoadPred("test_funcs.simplest", "positiveness_predicate"); 
-    auto libcomsdk_pass_predicate = LoadPred("libcomsdk", "pass_predicate"); 
-    //Entry functions
-    auto test_funcs.simplest_increment_a_edge = LoadEntry("test_funcs.simplest", "increment_a_edge"); 
-    auto libgcdfes_pso_swarm_init = LoadEntry("libgcdfes", "pso_swarm_init"); 
-    auto libgcdfes_pso_agent_init = LoadEntry("libgcdfes", "pso_agent_init"); 
-    auto libgcdfes_pso_task_data_reinit = LoadEntry("libgcdfes", "pso_task_data_reinit"); 
-    auto libgcdfes_pso_hom_agent_postproc = LoadEntry("libgcdfes", "pso_hom_agent_postproc"); 
-    auto libgcdfes_pso_agent_reinit = LoadEntry("libgcdfes", "pso_agent_reinit"); 
-    auto libgcdfes_pso_swarm_analysing = LoadEntry("libgcdfes", "pso_swarm_analysing"); 
-    auto libgcdfes_pso_swarm_reinit = LoadEntry("libgcdfes", "pso_swarm_reinit"); 
-    auto libcomsdk_pass_processor = LoadEntry("libcomsdk", "pass_processor"); 
-    //Selectors
-    //Branch tokens
-    bool* SEL___BEGIN__ = new bool[1];
-    std::fill_n(SEL___BEGIN__, 1, true);
-    bool* SEL_gcdhom_inverted_model_pso1_S_4 = new bool[1];
-    std::fill_n(SEL_gcdhom_inverted_model_pso1_S_4, 1, false);
-    bool* SEL_gcdhom_inverted_model_pso1_S_6 = new bool[2];
-    std::fill_n(SEL_gcdhom_inverted_model_pso1_S_6, 2, false);
-    bool* SEL_gcdhom_inverted_model_pso1_S_7 = new bool[2];
-    std::fill_n(SEL_gcdhom_inverted_model_pso1_S_7, 2, false);
-    bool* SEL___END__ = new bool[0];
-    std::fill_n(SEL___END__, 0, false);
-
-if (SEL___BEGIN__[0]){
-	check_pred(test_funcs.simplest_positiveness_predicate(data), "test_funcs.simplest_positiveness_predicate");
-	test_funcs.simplest_increment_a_edge(data);
-	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
-	libgcdfes_pso_swarm_init(data);//Инициализация метода роя частиц.
-	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
-	libgcdfes_pso_swarm_init(data);//Инициализация роя частиц.
-	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
-	libgcdfes_pso_agent_init(data);//Инициализация отдельной частицы в рамках метода роя частиц.
-}
-gcdhom_inverted_model_pso1_S_4:
-if (!(false || SEL___BEGIN__[0] || SEL_gcdhom_inverted_model_pso1_S_6[0] || SEL_gcdhom_inverted_model_pso1_S_7[0] )){
-	for (int seli = 0; seli < 1; seli++)
-		SEL_gcdhom_inverted_model_pso1_S_4[seli]=false;
-}else {
-	for (int seli = 0; seli < 1; seli++)
-		SEL_gcdhom_inverted_model_pso1_S_4[seli]=true;
-}
-if (SEL_gcdhom_inverted_model_pso1_S_4[0]){
-	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
-	libgcdfes_pso_task_data_reinit(data);//Реинициализация постановки задачи анализа эффективных характеристик КМ методом асимптотического осреднения.
-	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
-	libgcdfes_pso_hom_agent_postproc(data);//Постпроцессинг после решения отдельной задачи методом асимптотического осреднения.
-}
-gcdhom_inverted_model_pso1_S_6:
-if (!(false || SEL_gcdhom_inverted_model_pso1_S_4[0] )){
-	for (int seli = 0; seli < 2; seli++)
-		SEL_gcdhom_inverted_model_pso1_S_6[seli]=false;
-}else {
-	for (int seli = 0; seli < 2; seli++)
-		SEL_gcdhom_inverted_model_pso1_S_6[seli]=true;
-}
-if (SEL_gcdhom_inverted_model_pso1_S_6[0]){
-	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
-	libgcdfes_pso_agent_reinit(data);//Реинициализация отдельной частицы (смещение частицы) в рое в рамках метода роя частиц.
-	goto gcdhom_inverted_model_pso1_S_4;
-}
-if (SEL_gcdhom_inverted_model_pso1_S_6[1]){
-	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
-	libgcdfes_pso_swarm_analysing(data);//Анализ всего роя частиц в рамках метода роя частиц.
-}
-gcdhom_inverted_model_pso1_S_7:
-if (!(false || SEL_gcdhom_inverted_model_pso1_S_6[1] )){
-	for (int seli = 0; seli < 2; seli++)
-		SEL_gcdhom_inverted_model_pso1_S_7[seli]=false;
-}else {
-	for (int seli = 0; seli < 2; seli++)
-		SEL_gcdhom_inverted_model_pso1_S_7[seli]=true;
-}
-if (SEL_gcdhom_inverted_model_pso1_S_7[0]){
-	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
-	libgcdfes_pso_swarm_reinit(data);//Реинициализация всего роя частиц в рамках метода роя частиц.
-	goto gcdhom_inverted_model_pso1_S_4;
-}
-if (SEL_gcdhom_inverted_model_pso1_S_7[1]){
-	//ПАСС, морфизм.
-	check_pred(libcomsdk_pass_predicate(data), "libcomsdk_pass_predicate");
-	libcomsdk_pass_processor(data);
-}
-if (!(false || SEL_gcdhom_inverted_model_pso1_S_7[1] )){
-	for (int seli = 0; seli < 0; seli++)
-		SEL___END__[seli]=false;
-}else {
-	for (int seli = 0; seli < 0; seli++)
-		SEL___END__[seli]=true;
-}
-
-
-TERM:
-    std::cout<<"Termination!\n"; 
-    return 0;
-}
diff --git a/templates/.gitignore b/templates/.gitignore
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/templates/adot/add.adot b/templates/adot/add.adot
deleted file mode 100644
index e12c29ededc85084b136af109d2796fe67211c07..0000000000000000000000000000000000000000
--- a/templates/adot/add.adot
+++ /dev/null
@@ -1,8 +0,0 @@
-digraph ADD {
-    FUNC [module=test_funcs.simplest, entry_func=increment_b_edge]
-    PRED [module=test_funcs.simplest, entry_func=positiveness_predicate]
-    MORPH [predicate=PRED, function=FUNC, comment="ADD"]
-    
-    __BEGIN__ ->  ST [morphism = MORPH]
-    ST -> __END__ 
-}
\ No newline at end of file
diff --git a/templates/adot/file.adot b/templates/adot/file.adot
deleted file mode 100644
index 7b0961425c04ee468f31e4dfe2a5d4a350f0ac7b..0000000000000000000000000000000000000000
--- a/templates/adot/file.adot
+++ /dev/null
@@ -1,54 +0,0 @@
-digraph gcdhom_inverted_model_pso
-{
-// Определение функций-обработчиков
-	PASS_PROCESSOR [module=libcomsdk, entry_func=pass_processor]
-	CHECK_PSO_AGENT_REINIT [module=libgcdfes, entry_func=check_pso_agent_reinit, comment="Проверка о необходимости реинициализации отдельной частицы (смещение частицы) в рое в рамках метода роя частиц."]
-	CHECK_PSO_SWARM_REINIT [module=libgcdfes, entry_func=check_pso_swarm_reinit, comment="Проверка о необходимости реинициализации всего роя частиц в рамках метода роя частиц."]
-
-	PSO_AGENT_REINIT [module=libgcdfes, entry_func=pso_agent_reinit, comment="Реинициализация отдельной частицы (смещение частицы) в рое в рамках метода роя частиц."]
-	PSO_SWARM_REINIT [module=libgcdfes, entry_func=pso_swarm_reinit, comment="Реинициализация всего роя частиц в рамках метода роя частиц."]
-	
-	PSO_SWARM_ANALYSING [module=libgcdfes, entry_func=pso_swarm_analysing, comment="Анализ всего роя частиц в рамках метода роя частиц."]
-	
-	PSO_HOM_AGENT_POSTPROC [module=libgcdfes, entry_func=pso_hom_agent_postproc, comment="Постпроцессинг после решения отдельной задачи методом асимптотического осреднения."]
-	
-	PSO_TASK_DATA_REINIT [module=libgcdfes, entry_func=pso_task_data_reinit, comment="Реинициализация постановки задачи анализа эффективных характеристик КМ методом асимптотического осреднения."]
-	
-	PSO_AGENT_INIT [module=libgcdfes, entry_func=pso_agent_init, comment="Инициализация отдельной частицы в рамках метода роя частиц."]
-
-	PSO_SWARM_INIT [module=libgcdfes, entry_func=pso_swarm_init, comment="Инициализация роя частиц."]
-	
-	PSO_INIT [module=libgcdfes, entry_func=pso_swarm_init, comment="Инициализация метода роя частиц."]
-
-// Определение функций-предикатов
-	PASS_PREDICATE [module=libcomsdk, entry_func=pass_predicate]
-	
-// Определение морфизмов
-	PASS_MORPHISM [predicate=PASS_PREDICATE, function=PASS_PROCESSOR, comment="ПАСС, морфизм."]
-	
-	PSO_AGENT_REINIT_MORPHISM [predicate=PASS_PREDICATE, function=PSO_AGENT_REINIT]
-	PSO_SWARM_REINIT_MORPHISM [predicate=PASS_PREDICATE, function=PSO_SWARM_REINIT]
-	PSO_SWARM_ANALYSING_MORPHISM [predicate=PASS_PREDICATE, function=PSO_SWARM_ANALYSING]
-	PSO_HOM_AGENT_POSTPROC_MORPHISM [predicate=PASS_PREDICATE, function=PSO_HOM_AGENT_POSTPROC] 
-	PSO_TASK_DATA_REINIT_MORPHISM [predicate=PASS_PREDICATE, function=PSO_TASK_DATA_REINIT] 
-	PSO_AGENT_INIT_MORPHISM [predicate=PASS_PREDICATE, function=PSO_AGENT_INIT] 
-	PSO_SWARM_INIT_MORPHISM [predicate=PASS_PREDICATE, function=PSO_SWARM_INIT] 
-	PSO_INIT_MORPHISM [predicate=PASS_PREDICATE, function=PSO_INIT] 
-	
-// Определение атрибутов узлов	
-	//S_1 [subgraph=gcdhom_preprocessor.adot]
-	//S_5 [subgraph=gcdhom_processor.adot]
-	S_6 [selector=CHECK_PSO_AGENT_REINIT]
-	S_7 [selector=CHECK_PSO_SWARM_REINIT]
-
-// Определение топологии графовой модели метода конечных элементов
-	__BEGIN__ -> S_1
-	S_1 -> S_2 [morphism=PSO_INIT_MORPHISM]
-	S_2 -> S_3 [morphism=PSO_SWARM_INIT_MORPHISM]
-	S_3 -> S_4 [morphism=PSO_AGENT_INIT_MORPHISM]
-	S_4 -> S_5 [morphism=PSO_TASK_DATA_REINIT_MORPHISM]
-	S_5 -> S_6 [morphism=PSO_HOM_AGENT_POSTPROC_MORPHISM]
-	S_6 -> S_4, S_7 [morphism=(PSO_AGENT_REINIT_MORPHISM, PSO_SWARM_ANALYSING_MORPHISM), order=(10,20)]
-	S_7 -> S_4, S_8 [morphism=(PSO_SWARM_REINIT_MORPHISM, PASS_MORPHISM), order=(30,40)]
-	S_8 -> __END__ [comment = "Расчет завершён."]
-}
diff --git a/templates/adot/testcycl.adot b/templates/adot/testcycl.adot
deleted file mode 100644
index 14da22fe89130b466b02e40f3dc99fb55ba99b4d..0000000000000000000000000000000000000000
--- a/templates/adot/testcycl.adot
+++ /dev/null
@@ -1,14 +0,0 @@
-digraph CYCLED {
-    FUNC [module=test_funcs.simplest, entry_func=decrement_a_edge]
-    PRED [module=test_funcs.simplest, entry_func=positiveness_predicate]
-    MORPH [predicate=PRED, function=FUNC]
-
-    SEL [module = test_funcs.simplest, entry_func = selector_a_nonpositive]
-
-    ST2 [selector = SEL]
-    
-    __BEGIN__ -> ST1 
-    ST1 -> ST2 [morphism=MORPH]
-    ST2 -> ST1 
-    ST2 -> __END__
-}
\ No newline at end of file
diff --git a/templates/adot/testparal.adot b/templates/adot/testparal.adot
deleted file mode 100644
index 4f275f0e79fceeac99b50037343e96bd51a17088..0000000000000000000000000000000000000000
--- a/templates/adot/testparal.adot
+++ /dev/null
@@ -1,17 +0,0 @@
-digraph SIMPLEST {
-    FUNCA [module=test_funcs.simplest, entry_func=increment_a_edge]
-    FUNCB [module=test_funcs.simplest, entry_func=increment_b_edge]
-    PRED [module=test_funcs.simplest, entry_func=positiveness_predicate]
-    INCR_A [predicate=PRED, function=FUNCA]
-    INCR_B [predicate=PRED, function=FUNCB]
-    
-
-    __BEGIN__ -> ROOT
-    ROOT ->  BR1, BR2, BR3 [morphism=(INCR_A, INCR_A, INCR_A)]
-    //BR3 -> SIBL3_BR1, SIBL3_BR2 [morphism=(INCR_A, INCR_A)]
-    //BR2 -> SIBL2_BR1, SIBL2_BR2 [morphism=(INCR_A, INCR_A)]
-    //SIBL3_BR1 -> SIBL3_BR1_1,  SIBL3_BR1_2 [morphism=(INCR_A, INCR_A)]
-    //SIBL3_BR1_1,  SIBL3_BR1_2 -> TERM  [morphism=(INCR_A, INCR_A)]
-    //BR1,  SIBL2_BR1, SIBL2_BR2, TERM, SIBL3_BR2 ->  __END__ [morphism=(INCR_A, INCR_A, INCR_A, INCR_A, INCR_A)]
-    BR1, BR2, BR3 -> __END__ [morphism=(INCR_A, INCR_A, INCR_A)]
-} 
\ No newline at end of file
diff --git a/templates/adot/testsimple.adot b/templates/adot/testsimple.adot
deleted file mode 100644
index d8857948ec546f6b0f8bb07abaad1e0e5fc1d45e..0000000000000000000000000000000000000000
--- a/templates/adot/testsimple.adot
+++ /dev/null
@@ -1,22 +0,0 @@
-digraph SIMPLE {
-    FUNC [module=libprinters, entry_func=PrintHello]
-    PRED [module=libprinters, entry_func=ReturnTrue]
-    MORPH [predicate=PRED, function=FUNC]
-
-    FUNC1 [module=libprinters, entry_func=PrintHello1]
-    PRED1 [module=libprinters, entry_func=ReturnTrue1]
-    MORPH1 [predicate=PRED1, function=FUNC1]
-
-    FUNC2 [module=libprinters, entry_func=PrintHello2]
-    PRED2 [module=libprinters, entry_func=ReturnTrue2]
-    MORPH2 [predicate=PRED2, function=FUNC2]
-
-    __BEGIN__ ->  ST1 [morphism = MORPH]
-    ST1 -> ST2, ST3, ST4 [morphism = (MORPH, MORPH1, MORPH2)]
-    ST2 -> ST3, ST5 [morphism = (MORPH1,MORPH2)]
-    ST4 -> ST5 [morphism = MORPH]
-    ST3 -> ST5 [morphism = MORPH]
-    //ST21 -> ST31, ST312[morphism =(MORPH1,MORPH2)]
-    //ST3, ST31, ST312 -> ST4[morphism = (MORPH,MORPH1,MORPH2) ]
-    ST5 ->  __END__
-}
\ No newline at end of file
diff --git a/templates/adot/testsub.adot b/templates/adot/testsub.adot
deleted file mode 100644
index bb2c6ae7bcec621a77cd7a1a7311ee86d679b4b1..0000000000000000000000000000000000000000
--- a/templates/adot/testsub.adot
+++ /dev/null
@@ -1,14 +0,0 @@
-digraph TEST_SUB {
-    FUNC [module=test_funcs.simplest, entry_func=increment_a_edge]
-    PRED [module=test_funcs.simplest, entry_func=positiveness_predicate]
-    MORPH [predicate=PRED, function=FUNC, comment="root graph"]
-//    SEL [module=test_funcs.simplest, entry_func=selector_a_nonpositive]
-    
-    ST2 [subgraph = templates/adot/file.adot]
-//    ST3 [selector = SEL]
-
-    __BEGIN__ -> ST1 [morphism = MORPH]
-    ST1 -> ST2 
-    ST2 -> ST3
-    ST3 -> __END__  [morphism = MORPH]
-}
\ No newline at end of file
diff --git a/test.adot b/test.adot
deleted file mode 100644
index 36db12df0e2adaecd8d70c1c8a455e006bea6385..0000000000000000000000000000000000000000
--- a/test.adot
+++ /dev/null
@@ -1,42 +0,0 @@
-digraph CODEOBJECT_GENERATOR
-{
-// Определения функций-обработчиков
-	FUNC_1 [module=case_gen_funcs, entry_func=function_1]
-	FUNC_2 [module=case_gen_funcs, entry_func=function_2]
-	FUNC_3 [module=case_gen_funcs, entry_func=function_3]
-	SAVE_TO_DB [module=case_gen_funcs, entry_func=save_to_db]
-	SAVE_TO_FILE [module=case_gen_funcs, entry_func=save_to_file]
-	REPEAT [module=case_gen_funcs, entry_func=repeat]
-	EXIT [module=case_gen_funcs, entry_func=exit]
-	CREATE_DUMP [module=case_gen_funcs, entry_func=create_dump]
-	CHECK_DUMP [module=case_gen_funcs, entry_func=check_dump]
-// Определения функций-предикатов
-	PREDICATE_X [module=predicate_funcs, entry_func=predicate_x]
-	PREDICATE_Y [module=predicate_funcs, entry_func=predicate_y]
-	SELECTOR [module=predicate_funcs, entry_func=selector]
-// Определения функций перехода
-	EDGE_1 [predicate=PREDICATE_X, function=FUNC_1]
-	EDGE_2 [predicate=PREDICATE_Y, function=FUNC_2]
-	EDGE_3 [predicate=PREDICATE_X, function=FUNC_3]
-	EDGE_4 [predicate=PREDICATE_Y, function=SAVE_TO_DB]
-	EDGE_5 [predicate=PREDICATE_X, function=SAVE_TO_FILE]
-	EDGE_6 [predicate=PREDICATE_Y, function=REPEAT]
-	EDGE_7 [predicate=PREDICATE_X, function=EXIT]
-	EDGE_8 [function=EXIT]
-	EDGE_9 [predicate=CHECK_DUMP, function=EXIT]
-	EDGE_10 [function=CREATE_DUMP]
-// В узле указана стратегия распараллеливания	
-	CONTENT_SUBSTITUTED [parallelism=threading]
-// Определение графовой модели
-	__BEGIN__ -> INPUT_READY
-	INPUT_READY -> TEPMLATE_COPIED [morphism=EDGE_1]
-	TEPMLATE_COPIED -> NAMES_SUBSTITUTED [morphism=EDGE_2]
-	NAMES_SUBSTITUTED -> CONTENT_SUBSTITUTED [morphism=EDGE_3]
-	CONTENT_SUBSTITUTED -> DUMP_CREATED [morphism=EDGE_10, order=3]
-	CONTENT_SUBSTITUTED -> RESULT_SAVED [morphism=EDGE_4, order=2]
-	CONTENT_SUBSTITUTED -> RESULT_SAVED [morphism=EDGE_5,order=1,comment="test comment to cpp"]
-// В зависимости от результата вычисления функции-SELECTOR осуществляется переход по
-//первому или второму ребру
-	RESULT_SAVED -> __END__ [morphism=EDGE_8, order=(40)]
-	RESULT_SAVED -> INPUT_READY,FAKE,__END__ [selector=SELECTOR, morphism=(EDGE_6,EDGE_1,EDGE_7), order=(30,20,10)]
-}
diff --git a/test_funcs/__pycache__/simplest.cpython-37.pyc b/test_funcs/__pycache__/simplest.cpython-37.pyc
index b618002d1e5e3e0a1c52694b762b88c7d1dd756c..9325caa8e4bb079839e61965e3f86352010caf45 100644
Binary files a/test_funcs/__pycache__/simplest.cpython-37.pyc and b/test_funcs/__pycache__/simplest.cpython-37.pyc differ
diff --git a/test_funcs/simplest.py b/test_funcs/simplest.py
index 8fe98f8badec61d287a859087f06ed45b8e68684..2d357c28fa3f6c2f0641985e35cc082534a4e71e 100644
--- a/test_funcs/simplest.py
+++ b/test_funcs/simplest.py
@@ -27,7 +27,7 @@ def copy_to_c(data):
     data['c'] = data['a']
 
 def selector_a_nonpositive(data):
-    res = data['a'] < 0
+    res = data['a'] <= 0
     return [res, not res]
 
 def true_predicate(data):
diff --git a/test_parser.py b/test_parser.py
deleted file mode 100644
index f2881a75e180a8a2819b8f828b6c00ae41b7ba24..0000000000000000000000000000000000000000
--- a/test_parser.py
+++ /dev/null
@@ -1,15 +0,0 @@
-import unittest
-from copy import deepcopy
-import subprocess
-import os
-import random
-import sys
-from test_funcs.simplest import * 
-import comsdk.parser as pars
-from comsdk.graph import *
-from comsdk.edge import Edge
-
-prsr = pars.Parser(tocpp=True)
-data = {"a":10, "b":0} 
-gr = prsr.parse_file(sys.argv[1])
-prsr.generate_cpp(sys.argv[2])
diff --git a/tests/__pycache__/test_parser.cpython-37.pyc b/tests/__pycache__/test_parser.cpython-37.pyc
index 8488132e769aac87e15851fd3e04e98d55b4818a..6507451d786bb069e2d5db775d48ded878be3a21 100644
Binary files a/tests/__pycache__/test_parser.cpython-37.pyc and b/tests/__pycache__/test_parser.cpython-37.pyc differ
diff --git a/tests/adot/branching.adot b/tests/adot/branching.adot
index eea77b55e0035f1cedf531fe067adfd8acfe7566..e8c14dea2182d4a8629053871a326872f4fddb07 100644
--- a/tests/adot/branching.adot
+++ b/tests/adot/branching.adot
@@ -1,7 +1,7 @@
 digraph SIMPLEST {
     FUNCA [module=test_funcs.simplest, entry_func=increment_a_edge]
     FUNCB [module=test_funcs.simplest, entry_func=increment_b_edge]
-    PRED [module=test_funcs.simplest, entry_func=positiveness_predicate]
+    PRED [module=test_funcs.simplest, entry_func=true_predicate]
     
     INCR_A [predicate=PRED, function=FUNCA]
     INCR_B [predicate=PRED, function=FUNCB]
diff --git a/tests/adot/cppbranching.adot b/tests/adot/cppbranching.adot
new file mode 100644
index 0000000000000000000000000000000000000000..3b5a0a549585628c591168103da43e93cb0c7772
--- /dev/null
+++ b/tests/adot/cppbranching.adot
@@ -0,0 +1,28 @@
+digraph SIMPLEST {
+    FUNCA [module=libtest, entry_func=IncA]
+    FUNCB [module=libtest, entry_func=IncB]
+    
+    CHECKA [module=libtest, entry_func=CheckAEq4]
+    CHECKB [module=libtest, entry_func=CheckBEq4]
+    
+    SETA [module=libtest, entry_func=SetAEq1]
+    SETB [module=libtest, entry_func=SetBEq1]
+
+    PASS [module=libtest, entry_func=PassFunc]
+    PRED [module=libtest, entry_func=PassPred]
+
+    INCR_A [predicate=PRED, function=FUNCA]
+    INCR_B [predicate=PRED, function=FUNCB]
+    CH_A [predicate=CHECKA, function = PASS]
+    SET_A [predicate=PRED, function=SETA]
+    SET_B [predicate=PRED, function=SETB]
+    CH_B [predicate=CHECKB, function = PASS]
+    
+    __BEGIN__ -> ROT [morphism=SET_A]
+    ROT -> ROOT[morphism=SET_B]
+    ROOT ->  BR1, BR2 [morphism=(INCR_A, INCR_B)]
+    BR1 -> BR1_ST [morphism=INCR_A]
+    BR2 -> BR2_ST [morphism=INCR_B]
+    BR1_ST, BR2_ST -> MERGE [morphism=(INCR_A, INCR_B)]
+    MERGE -> __END__, __END__ [morphism=(CH_A, CH_B)]
+} 
\ No newline at end of file
diff --git a/tests/adot/cppcomplex.adot b/tests/adot/cppcomplex.adot
new file mode 100644
index 0000000000000000000000000000000000000000..c93c09ec2a9aacd7abde6c5f23a2072437f16839
--- /dev/null
+++ b/tests/adot/cppcomplex.adot
@@ -0,0 +1,15 @@
+digraph SIMPLEST {
+    FUNCA [module=test_funcs.simplest, entry_func=increment_a_edge]
+    PRED [module=test_funcs.simplest, entry_func=true_predicate]
+    
+    INCR_A [predicate=PRED, function=FUNCA]
+    
+    ST1 [subgraph=tests/adot/cpptrivial.adot]
+    ST2 [subgraph=tests/adot/cppcycled.adot]
+    ST3 [subgraph=tests/adot/cppbranching.adot]
+
+    __BEGIN__ -> ST1 
+    ST1 -> ST2 
+    ST2 -> ST3 
+    ST3 -> __END__ 
+} 
\ No newline at end of file
diff --git a/tests/adot/cppcycled.adot b/tests/adot/cppcycled.adot
new file mode 100644
index 0000000000000000000000000000000000000000..ed3209bc780cf9eaa2b7ffef94c5bbde7ab83120
--- /dev/null
+++ b/tests/adot/cppcycled.adot
@@ -0,0 +1,18 @@
+digraph CYCLED {
+
+    SETA [module=libtest, entry_func=SetAEq10]
+    FUNC [module=libtest, entry_func=DecA]
+    PRED [module=libtest, entry_func=PassPred]
+
+    SET [predicate=PRED, function=SETA]
+    MORPH [predicate=PRED, function=FUNC]
+
+    SEL [module = libtest, entry_func=SelectorA]
+
+    ST2 [selector = SEL]
+    
+    __BEGIN__ -> ST1 [morphism=SET]
+    ST1 -> ST2 [morphism=MORPH]
+    ST2 -> ST1 [order=1]
+    ST2 -> __END__ [order = 2]
+}
\ No newline at end of file
diff --git a/tests/adot/trivialcpp.adot b/tests/adot/cpptrivial.adot
similarity index 81%
rename from tests/adot/trivialcpp.adot
rename to tests/adot/cpptrivial.adot
index cfa515fbd92e660a3f42c93b5401f5cbb0c11b49..c37cb9c1fe8393522e05dc62288d8b052f7424b0 100644
--- a/tests/adot/trivialcpp.adot
+++ b/tests/adot/cpptrivial.adot
@@ -1,6 +1,6 @@
 digraph SIMPLE {
     FUNC [module=libtest, entry_func=IncA]
-    PRED [module=libtest, entry_func=ReturnTrue]
+    PRED [module=libtest, entry_func=PassPred]
     MORPH [predicate=PRED, function=FUNC]
 
         __BEGIN__ -> ST1 [morphism = MORPH]
diff --git a/tests/adot/cycled.adot b/tests/adot/cycled.adot
index 542f21099cd9695553b71eeaf2cee92bedc1d509..4b37cbcb3a5306edae2c41a651252f0e05627d4d 100644
--- a/tests/adot/cycled.adot
+++ b/tests/adot/cycled.adot
@@ -1,6 +1,6 @@
 digraph CYCLED {
     FUNC [module=test_funcs.simplest, entry_func=decrement_a_edge]
-    PRED [module=test_funcs.simplest, entry_func=positiveness_predicate]
+    PRED [module=test_funcs.simplest, entry_func=true_predicate]
     MORPH [predicate=PRED, function=FUNC]
 
     SEL [module = test_funcs.simplest, entry_func = selector_a_nonpositive]
diff --git a/tests/adot/trivial.adot b/tests/adot/trivial.adot
index eae6d277a74aec81b4d0fc1dd3eb32e6d452fb81..26a06b741eefec6c26dc5d8a6ec048c4d384f324 100644
--- a/tests/adot/trivial.adot
+++ b/tests/adot/trivial.adot
@@ -1,6 +1,6 @@
-digraph trivial {
+digraph TRIVIAL {
     FUNC [module=test_funcs.simplest, entry_func=increment_a_edge]
-    PRED [module=test_funcs.simplest, entry_func=positiveness_predicate]
+    PRED [module=test_funcs.simplest, entry_func=true_predicate]
     MORPH [predicate=PRED, function=FUNC, comment="ADD"]
 
     __BEGIN__ -> ST1 [morphism = MORPH]
diff --git a/tests/test_parser.py b/tests/test_parser.py
index ae7b2a100b94a752ba36205a96429174897d56aa..cadf7ad55faa1d80d09f1362660772746ec308f8 100644
--- a/tests/test_parser.py
+++ b/tests/test_parser.py
@@ -1,9 +1,11 @@
 import unittest
+import subprocess
 
 from comsdk.graph import *
 from comsdk.parser import Parser
 
 path_to_comsdk = "/home/lbstr/bmstu/comsdk"
+path_to_pycomsdk = "/home/lbstr/bmstu/pycomsdk"
 
 class ParserGoodCheck(unittest.TestCase):
 
@@ -38,18 +40,32 @@ class ParserGoodCheck(unittest.TestCase):
         self.assertEqual(data["b"], 4)
 
     def test_cpp_trivial_graph(self):
-        pass
+        parsr = Parser(tocpp=True)
+        gr = parsr.parse_file("./tests/adot/cpptrivial.adot")
+        parsr.generate_cpp(path_to_comsdk+"res.cpp")
+        command = "cd "+path_to_comsdk+"; "+path_to_pycomsdk+"/cpp/run.sh "+path_to_comsdk+"res.cpp"
+        subprocess.check_output(["bash", "-c", command])
     
     def test_cpp_branching_graph(self):
-        pass
+        parsr = Parser(tocpp=True)
+        gr = parsr.parse_file("./tests/adot/cppbranching.adot")
+        parsr.generate_cpp(path_to_comsdk+"res.cpp")
+        command = "cd "+path_to_comsdk+"; "+path_to_pycomsdk+"/cpp/run.sh "+path_to_comsdk+"res.cpp"
+        subprocess.check_output(["bash", "-c", command])
 
     def test_cpp_cycled_graph(self):
-        pass
+        parsr = Parser(tocpp=True)
+        gr = parsr.parse_file("./tests/adot/cppcycled.adot")
+        parsr.generate_cpp(path_to_comsdk+"res.cpp")
+        command = "cd "+path_to_comsdk+"; "+path_to_pycomsdk+"/cpp/run.sh "+path_to_comsdk+"res.cpp"
+        subprocess.check_output(["bash", "-c", command])
 
     def test_cpp_complex_graph(self):
-        pass
-
-
+        parsr = Parser(tocpp=True)
+        gr = parsr.parse_file("./tests/adot/cppcomplex.adot")
+        parsr.generate_cpp(path_to_comsdk+"res.cpp")
+        command = "cd "+path_to_comsdk+"; "+path_to_pycomsdk+"/cpp/run.sh "+path_to_comsdk+"res.cpp"
+        subprocess.check_output(["bash", "-c", command])
 
 if __name__ == '__main__':
     unittest.main()