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