source: git/libpolys/tests/common.h @ 7bb7da5

spielwiese
Last change on this file since 7bb7da5 was ba5e9e, checked in by Oleksandr Motsak <motsak@…>, 11 years ago
Changed configure-scripts to generate individual public config files for each package: resources, libpolys, singular (main) fix: sources should include correct corresponding config headers.
  • Property mode set to 100644
File size: 7.2 KB
Line 
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>
9#include <cxxtest/GlobalFixture.h>
10
11#ifdef HAVE_CONFIG_H
12#include "libpolysconfig.h"
13#endif /* HAVE_CONFIG_H */
14
15#include <misc/auxiliary.h>
16#include <omalloc/omalloc.h>
17
18#include <coeffs/coeffs.h>
19#include <coeffs/numbers.h>
20
21#include <reporter/reporter.h>
22#include <resources/feResource.h>
23
24#ifndef PLURAL_INTERNAL_DECLARATIONS
25#define PLURAL_INTERNAL_DECLARATIONS
26#endif
27
28#ifndef PLURAL_INTERNAL_DECLARATIONS_GB_HACK
29#define PLURAL_INTERNAL_DECLARATIONS_GB_HACK
30#endif
31
32#include <polys/nc/gb_hack.h>
33
34#ifdef HAVE_FACTORY
35int initializeGMP(){ return 1; } // due to Factory...
36int mmInit(void) {return 1; } // ? due to SINGULAR!!!...???
37#endif
38
39// #pragma GCC diagnostic ignored "-Wwrite-strings"
40namespace
41{
42  static inline std::ostream& operator<< (std::ostream& o, const n_coeffType& type)
43  {
44#define CASE(A) case A: return o << (" " # A) << " ";
45    switch( type )
46    {
47      CASE(n_unknown);
48      CASE(n_Zp);
49      CASE(n_Q);
50      CASE(n_R);
51      CASE(n_GF);
52      CASE(n_long_R);
53      CASE(n_algExt);
54      CASE(n_transExt);
55      CASE(n_long_C);
56      CASE(n_Z);
57      CASE(n_Zn);
58      CASE(n_Znm);
59      CASE(n_Z2m);
60      CASE(n_CF);
61      default: return o << "Unknown type: [" << (const unsigned long) type << "]";
62    }
63#undef CASE
64    return o;
65  }
66
67  template<typename T>
68      static inline std::string _2S(T i)
69  {
70    std::stringstream ss;
71    ss << i;
72//    std::string s = ss.str();
73    return ss.str();
74  }
75
76
77  static inline std::string _2S(number a, const coeffs r)
78  {
79    n_Test(a,r);
80    StringSetS("");
81    n_Write(a, r);
82
83    std::stringstream ss; 
84    {
85      char* s = StringEndS();  ss << s; omFree(s); 
86    }
87
88    return ss.str();
89
90  }
91
92  static inline void PrintSized(/*const*/ number a, const coeffs r, BOOLEAN eoln = TRUE)
93  {
94    std::clog << _2S(a, r) << ", of size: " << n_Size(a, r);
95
96    if( eoln )
97      std::clog << std::endl;
98  }
99
100
101
102}
103
104class GlobalPrintingFixture : public CxxTest::GlobalFixture
105{
106   std::ofstream _ofs;
107   bool _redirect;
108  public:
109    GlobalPrintingFixture(bool redirect = false): _redirect(redirect){}
110
111    ~GlobalPrintingFixture()
112    {
113      if( _ofs)
114        _ofs.close();
115    }
116
117    void Redirect()
118    {
119      const int ll = strlen(argv0);
120      const int l = 5 + ll;
121      char* s = (char *)omAlloc0(l);
122      s = strncpy(s, argv0, ll);
123      strncpy(s + ll, ".log", 4);
124      _ofs.open(s); // , ios_base::out)
125      omFreeSize((ADDRESS)s, l);
126
127      std::clog.rdbuf(_ofs.rdbuf());
128    }
129
130    virtual bool setUpWorld()
131    {
132      if( _redirect )
133        Redirect();
134
135      std::clog << std::endl << ( "<world>" ) << std::endl << std::endl;
136      feInitResources(argv0);
137
138      StringSetS("ressources in use (as reported by feStringAppendResources(0):\n");
139      feStringAppendResources(0);
140       
141      { char* s = StringEndS(); PrintS(s); omFree(s); }
142       
143      return true;
144    }
145
146    virtual bool tearDownWorld()
147    {
148        std::clog << std::endl << std::endl <<( "</world>" )  << std::endl  << std::endl ;
149        return true;
150    }
151    virtual bool setUp() { std::clog << std::endl << std::endl <<( "<test>" ) << std::endl  << std::endl; return true; }
152    virtual bool tearDown() { std::clog << std::endl << std::endl <<( "</test>" ) << std::endl  << std::endl; return true; }
153};
154
155
156template void CxxTest::doAssertDiffers<n_Procs_s*, void*>(char const*, unsigned int, char const*, n_Procs_s*, char const*, void*, char const*);
157template 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*);
158template 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*);
159template 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*);
160template 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*);
161template 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*);
162template void CxxTest::doAssertEquals<int, int>(char const*, unsigned int, char const*, int, char const*, int, char const*);
163template void CxxTest::doAssertEquals<n_coeffType, n_coeffType>(char const*, unsigned int, char const*, n_coeffType, char const*, n_coeffType, char const*);
164template 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*);
165template 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*);
166template 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*);
167
168template bool CxxTest::differs<n_Procs_s*, void*>(n_Procs_s*, void*);
169template bool CxxTest::differs<snumber* (*)(long, n_Procs_s*), void*>(snumber* (*)(long, n_Procs_s*), void*);
170template bool CxxTest::differs<snumber* (*)(snumber*, snumber*, n_Procs_s*), void*>(snumber* (*)(snumber*, snumber*, n_Procs_s*), void*);
171template bool CxxTest::differs<void (*)(n_Procs_s*, int), void*>(void (*)(n_Procs_s*, int), void*);
172template bool CxxTest::differs<void (*)(snumber**, n_Procs_s*), void*>(void (*)(snumber**, n_Procs_s*), void*);
173template bool CxxTest::differs<void (*)(snumber*&, n_Procs_s*), void*>(void (*)(snumber*&, n_Procs_s*), void*);
174template bool CxxTest::equals<int, int>(int, int);
175template bool CxxTest::equals<n_coeffType, n_coeffType>(n_coeffType, n_coeffType);
176template bool CxxTest::equals<snumber* (*)(long, n_Procs_s*), snumber* (*)(long, n_Procs_s*)>(snumber* (*)(long, n_Procs_s*), snumber* (*)(long, n_Procs_s*));
177template 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*));
178template bool CxxTest::equals<void (*)(snumber**, n_Procs_s*), void (*)(snumber**, n_Procs_s*)>(void (*)(snumber**, n_Procs_s*), void (*)(snumber**, n_Procs_s*));
179template char* CxxTest::numberToString<long>(long, char*, long, unsigned int, unsigned int);
180
181template void CxxTest::doAssertDiffers<ip_sring*, void*>(char const*, unsigned int, char const*, ip_sring*, char const*, void*, char const*);
182template void CxxTest::doAssertEquals<short, int>(char const*, unsigned int, char const*, short, char const*, int, char const*);
183
184template bool CxxTest::differs<ip_sring*, void*>(ip_sring*, void*);
185template bool CxxTest::equals<short, int>(short, int);
186
187#endif /* TESTS_COMMON_H */
Note: See TracBrowser for help on using the repository browser.