OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc3/] [libstdc++-v3/] [testsuite/] [20_util/] [shared_ptr/] [comparison/] [cmp.cc] - Blame information for rev 516

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 424 jeremybenn
// { dg-options "-std=gnu++0x" }
2
 
3
// Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation
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 3, or (at your option)
9
// any later version.
10
 
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.
15
 
16
// You should have received a copy of the GNU General Public License along
17
// with this library; see the file COPYING3.  If not see
18
// <http://www.gnu.org/licenses/>.
19
 
20
// 20.6.6.2 Template class shared_ptr [util.smartptr.shared]
21
 
22
#include <memory>
23
#include <testsuite_hooks.h>
24
 
25
struct A
26
{
27
  virtual ~A() { }
28
};
29
 
30
struct B : A
31
{
32
};
33
 
34
// 20.6.6.2.6 shared_ptr comparison [util.smartptr.shared.cmp]
35
 
36
int
37
test01()
38
{
39
  bool test __attribute__((unused)) = true;
40
 
41
  // test empty shared_ptrs compare equivalent
42
  std::shared_ptr<A> p1;
43
  std::shared_ptr<B> p2;
44
  VERIFY( p1 == p2 );
45
  VERIFY( !(p1 != p2) );
46
  VERIFY( !(p1 < p2) && !(p2 < p1) );
47
  return 0;
48
}
49
 
50
 
51
// Construction from pointer
52
int
53
test02()
54
{
55
  bool test __attribute__((unused)) = true;
56
 
57
  std::shared_ptr<A> A_default;
58
 
59
  std::shared_ptr<A> A_from_A(new A);
60
  VERIFY( A_default != A_from_A );
61
  VERIFY( !(A_default == A_from_A) );
62
  VERIFY( (A_default < A_from_A) || (A_from_A < A_default) );
63
 
64
  std::shared_ptr<B> B_from_B(new B);
65
  VERIFY( B_from_B != A_from_A );
66
  VERIFY( !(B_from_B == A_from_A) );
67
  VERIFY( (B_from_B < A_from_A) || (A_from_A < B_from_B) );
68
 
69
  A_from_A.reset();
70
  VERIFY( A_default == A_from_A );
71
  VERIFY( !(A_default != A_from_A) );
72
  VERIFY( !(A_default < A_from_A) && !(A_from_A < A_default) );
73
 
74
  B_from_B.reset();
75
  VERIFY( B_from_B == A_from_A );
76
  VERIFY( !(B_from_B != A_from_A) );
77
  VERIFY( !(B_from_B < A_from_A) && !(A_from_A < B_from_B) );
78
 
79
  return 0;
80
}
81
 
82
int
83
test03()
84
{
85
  bool test __attribute__((unused)) = true;
86
 
87
  std::shared_ptr<A> p1;
88
 
89
  // check other operators are defined
90
  VERIFY( p1 <= p1 );
91
  VERIFY( p1 >= p1 );
92
  VERIFY( !(p1 > p1) );
93
 
94
  return 0;
95
}
96
 
97
int
98
main()
99
{
100
  test01();
101
  test02();
102
  test03();
103
  return 0;
104
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.