My Project  debian-1:4.1.2-p1+ds-2
common.h
Go to the documentation of this file.
1 #ifndef TESTS_COMMON_H
2 #define TESTS_COMMON_H
3 
4 #include <iostream>
5 #include <fstream>
6 #include <string.h>
7 
8 #include "cxxtest/TestSuite.h"
10 
11 #include "misc/auxiliary.h"
12 
13 #include "coeffs/coeffs.h"
14 #include "coeffs/numbers.h"
15 
16 #include "reporter/reporter.h"
17 #include "resources/feResource.h"
18 
19 #ifndef PLURAL_INTERNAL_DECLARATIONS
20 #define PLURAL_INTERNAL_DECLARATIONS
21 #endif
22 
23 #include "polys/nc/gb_hack.h"
24 
25 // #pragma GCC diagnostic ignored "-Wwrite-strings"
26 namespace
27 {
28  static inline std::ostream& operator<< (std::ostream& o, const n_coeffType& type)
29  {
30 #define CASE(A) case A: return o << (" " # A) << " ";
31  switch( type )
32  {
33  CASE(n_unknown);
34  CASE(n_Zp);
35  CASE(n_Q);
36  CASE(n_R);
37  CASE(n_GF);
38  CASE(n_long_R);
39  CASE(n_algExt);
41  CASE(n_long_C);
42  CASE(n_Z);
43  CASE(n_Zn);
44  CASE(n_Znm);
45  CASE(n_Z2m);
46  CASE(n_CF);
47  default: return o << "Unknown type: [" << (const unsigned long) type << "]";
48  }
49 #undef CASE
50  return o;
51  }
52 
53  template<typename T>
54  static inline std::string _2S(T i)
55  {
56  std::stringstream ss;
57  ss << i;
58 // std::string s = ss.str();
59  return ss.str();
60  }
61 
62 
63  static inline std::string _2S(number a, const coeffs r)
64  {
65  n_Test(a,r);
66  StringSetS("");
67  n_Write(a, r);
68 
69  std::stringstream ss;
70  {
71  char* s = StringEndS(); ss << s; omFree(s);
72  }
73 
74  return ss.str();
75 
76  }
77 
78  static inline void PrintSized(/*const*/ number a, const coeffs r, BOOLEAN eoln = TRUE)
79  {
80  std::clog << _2S(a, r) << ", of size: " << n_Size(a, r);
81 
82  if( eoln )
83  std::clog << std::endl;
84  }
85 
86 
87 
88 }
89 
91 {
92  std::ofstream _ofs;
93  bool _redirect;
94  public:
95  GlobalPrintingFixture(bool redirect = false): _redirect(redirect){}
96 
98  {
99  if( _ofs)
100  _ofs.close();
101  }
102 
103  void Redirect()
104  {
105  const int ll = strlen(argv0);
106  const int l = 5 + ll;
107  char* s = (char *)omAlloc0(l);
108  s = strncpy(s, argv0, ll);
109  strncpy(s + ll, ".log", 4);
110  _ofs.open(s); // , ios_base::out)
111  omFreeSize((ADDRESS)s, l);
112 
113  std::clog.rdbuf(_ofs.rdbuf());
114  }
115 
116  virtual bool setUpWorld()
117  {
118  if( _redirect )
119  Redirect();
120 
121  std::clog << std::endl << ( "<world>" ) << std::endl << std::endl;
123 
124  StringSetS("ressources in use (as reported by feStringAppendResources(0):\n");
126 
127  { char* s = StringEndS(); PrintS(s); omFree(s); }
128 
129  return true;
130  }
131 
132  virtual bool tearDownWorld()
133  {
134  std::clog << std::endl << std::endl <<( "</world>" ) << std::endl << std::endl ;
135  return true;
136  }
137  virtual bool setUp() { std::clog << std::endl << std::endl <<( "<test>" ) << std::endl << std::endl; return true; }
138  virtual bool tearDown() { std::clog << std::endl << std::endl <<( "</test>" ) << std::endl << std::endl; return true; }
139 };
140 
141 
142 template void CxxTest::doAssertDiffers<n_Procs_s*, void*>(char const*, unsigned int, char const*, n_Procs_s*, char const*, void*, char const*);
143 template void CxxTest::doAssertDiffers<snumber* (*)(long, n_Procs_s*), void*>(char const*, unsigned int, char const*, snumber* (*)(long, n_Procs_s*), char const*, void*, char const*);
144 template void CxxTest::doAssertDiffers<snumber* (*)(snumber*, snumber*, n_Procs_s*), void*>(char const*, unsigned int, char const*, snumber* (*)(snumber*, snumber*, n_Procs_s*), char const*, void*, char const*);
145 template void CxxTest::doAssertDiffers<void (*)(n_Procs_s*, int), void*>(char const*, unsigned int, char const*, void (*)(n_Procs_s*, int), char const*, void*, char const*);
146 template void CxxTest::doAssertDiffers<void (*)(snumber**, n_Procs_s*), void*>(char const*, unsigned int, char const*, void (*)(snumber**, n_Procs_s*), char const*, void*, char const*);
147 template void CxxTest::doAssertDiffers<void (*)(snumber*&, n_Procs_s*), void*>(char const*, unsigned int, char const*, void (*)(snumber*&, n_Procs_s*), char const*, void*, char const*);
148 template void CxxTest::doAssertEquals<int, int>(char const*, unsigned int, char const*, int, char const*, int, char const*);
149 template void CxxTest::doAssertEquals<n_coeffType, n_coeffType>(char const*, unsigned int, char const*, n_coeffType, char const*, n_coeffType, char const*);
150 template void CxxTest::doAssertEquals<snumber* (*)(long, n_Procs_s*), snumber* (*)(long, n_Procs_s*)>(char const*, unsigned int, char const*, snumber* (*)(long, n_Procs_s*), char const*, snumber* (*)(long, n_Procs_s*), char const*);
151 template void CxxTest::doAssertEquals<snumber* (*)(snumber*, snumber*, n_Procs_s*), snumber* (*)(snumber*, snumber*, n_Procs_s*)>(char const*, unsigned int, char const*, snumber* (*)(snumber*, snumber*, n_Procs_s*), char const*, snumber* (*)(snumber*, snumber*, n_Procs_s*), char const*);
152 template void CxxTest::doAssertEquals<void (*)(snumber**, n_Procs_s*), void (*)(snumber**, n_Procs_s*)>(char const*, unsigned int, char const*, void (*)(snumber**, n_Procs_s*), char const*, void (*)(snumber**, n_Procs_s*), char const*);
153 
154 template bool CxxTest::differs<n_Procs_s*, void*>(n_Procs_s*, void*);
155 template bool CxxTest::differs<snumber* (*)(long, n_Procs_s*), void*>(snumber* (*)(long, n_Procs_s*), void*);
156 template bool CxxTest::differs<snumber* (*)(snumber*, snumber*, n_Procs_s*), void*>(snumber* (*)(snumber*, snumber*, n_Procs_s*), void*);
157 template bool CxxTest::differs<void (*)(n_Procs_s*, int), void*>(void (*)(n_Procs_s*, int), void*);
158 template bool CxxTest::differs<void (*)(snumber**, n_Procs_s*), void*>(void (*)(snumber**, n_Procs_s*), void*);
159 template bool CxxTest::differs<void (*)(snumber*&, n_Procs_s*), void*>(void (*)(snumber*&, n_Procs_s*), void*);
160 template bool CxxTest::equals<int, int>(int, int);
161 template bool CxxTest::equals<n_coeffType, n_coeffType>(n_coeffType, n_coeffType);
162 template bool CxxTest::equals<snumber* (*)(long, n_Procs_s*), snumber* (*)(long, n_Procs_s*)>(snumber* (*)(long, n_Procs_s*), snumber* (*)(long, n_Procs_s*));
163 template bool CxxTest::equals<snumber* (*)(snumber*, snumber*, n_Procs_s*), snumber* (*)(snumber*, snumber*, n_Procs_s*)>(snumber* (*)(snumber*, snumber*, n_Procs_s*), snumber* (*)(snumber*, snumber*, n_Procs_s*));
164 template bool CxxTest::equals<void (*)(snumber**, n_Procs_s*), void (*)(snumber**, n_Procs_s*)>(void (*)(snumber**, n_Procs_s*), void (*)(snumber**, n_Procs_s*));
165 template char* CxxTest::numberToString<long>(long, char*, long, unsigned int, unsigned int);
166 
167 template void CxxTest::doAssertDiffers<ip_sring*, void*>(char const*, unsigned int, char const*, ip_sring*, char const*, void*, char const*);
168 template void CxxTest::doAssertEquals<short, int>(char const*, unsigned int, char const*, short, char const*, int, char const*);
169 
170 template bool CxxTest::differs<ip_sring*, void*>(ip_sring*, void*);
171 template bool CxxTest::equals<short, int>(short, int);
172 
173 #endif /* TESTS_COMMON_H */
feInitResources
void feInitResources(const char *argv0)
Definition: feResource.cc:167
GlobalPrintingFixture::GlobalPrintingFixture
GlobalPrintingFixture(bool redirect=false)
Definition: common.h:95
n_Zn
only used if HAVE_RINGS is defined
Definition: coeffs.h:44
GlobalPrintingFixture::_redirect
bool _redirect
Definition: common.h:93
omFree
#define omFree(addr)
Definition: omAllocDecl.h:259
n_long_C
complex floating point (GMP) numbers
Definition: coeffs.h:41
ADDRESS
void * ADDRESS
Definition: auxiliary.h:135
n_Z2m
only used if HAVE_RINGS is defined
Definition: coeffs.h:46
n_GF
\GF{p^n < 2^16}
Definition: coeffs.h:32
n_Q
rational (GMP) numbers
Definition: coeffs.h:30
auxiliary.h
n_Znm
only used if HAVE_RINGS is defined
Definition: coeffs.h:45
GlobalPrintingFixture::~GlobalPrintingFixture
~GlobalPrintingFixture()
Definition: common.h:97
reporter.h
StringEndS
char * StringEndS()
Definition: reporter.cc:150
GlobalPrintingFixture::setUp
virtual bool setUp()
Definition: common.h:137
feStringAppendResources
void feStringAppendResources(int warn)
Definition: reporter.cc:397
n_long_R
real floating point (GMP) numbers
Definition: coeffs.h:33
n_coeffType
n_coeffType
Definition: coeffs.h:26
GlobalPrintingFixture::_ofs
std::ofstream _ofs
Definition: common.h:92
TRUE
#define TRUE
Definition: auxiliary.h:100
i
int i
Definition: cfEzgcd.cc:125
GlobalPrintingFixture
Definition: common.h:90
n_CF
?
Definition: coeffs.h:47
n_Write
static FORCE_INLINE void n_Write(number n, const coeffs r, const BOOLEAN bShortOut=TRUE)
Definition: coeffs.h:590
PrintS
void PrintS(const char *s)
Definition: reporter.cc:283
omFreeSize
#define omFreeSize(addr, size)
Definition: omAllocDecl.h:258
BOOLEAN
int BOOLEAN
Definition: auxiliary.h:87
operator<<
ostream & operator<<(ostream &s, const spectrum &spec)
Definition: semic.cc:249
GlobalPrintingFixture::tearDownWorld
virtual bool tearDownWorld()
Definition: common.h:132
argv0
char * argv0
Definition: coeffs_test_runner.cpp:14
TestSuite.h
coeffs
ip_sring
Definition: ring.h:246
n_Z
only used if HAVE_RINGS is defined
Definition: coeffs.h:43
T
STATIC_VAR jList * T
Definition: janet.cc:30
GlobalPrintingFixture::setUpWorld
virtual bool setUpWorld()
Definition: common.h:116
CxxTest::GlobalFixture
Definition: GlobalFixture.h:8
n_transExt
used for all transcendental extensions, i.e., the top-most extension in an extension tower is transce...
Definition: coeffs.h:38
snumber
'SR_INT' is the type of those integers small enough to fit into 29 bits.
Definition: longrat.h:46
n_R
single prescision (6,6) real numbers
Definition: coeffs.h:31
gb_hack.h
GlobalPrintingFixture::Redirect
void Redirect()
Definition: common.h:103
n_Zp
\F{p < 2^31}
Definition: coeffs.h:29
StringSetS
void StringSetS(const char *st)
Definition: reporter.cc:127
CASE
#define CASE(A)
GlobalPrintingFixture::tearDown
virtual bool tearDown()
Definition: common.h:138
string
#define string
Definition: libparse.cc:1251
l
int l
Definition: cfEzgcd.cc:93
GlobalFixture.h
feResource.h
s
const CanonicalForm int s
Definition: facAbsFact.cc:55
n_Size
static FORCE_INLINE int n_Size(number n, const coeffs r)
return a non-negative measure for the complexity of n; return 0 only when n represents zero; (used fo...
Definition: coeffs.h:569
n_Test
#define n_Test(a, r)
BOOLEAN n_Test(number a, const coeffs r)
Definition: coeffs.h:737
n_unknown
Definition: coeffs.h:28
numbers.h
omAlloc0
#define omAlloc0(size)
Definition: omAllocDecl.h:209
n_Procs_s
Definition: coeffs.h:121
n_algExt
used for all algebraic extensions, i.e., the top-most extension in an extension tower is algebraic
Definition: coeffs.h:35
coeffs.h