test/lgf_test.cc
branch1.1
changeset 760 f22bc76370b2
child 761 f1398882a928
child 764 b96574ff36ec
equal deleted inserted replaced
-1:000000000000 0:2c4a17d48af5
       
     1 /* -*- mode: C++; indent-tabs-mode: nil; -*-
       
     2  *
       
     3  * This file is a part of LEMON, a generic C++ optimization library.
       
     4  *
       
     5  * Copyright (C) 2003-2011
       
     6  * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
       
     7  * (Egervary Research Group on Combinatorial Optimization, EGRES).
       
     8  *
       
     9  * Permission to use, modify and distribute this software is granted
       
    10  * provided that this copyright notice appears in all copies. For
       
    11  * precise terms see the accompanying LICENSE file.
       
    12  *
       
    13  * This software is provided "AS IS" with no warranty of any kind,
       
    14  * express or implied, and with no claim as to its suitability for any
       
    15  * purpose.
       
    16  *
       
    17  */
       
    18 
       
    19 #include <lemon/list_graph.h>
       
    20 #include <lemon/lgf_reader.h>
       
    21 #include "test_tools.h"
       
    22 
       
    23 using namespace lemon;
       
    24 
       
    25 char test_lgf[] =
       
    26   "@nodes\n"
       
    27   "label\n"
       
    28   "0\n"
       
    29   "1\n"
       
    30   "@arcs\n"
       
    31   "     label\n"
       
    32   "0 1  0\n"
       
    33   "1 0  1\n"
       
    34   "@attributes\n"
       
    35   "source 0\n"
       
    36   "target 1\n";
       
    37 
       
    38 char test_lgf_nomap[] =
       
    39   "@nodes\n"
       
    40   "label\n"
       
    41   "0\n"
       
    42   "1\n"
       
    43   "@arcs\n"
       
    44   "     -\n"
       
    45   "0 1\n";
       
    46 
       
    47 char test_lgf_bad1[] =
       
    48   "@nodes\n"
       
    49   "label\n"
       
    50   "0\n"
       
    51   "1\n"
       
    52   "@arcs\n"
       
    53   "     - another\n"
       
    54   "0 1\n";
       
    55 
       
    56 char test_lgf_bad2[] =
       
    57   "@nodes\n"
       
    58   "label\n"
       
    59   "0\n"
       
    60   "1\n"
       
    61   "@arcs\n"
       
    62   "     label -\n"
       
    63   "0 1\n";
       
    64 
       
    65 
       
    66 int main() 
       
    67 {
       
    68   {
       
    69     ListDigraph d; 
       
    70     ListDigraph::Node s,t;
       
    71     ListDigraph::ArcMap<int> label(d);
       
    72     std::istringstream input(test_lgf);
       
    73     digraphReader(d, input).
       
    74       node("source", s).
       
    75       node("target", t).
       
    76       arcMap("label", label).
       
    77       run();
       
    78     check(countNodes(d) == 2,"There should be 2 nodes");
       
    79     check(countArcs(d) == 2,"There should be 2 arcs");
       
    80   }
       
    81   {
       
    82     ListGraph g;
       
    83     ListGraph::Node s,t;
       
    84     ListGraph::EdgeMap<int> label(g);
       
    85     std::istringstream input(test_lgf);
       
    86     graphReader(g, input).
       
    87       node("source", s).
       
    88       node("target", t).
       
    89       edgeMap("label", label).
       
    90       run();
       
    91     check(countNodes(g) == 2,"There should be 2 nodes");
       
    92     check(countEdges(g) == 2,"There should be 2 arcs");
       
    93   }
       
    94 
       
    95   {
       
    96     ListDigraph d; 
       
    97     std::istringstream input(test_lgf_nomap);
       
    98     digraphReader(d, input).
       
    99       run();
       
   100     check(countNodes(d) == 2,"There should be 2 nodes");
       
   101     check(countArcs(d) == 1,"There should be 1 arc");
       
   102   }
       
   103   {
       
   104     ListGraph g;
       
   105     std::istringstream input(test_lgf_nomap);
       
   106     graphReader(g, input).
       
   107       run();
       
   108     check(countNodes(g) == 2,"There should be 2 nodes");
       
   109     check(countEdges(g) == 1,"There should be 1 edge");
       
   110   }
       
   111 
       
   112   {
       
   113     ListDigraph d; 
       
   114     std::istringstream input(test_lgf_bad1);
       
   115     bool ok=false;
       
   116     try {
       
   117       digraphReader(d, input).
       
   118         run();
       
   119     }
       
   120     catch (FormatError& error) 
       
   121       {
       
   122         ok = true;
       
   123       }
       
   124     check(ok,"FormatError exception should have occured");
       
   125   }
       
   126   {
       
   127     ListGraph g;
       
   128     std::istringstream input(test_lgf_bad1);
       
   129     bool ok=false;
       
   130     try {
       
   131       graphReader(g, input).
       
   132         run();
       
   133     }
       
   134     catch (FormatError& error)
       
   135       {
       
   136         ok = true;
       
   137       }
       
   138     check(ok,"FormatError exception should have occured");
       
   139   }
       
   140 
       
   141   {
       
   142     ListDigraph d; 
       
   143     std::istringstream input(test_lgf_bad2);
       
   144     bool ok=false;
       
   145     try {
       
   146       digraphReader(d, input).
       
   147         run();
       
   148     }
       
   149     catch (FormatError& error)
       
   150       {
       
   151         ok = true;
       
   152       }
       
   153     check(ok,"FormatError exception should have occured");
       
   154   }
       
   155   {
       
   156     ListGraph g;
       
   157     std::istringstream input(test_lgf_bad2);
       
   158     bool ok=false;
       
   159     try {
       
   160       graphReader(g, input).
       
   161         run();
       
   162     }
       
   163     catch (FormatError& error)
       
   164       {
       
   165         ok = true;
       
   166       }
       
   167     check(ok,"FormatError exception should have occured");
       
   168   }
       
   169 }