test/refptr_test.cc
changeset 2301 eb378706bd3d
child 2391 14a343be7a5a
equal deleted inserted replaced
-1:000000000000 0:8a7a3cc806b8
       
     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