alpar@209: /* -*- mode: C++; indent-tabs-mode: nil; -*- alpar@96: * alpar@209: * This file is a part of LEMON, a generic C++ optimization library. alpar@96: * alpar@440: * Copyright (C) 2003-2009 alpar@96: * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport alpar@96: * (Egervary Research Group on Combinatorial Optimization, EGRES). alpar@96: * alpar@96: * Permission to use, modify and distribute this software is granted alpar@96: * provided that this copyright notice appears in all copies. For alpar@96: * precise terms see the accompanying LICENSE file. alpar@96: * alpar@96: * This software is provided "AS IS" with no warranty of any kind, alpar@96: * express or implied, and with no claim as to its suitability for any alpar@96: * purpose. alpar@96: * alpar@96: */ alpar@96: alpar@96: #include <string> alpar@96: #include <iostream> alpar@96: alpar@96: #include <lemon/concepts/path.h> alpar@96: #include <lemon/concepts/digraph.h> alpar@96: alpar@96: #include <lemon/path.h> alpar@96: #include <lemon/list_graph.h> alpar@96: alpar@96: #include "test_tools.h" alpar@96: alpar@96: using namespace std; alpar@96: using namespace lemon; alpar@96: alpar@96: void check_concepts() { alpar@96: checkConcept<concepts::Path<ListDigraph>, concepts::Path<ListDigraph> >(); alpar@96: checkConcept<concepts::Path<ListDigraph>, Path<ListDigraph> >(); alpar@96: checkConcept<concepts::Path<ListDigraph>, SimplePath<ListDigraph> >(); alpar@96: checkConcept<concepts::Path<ListDigraph>, StaticPath<ListDigraph> >(); alpar@96: checkConcept<concepts::Path<ListDigraph>, ListPath<ListDigraph> >(); alpar@96: } alpar@96: alpar@990: // Check if proper copy consructor is called (use valgrind for testing) alpar@990: template<class _Path> alpar@990: void checkCopy() alpar@990: { alpar@990: ListDigraph g; alpar@990: ListDigraph::Arc a = g.addArc(g.addNode(), g.addNode()); alpar@990: alpar@990: _Path p,q; alpar@990: p.addBack(a); alpar@990: q=p; alpar@990: _Path r(p); alpar@990: StaticPath<ListDigraph> s(r); alpar@990: } alpar@990: alpar@96: int main() { alpar@209: check_concepts(); alpar@990: alpar@990: checkCopy<Path<ListDigraph> >(); alpar@990: checkCopy<SimplePath<ListDigraph> >(); alpar@990: checkCopy<ListPath<ListDigraph> >(); alpar@990: alpar@990: ListDigraph g; alpar@990: ListDigraph::Arc a = g.addArc(g.addNode(), g.addNode()); alpar@990: alpar@990: Path<ListDigraph> p; alpar@990: StaticPath<ListDigraph> q,r; alpar@990: p.addBack(a); alpar@990: q=p; alpar@990: r=q; alpar@990: StaticPath<ListDigraph> s(q); alpar@990: alpar@96: return 0; alpar@96: }