Dead
[official-gcc.git] / gomp-20050608-branch / libstdc++-v3 / testsuite / tr1 / 3_function_objects / function / 1.cc
blob50469eb5b5ea8dc677a0e578d4c8793688f1ed2f
1 // 2005-01-15 Douglas Gregor <dgregor@cs.indiana.edu>
2 //
3 // Copyright (C) 2005 Free Software Foundation, Inc.
4 //
5 // This file is part of the GNU ISO C++ Library. This library is free
6 // software; you can redistribute it and/or modify it under the
7 // terms of the GNU General Public License as published by the
8 // Free Software Foundation; either version 2, or (at your option)
9 // any later version.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with this library; see the file COPYING. If not, write to the Free
18 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
19 // USA.
21 // 3.7.2 polymorphic function object wrapper
22 #include <tr1/functional>
23 #include <testsuite_hooks.h>
24 #include <testsuite_tr1.h>
26 using namespace __gnu_test;
28 bool test __attribute__((unused)) = true;
30 // Operations on empty function<> objects
31 void test01()
33 using std::tr1::function;
34 using std::tr1::bad_function_call;
36 // Default-construction
37 function<int(float)> f1;
38 VERIFY( ((bool)f1 == false) );
39 VERIFY( !f1 );
40 VERIFY( f1 == 0 );
41 VERIFY( 0 == f1 );
42 VERIFY( !(f1 != 0) );
43 VERIFY( !(0 != f1) );
45 // Copy-construction
46 function<int(float)> f2(f1);
47 VERIFY( !f2 );
49 // Construct with NULL pointer
50 function<int(float)> f3(0);
51 VERIFY( !f3 );
53 // Assignment
54 f1 = f2;
55 VERIFY( !f1);
57 // Assignment to NULL pointer
58 f1 = 0;
59 VERIFY( !f1 );
61 // Swap
62 swap(f1, f2);
63 VERIFY( !f1 );
64 VERIFY( !f2 );
66 // Invocation should throw bad_function_call
67 bool thrown = false;
68 try
70 f1(3.14159f);
71 VERIFY( false );
73 catch (bad_function_call)
75 thrown = true;
77 VERIFY( thrown );
79 // target_type returns typeid(void)
80 VERIFY( f1.target_type() == typeid(void) );
82 // target() always returns a NULL pointer
83 VERIFY( f1.target<int (*)(float)>() == 0);
85 // Check const version
86 const function<int(float)>& f1c = f1;
87 VERIFY( f1c.target<int (*)(float)>() == 0 );
88 VERIFY( !f1c );
91 int main()
93 test01();
94 return 0;