15 using namespace gtsam;
 
   28   std::vector<size_t> 
keys{0, 1, 2, 3, 4};
 
   31   std::optional<MetisResult> actual = separatorPartitionByMetis<GenericGraph2D>(
graph, 
keys,
 
   34   CHECK(actual.has_value());
 
   35   vector<size_t> A_expected{0, 3}; 
 
   36   vector<size_t> B_expected{2, 4}; 
 
   37   vector<size_t> C_expected{1};    
 
   38   CHECK(A_expected == actual->A);
 
   39   CHECK(B_expected == actual->B);
 
   40   CHECK(C_expected == actual->C);
 
   46 TEST ( Partition, separatorPartitionByMetis2 )
 
   53   std::vector<size_t> 
keys{1, 2, 3, 5, 6};
 
   56   std::optional<MetisResult> actual = separatorPartitionByMetis<GenericGraph2D>(
graph, 
keys,
 
   59   CHECK(actual.has_value());
 
   60   vector<size_t> A_expected{1, 5}; 
 
   61   vector<size_t> B_expected{3, 6}; 
 
   62   vector<size_t> C_expected{2};    
 
   63   CHECK(A_expected == actual->A);
 
   64   CHECK(B_expected == actual->B);
 
   65   CHECK(C_expected == actual->C);
 
   76   std::vector<size_t> 
keys{0, 1, 2, 3};
 
   79   std::optional<MetisResult> actual = edgePartitionByMetis<GenericGraph3D>(
graph, 
keys,
 
   82   CHECK(actual.has_value());
 
   83   vector<size_t> A_expected{0, 1}; 
 
   84   vector<size_t> B_expected{2, 3}; 
 
   85   vector<size_t> C_expected;    
 
   93   CHECK(A_expected == actual->A || A_expected == actual->B);
 
   94   CHECK(B_expected == actual->B || B_expected == actual->A);
 
   95   CHECK(C_expected == actual->C);
 
  100 TEST ( Partition, edgePartitionByMetis2 )
 
  108   #if !defined(__QNX__) 
  109   std::vector<size_t> 
keys{0, 1, 2, 3, 4};
 
  112   std::vector<size_t> 
keys{2, 0, 3, 1, 4};
 
  116   std::optional<MetisResult> actual = edgePartitionByMetis<GenericGraph3D>(
graph, 
keys,
 
  118   CHECK(actual.has_value());
 
  119   vector<size_t> A_expected{0, 1}; 
 
  120   vector<size_t> B_expected{2, 3, 4}; 
 
  121   vector<size_t> C_expected;    
 
  122   CHECK(A_expected == actual->A);
 
  123   CHECK(B_expected == actual->B);
 
  124   CHECK(C_expected == actual->C);
 
  137   std::vector<size_t> 
keys{0, 1, 2, 3, 4};
 
  140   int minNodesPerMap = -1;
 
  141   bool reduceGraph = 
false;
 
  142   int numSubmaps = findSeparator<GenericGraph2D>(
graph, 
keys, minNodesPerMap, workspace,
 
  143     false, {}, reduceGraph, 0, 0);
 
  156 TEST ( Partition, findSeparator2 )
 
  163   std::vector<size_t> 
keys{1, 2, 3, 5, 6};
 
  166   int minNodesPerMap = -1;
 
  167   bool reduceGraph = 
false;
 
  168   int numSubmaps = findSeparator<GenericGraph2D>(
graph, 
keys, minNodesPerMap, workspace,
 
  169     false, {}, reduceGraph, 0, 0);
 
  188 TEST ( Partition, findSeparator3_with_reduced_camera )
 
  191   for (
int j=1; 
j<=8; 
j++)
 
  193   for (
int j=1; 
j<=16; 
j++)
 
  195   for (
int j=9; 
j<=24; 
j++)
 
  197   for (
int j=17; 
j<=24; 
j++)
 
  200   std::vector<size_t> 
keys;
 
  201   for(
int i=1; 
i<=28; 
i++)
 
  204   vector<Symbol> int2symbol;
 
  205   int2symbol.push_back(
Symbol(
'x',0)); 
 
  206   for(
int i=1; 
i<=24; 
i++)
 
  207     int2symbol.push_back(
Symbol(
'l',
i));
 
  208   int2symbol.push_back(
Symbol(
'x',25));
 
  209   int2symbol.push_back(
Symbol(
'x',26));
 
  210   int2symbol.push_back(
Symbol(
'x',27));
 
  211   int2symbol.push_back(
Symbol(
'x',28));
 
  214   bool reduceGraph = 
true;
 
  219   for (
int j=1; 
j<=8; 
j++)
 
  221   for (
int j=9; 
j<=16; 
j++)
 
  223   for (
int j=17; 
j<=24; 
j++)