test/refptr_test.cc
author deba
Fri, 24 Feb 2006 11:13:09 +0000
changeset 1984 d4cbd10e1256
child 2391 14a343be7a5a
permissions -rw-r--r--
Bug fix
     1 /* -*- C++ -*-
     2  *
     3  * This file is a part of LEMON, a generic C++ optimization library
     4  *
     5  * Copyright (C) 2003-2006
     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/refptr.h>
    20 #include "test_tools.h"
    21 #include <iostream>
    22 
    23 class Test 
    24 {
    25   int &_counter;
    26 public:
    27   Test(int &co) : _counter(co)
    28   {
    29     std::cerr << "Init\n";
    30     _counter++;
    31   }
    32   ~Test()
    33   {
    34     std::cerr << "Destroy\n";
    35     _counter--;
    36   }
    37   int &counter() { return _counter; }
    38   
    39 };
    40 
    41 int main()
    42 {
    43   int c=0;
    44   
    45   {
    46     RefPtr<Test> a = new Test(c);
    47     check(a->counter() == 1, "Wrong number of initialization");
    48     {
    49       RefPtr<Test> b = a;
    50       check((*b).counter() == 1, "Wrong number of initialization");
    51       b=a;
    52       a=b;
    53       check((*a).counter() == 1, "Wrong number of initialization");
    54     }
    55     check(a->counter() == 1, "Wrong number of initialization");
    56   }
    57   check(c == 0, "Wrong number of initialization");
    58 
    59   return 0;
    60 }
    61