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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libstdc++-v3/] [testsuite/] [ext/] [pb_ds/] [regression/] [tree_map_rand_debug.cc] - Blame information for rev 742

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 742 jeremybenn
// { dg-require-debug-mode "" }
2
// { dg-require-time "" }
3
// This can take long on simulators, timing out the test.
4
// { dg-options "-DITERATIONS=5" { target simulator } }
5
// { dg-timeout-factor 2.0 }
6
 
7
// -*- C++ -*-
8
 
9
// Copyright (C) 2011 Free Software Foundation, Inc.
10
//
11
// This file is part of the GNU ISO C++ Library.  This library is free
12
// software; you can redistribute it and/or modify it under the terms
13
// of the GNU General Public License as published by the Free Software
14
// Foundation; either version 3, or (at your option) any later
15
// version.
16
 
17
// This library is distributed in the hope that it will be useful, but
18
// WITHOUT ANY WARRANTY; without even the implied warranty of
19
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20
// General Public License for more details.
21
 
22
// You should have received a copy of the GNU General Public License
23
// along with this library; see the file COPYING3.  If not see
24
// <http://www.gnu.org/licenses/>.
25
 
26
/**
27
 * @file tree_data_map_rand_debug.cc
28
 * Contains a random-operation test for maps and sets, separated out.
29
 */
30
 
31
#define PB_DS_REGRESSION
32
//#define PB_DS_REGRESSION_TRACE
33
 
34
#include <regression/rand/assoc/rand_regression_test.hpp>
35
#include <regression/common_type.hpp>
36
#include <ext/throw_allocator.h>
37
#include <ext/pb_ds/tag_and_trait.hpp>
38
 
39
#ifndef ITERATIONS
40
# define ITERATIONS 100
41
#endif
42
 
43
#ifndef KEYS
44
# define KEYS 200
45
#endif
46
 
47
// Debug version of the rand regression tests, based on tree_data_map.
48
 
49
// 1
50
// Simplify things by unrolling the typelist of the different
51
// container types into individual statements.
52
//
53
// Unroll the typelist represented by tree_types, from
54
// regression/common_type.hpp. This is just a compile-time list of 6
55
// tree types, with different policies for the type of tree
56
// (ov_tree_tag, rb_tree_tag, splay_tree_tag) and for the node
57
// update (null_node_update, tree_order_statistics_node_update)
58
 
59
using namespace __gnu_pbds::test::detail;
60
using namespace __gnu_pbds;
61
typedef __gnu_pbds::test::basic_type                    basic_type;
62
typedef __gnu_cxx::throw_allocator_random<basic_type>   allocator_type;
63
 
64
// ov_tree_tag
65
typedef tree<basic_type, basic_type, std::less<basic_type>,
66
             ov_tree_tag, null_node_update,
67
             allocator_type>                            ov_tree_type1;
68
 
69
typedef tree<basic_type, basic_type, std::less<basic_type>,
70
             ov_tree_tag, tree_order_statistics_node_update,
71
             allocator_type>                            ov_tree_type2;
72
 
73
// rb_tree_tag
74
typedef tree<basic_type, basic_type, std::less<basic_type>,
75
             rb_tree_tag, null_node_update,
76
             allocator_type>                            rb_tree_type1;
77
 
78
typedef tree<basic_type, basic_type, std::less<basic_type>,
79
             rb_tree_tag, tree_order_statistics_node_update,
80
             allocator_type>                            rb_tree_type2;
81
 
82
// splay_tree_tag
83
typedef tree<basic_type, basic_type, std::less<basic_type>,
84
             splay_tree_tag, null_node_update,
85
             allocator_type>                            splay_tree_type1;
86
 
87
typedef tree<basic_type, basic_type, std::less<basic_type>,
88
             splay_tree_tag, tree_order_statistics_node_update,
89
             allocator_type>                            splay_tree_type2;
90
 
91
 
92
// 2
93
// Specialize container_rand_regression_test for specific container
94
// type and test function.
95
 
96
#ifdef SPECIALIZE
97
// For testing one specific container type.
98
typedef ov_tree_type2                                   test_type;
99
 
100
void debug_break_here() { }
101
 
102
namespace __gnu_pbds {
103
  namespace test {
104
    namespace detail {
105
 
106
      template<>
107
      void
108
      container_rand_regression_test<test_type>::operator()()
109
      {
110
      }
111
 
112
    }
113
  }
114
}
115
#endif
116
 
117
int
118
main()
119
{
120
  // Set up the test object.
121
  size_t sd = 1303948889;
122
  rand_reg_test test(sd, ITERATIONS, KEYS, 0.2, .6, .2, .001, .25, true);
123
 
124
  // 1
125
  // Determine the problem container, function that fails.
126
  test(ov_tree_type1());
127
  test(ov_tree_type2());
128
  test(rb_tree_type1());
129
  test(rb_tree_type2());
130
  test(splay_tree_type1());
131
  test(splay_tree_type2());
132
 
133
#ifdef SPECIALIZE
134
  // 2
135
  // With specified problem container set test_type typedef
136
  // appropriately above. Then, specialize operator()(), also
137
  // above. Finally, run this below.
138
  using namespace std;
139
  test_type obj;
140
  test(obj);
141
#endif
142
 
143
  return 0;
144
}

powered by: WebSVN 2.1.0

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