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

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [libstdc++-v3/] [testsuite/] [tr1/] [6_containers/] [tuple/] [cons/] [big_tuples.cc] - Blame information for rev 19

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 19 jlechner
// 2004-09-23 Chris Jefferson <chris@bubblescope.net>
2
 
3
// Copyright (C) 2004 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.
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 COPYING.  If not, write to the Free
18
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
19
// USA.
20
 
21
// Tuple
22
 
23
#include <tr1/tuple>
24
#include <testsuite_hooks.h>
25
 
26
using namespace std;
27
using namespace tr1;
28
 
29
// A simple class without conversions to check some things
30
struct foo
31
{ };
32
 
33
void
34
test_constructors()
35
{
36
  int x1=0,x2=0;
37
  const int &z1=x1;
38
 
39
  // Test empty constructor
40
  tuple<> ta;
41
  tuple<int,int> tb;
42
  // Test construction from values
43
  tuple<int,int> tc(x1,x2);
44
  tuple<int,int&> td(x1,x2);
45
  tuple<const int&> te(z1);
46
  x1=1;
47
  x2=1;
48
  VERIFY(get<0>(td) == 0 && get<1>(td) == 1 && get<0>(te) == 1);
49
 
50
  // Test identical tuple copy constructor
51
  tuple<int,int> tf(tc);
52
  tuple<int,int> tg(td);
53
  tuple<const int&> th(te);
54
  // Test different tuple copy constructor
55
  tuple<int,double> ti(tc);
56
  tuple<int,double> tj(td);
57
  // Test constructing from a pair
58
  pair<int,int> pair1(1,1);
59
  const pair<int,int> pair2(pair1);
60
  tuple<int,int> tl(pair1);
61
  tuple<int,const int&> tm(pair1);
62
  tuple<int,int> tn(pair2);
63
  tuple<int,const int&> to(pair2);
64
}
65
 
66
int
67
main(void)
68
{
69
  //test construction
70
  typedef tuple<int,int,int,int,int,int,int,int,int,int> type1;
71
  type1 a(0, 0, 0, 0, 0, 0, 0, 0, 0, 1);
72
  type1 b(0, 0, 0, 0, 0, 0, 0, 0, 0, 2);
73
  type1 c(a);
74
  typedef tuple<int,int,int,int,int,int,int,int,int,char> type2;
75
  type2 d(0, 0, 0, 0, 0, 0, 0, 0, 0, 3);
76
  type1 e(d);
77
  typedef tuple<foo,int,int,int,int,int,int,int,int,foo> type3;
78
  // get
79
  VERIFY(get<9>(a)==1 && get<9>(b)==2);
80
  // comparisons
81
  VERIFY(a==a && !(a!=a) && a<=a && a>=a && !(a<a) && !(a>a));
82
  VERIFY(!(a==b) && a!=b && a<=b && a<b && !(a>=b) && !(a>b));
83
  //tie
84
  {
85
    int i = 0;
86
  tie(ignore, ignore, ignore, ignore, ignore, ignore, ignore, ignore,
87
      ignore, i) = a;
88
  VERIFY(i == 1);
89
  }
90
  //test_assignment
91
  a=d;
92
  a=b;
93
  //make_tuple
94
  make_tuple(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
95
 
96
  //tuple_size
97
  VERIFY(tuple_size<type3>::value == 10);
98
  //tuple_element
99
  {
100
    foo q1;
101
    tuple_element<0,type3>::type q2(q1);
102
    tuple_element<9,type3>::type q3(q1);
103
  }
104
 
105
}
106
 

powered by: WebSVN 2.1.0

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