src/work/peter/edgepathgraph_test.cc
author deba
Wed, 08 Sep 2004 12:06:45 +0000 (2004-09-08)
changeset 822 88226d9fe821
child 921 818510fa3d99
permissions -rw-r--r--
The MapFactories have been removed from the code because
if we use macros then they increases only the complexity.

The pair iterators of the maps are separeted from the maps.

Some macros and comments has been changed.
hegyi@677
     1
#include <string>
hegyi@677
     2
#include <iostream>
hegyi@677
     3
#include <stdio.h>
hegyi@677
     4
hegyi@677
     5
#include "edgepathgraph.h"
hegyi@677
     6
#include <hugo/list_graph.h>
hegyi@677
     7
#include <hugo/smart_graph.h>
hegyi@677
     8
#include <path.h>
hegyi@677
     9
hegyi@677
    10
using namespace hugo;
hegyi@677
    11
using namespace std;
hegyi@677
    12
hegyi@677
    13
bool passed = true;
hegyi@677
    14
hegyi@677
    15
void check(bool rc) {
hegyi@677
    16
  passed = passed && rc;
hegyi@677
    17
  if(!rc) {
hegyi@677
    18
    cout << "Test failed!" << endl;
hegyi@677
    19
  }
hegyi@677
    20
}
hegyi@677
    21
hegyi@677
    22
int main()
hegyi@677
    23
{
hegyi@677
    24
  {
hegyi@677
    25
      EdgePathGraph<DirPath<ListGraph>, SmartGraph, ListGraph> EPGr;
hegyi@677
    26
      EPGr.addNode();
hegyi@677
    27
      EPGr.addNode();
hegyi@677
    28
      EPGr.addNode();
hegyi@677
    29
      EPGr.addNode();
hegyi@677
    30
      printf("%d node is in EPGr, after addition of 4 nodes.\n", EPGr.nodeNum());
hegyi@677
    31
hegyi@677
    32
      EdgePathGraph<DirPath<ListGraph>, SmartGraph, ListGraph> EPGr2(EPGr);
hegyi@677
    33
      printf("%d node is in EPGr2 created by copy constructor from EPGr.\n", EPGr2.nodeNum());
hegyi@677
    34
hegyi@677
    35
      EPGr2.addNode();
hegyi@677
    36
      EPGr2.addNode();
hegyi@677
    37
      printf("%d node is in EPGr2 after addition of 2 more nodes.\n", EPGr2.nodeNum());
hegyi@677
    38
hegyi@677
    39
      printf("%d nodes are in EPGr, before clear.\n", EPGr.nodeNum());
hegyi@677
    40
      EPGr.clear();
hegyi@677
    41
      printf("%d nodes are in EPGr, after clear.\n", EPGr.nodeNum());
hegyi@677
    42
      printf("%d nodes are in EPGr2, after clear of EPGr.\n", EPGr2.nodeNum());
hegyi@677
    43
      EPGr2.clear();
hegyi@677
    44
  }
hegyi@677
    45
  {
hegyi@677
    46
      EdgePathGraph<DirPath<ListGraph>, SmartGraph, ListGraph> EPGr;
hegyi@677
    47
      //EdgePathGraph<DirPath<ListGraph>, SmartGraph, EdgePathGraph<DirPath<SmartGraph>, ListGraph, SmartGraph> > EPGr;
hegyi@677
    48
      EdgePathGraph<DirPath<SmartGraph>, ListGraph, SmartGraph> EPGr2;
hegyi@677
    49
   
hegyi@677
    50
      typedef EdgePathGraph<DirPath<SmartGraph>, SmartGraph, ListGraph>::Node Node;
hegyi@677
    51
      typedef EdgePathGraph<DirPath<SmartGraph>, SmartGraph, ListGraph>::Edge Edge;
hegyi@677
    52
      typedef EdgePathGraph<DirPath<SmartGraph>, SmartGraph, ListGraph>::EdgeIt EdgeIt;
hegyi@677
    53
hegyi@677
    54
      Node n0, n1, n2;
hegyi@677
    55
      Edge e0, e1, e2, e3, e4, e5;
hegyi@677
    56
hegyi@677
    57
      ListGraph::Node m0, m1, m2, m3;
hegyi@677
    58
      ListGraph::Edge f0, f1, f2, f3, f4, f5;
hegyi@677
    59
hegyi@677
    60
hegyi@677
    61
      n0=EPGr.addNode();
hegyi@677
    62
      n1=EPGr.addNode();
hegyi@677
    63
      n2=EPGr.addNode();
hegyi@677
    64
hegyi@677
    65
      e0=EPGr.addEdge(n0,n1);
hegyi@677
    66
      e1=EPGr.addEdge(n1,n0);
hegyi@677
    67
      e2=EPGr.addEdge(n0,n2);
hegyi@677
    68
      e3=EPGr.addEdge(n2,n0);
hegyi@677
    69
      e4=EPGr.addEdge(n1,n2);
hegyi@677
    70
      e5=EPGr.addEdge(n2,n1);
hegyi@677
    71
hegyi@677
    72
hegyi@677
    73
      m0=EPGr2.addNode();
hegyi@677
    74
      m1=EPGr2.addNode();
hegyi@677
    75
      m2=EPGr2.addNode();
hegyi@677
    76
      m3=EPGr2.addNode();
hegyi@677
    77
    
hegyi@677
    78
      f0=EPGr2.addEdge(m0,m3);
hegyi@677
    79
      f1=EPGr2.addEdge(m3,m0);
hegyi@677
    80
      f2=EPGr2.addEdge(m2,m3);
hegyi@677
    81
      f3=EPGr2.addEdge(m3,m2);
hegyi@677
    82
      f4=EPGr2.addEdge(m1,m2);
hegyi@677
    83
      f5=EPGr2.addEdge(m2,m1);
hegyi@677
    84
hegyi@677
    85
      EPGr.sublayer=&(EPGr2.actuallayer);
hegyi@677
    86
      //EPGr.sublayer=&(EPGr2);
hegyi@677
    87
    
hegyi@677
    88
      EPGr.projection[n0]=&m0;
hegyi@677
    89
      EPGr.projection[n1]=&m1;
hegyi@677
    90
      EPGr.projection[n2]=&m2;
hegyi@677
    91
hegyi@677
    92
      
hegyi@677
    93
      typedef DirPath<ListGraph> DPath;
hegyi@677
    94
hegyi@677
    95
      //DPath P(EPGr2);
hegyi@677
    96
hegyi@677
    97
      DPath P1(EPGr2.actuallayer);//0-2
hegyi@677
    98
      DPath::Builder B1(P1);
hegyi@677
    99
      B1.pushBack(f0);
hegyi@677
   100
      B1.pushBack(f3);
hegyi@677
   101
      B1.commit();
hegyi@677
   102
      cout << P1.length() << " hosszu utvonal letrehozva" << endl;
hegyi@677
   103
hegyi@677
   104
      DPath P2(EPGr2.actuallayer);//2-0
hegyi@677
   105
      DPath::Builder B2(P2);
hegyi@677
   106
      B2.pushBack(f2);
hegyi@677
   107
      B2.pushBack(f1);
hegyi@677
   108
      B2.commit();
hegyi@677
   109
      cout << P2.length() << " hosszu utvonal letrehozva" << endl;
hegyi@677
   110
hegyi@677
   111
      DPath P3(EPGr2.actuallayer);//0-1
hegyi@677
   112
      DPath::Builder B3(P3);
hegyi@677
   113
      B3.pushBack(f0);
hegyi@677
   114
      B3.pushBack(f3);
hegyi@677
   115
      B3.pushBack(f5);
hegyi@677
   116
      B3.commit();
hegyi@677
   117
      cout << P3.length() << " hosszu utvonal letrehozva" << endl;
hegyi@677
   118
hegyi@677
   119
      DPath P4(EPGr2.actuallayer);//1-0
hegyi@677
   120
      DPath::Builder B4(P4);
hegyi@677
   121
      B4.pushBack(f4);
hegyi@677
   122
      B4.pushBack(f2);
hegyi@677
   123
      B4.pushBack(f1);
hegyi@677
   124
      B4.commit();
hegyi@677
   125
      cout << P4.length() << " hosszu utvonal letrehozva" << endl;
hegyi@677
   126
hegyi@677
   127
hegyi@677
   128
      EPGr.edgepath[e0]=&P3;
hegyi@677
   129
      EPGr.edgepath[e1]=&P4;
hegyi@677
   130
      EPGr.edgepath[e2]=&P1;
hegyi@677
   131
      EPGr.edgepath[e3]=&P2;
hegyi@677
   132
hegyi@677
   133
      for(EdgeIt e(EPGr.actuallayer);EPGr.actuallayer.valid(e);EPGr.actuallayer.next(e))
hegyi@677
   134
      {
hegyi@677
   135
	typedef DPath::EdgeIt PEdgeIt;
hegyi@677
   136
	PEdgeIt f;
hegyi@677
   137
hegyi@677
   138
	cout << "Edge " << EPGr.id(EPGr.tail(e)) << " - " << EPGr.id(EPGr.head(e)) << " in actual layer is";
hegyi@677
   139
        if(EPGr.edgepath[e])
hegyi@677
   140
	{
hegyi@677
   141
	  cout << endl << "Path";
hegyi@677
   142
	  for(EPGr.edgepath[e]->first(f); EPGr.edgepath[e]->valid(f); EPGr.edgepath[e]->next(f))
hegyi@677
   143
	  {
hegyi@677
   144
	    cout << " " << EPGr2.id(EPGr2.tail(f)) << "-" << EPGr2.id(EPGr2.head(f));
hegyi@677
   145
	  }
hegyi@677
   146
	  //cout << EPGr2.id(EPGr2.head(f)) << endl;
hegyi@677
   147
	  cout << endl;
hegyi@677
   148
	}
hegyi@677
   149
	else
hegyi@677
   150
	{
hegyi@677
   151
	  cout << " itself." <<endl;
hegyi@677
   152
	}
hegyi@677
   153
      }
hegyi@677
   154
    
hegyi@677
   155
hegyi@677
   156
      cout << "================================" << endl;
hegyi@677
   157
    
hegyi@677
   158
      SmartGraph::EdgeMap<int> actlaymap(EPGr.actuallayer);
hegyi@677
   159
      //EdgePathGraph<DirPath<ListGraph>, SmartGraph, EdgePathGraph<DirPath<SmartGraph>, ListGraph, SmartGraph> > EPGr;
hegyi@677
   160
      ListGraph::EdgeMap<double> sublaymap(EPGr2.actuallayer);
hegyi@677
   161
      
hegyi@677
   162
hegyi@677
   163
      actlaymap[e1]=5;
hegyi@677
   164
hegyi@677
   165
      //EdgeMap-ok kiirasa
hegyi@677
   166
hegyi@677
   167
      cout << "EdgeMaps before addMap:" << endl;
hegyi@677
   168
    
hegyi@677
   169
      cout << "actlaymap: ";
hegyi@677
   170
      for(EdgeIt e(EPGr.actuallayer);EPGr.actuallayer.valid(e);EPGr.actuallayer.next(e))
hegyi@677
   171
      {
hegyi@677
   172
	cout << EPGr.id(EPGr.tail(e)) << "-" << EPGr.id(EPGr.head(e)) << ":" << actlaymap[e] << " ";
hegyi@677
   173
      }
hegyi@677
   174
      cout << endl;
hegyi@677
   175
      cout << "sublaymap: ";
hegyi@677
   176
      for(ListGraph::EdgeIt e(EPGr2.actuallayer);EPGr2.actuallayer.valid(e);EPGr2.actuallayer.next(e))
hegyi@677
   177
      {
hegyi@677
   178
	cout << EPGr2.id(EPGr2.tail(e)) << "-" << EPGr2.id(EPGr2.head(e)) << ":" << sublaymap[e] << " ";
hegyi@677
   179
      }
hegyi@677
   180
      cout << endl;
hegyi@677
   181
      //EdgeMap-ok kiirasa#vege
hegyi@677
   182
hegyi@677
   183
      
hegyi@677
   184
      EPGr.addMap<int, double>(actlaymap, sublaymap);
hegyi@677
   185
hegyi@677
   186
      //EdgeMap-ok kiirasa
hegyi@677
   187
hegyi@677
   188
      cout << "EdgeMaps after addMap:" << endl;
hegyi@677
   189
    
hegyi@677
   190
      cout << "actlaymap: ";
hegyi@677
   191
      for(EdgeIt e(EPGr.actuallayer);EPGr.actuallayer.valid(e);EPGr.actuallayer.next(e))
hegyi@677
   192
      {
hegyi@677
   193
	cout << EPGr.id(EPGr.tail(e)) << "-" << EPGr.id(EPGr.head(e)) << ":" << actlaymap[e] << " ";
hegyi@677
   194
      }
hegyi@677
   195
      cout << endl;
hegyi@677
   196
      cout << "sublaymap: ";
hegyi@677
   197
      for(ListGraph::EdgeIt e(EPGr2.actuallayer);EPGr2.actuallayer.valid(e);EPGr2.actuallayer.next(e))
hegyi@677
   198
      {
hegyi@677
   199
	cout << EPGr2.id(EPGr2.tail(e)) << "-" << EPGr2.id(EPGr2.head(e)) << ":" << sublaymap[e] << " ";
hegyi@677
   200
      }
hegyi@677
   201
      cout << endl;
hegyi@677
   202
      //EdgeMap-ok kiirasa#vege
hegyi@677
   203
    
hegyi@677
   204
    
hegyi@677
   205
  }
hegyi@677
   206
}