source: git/libpolys/tests/polys_test.h @ 59a62bd

spielwiese
Last change on this file since 59a62bd was 59a62bd, checked in by Oleksandr Motsak <motsak@…>, 13 years ago
ADD: feInitResources can use 'program_invocation_name' instead of argv[0] ADD: executables should run feInitResources at the start
  • Property mode set to 100644
File size: 4.3 KB
Line 
1#include <cxxtest/TestSuite.h>
2#include <cxxtest/GlobalFixture.h>
3
4#include "config.h"
5#include <misc/auxiliary.h>
6#include <omalloc/omalloc.h>
7
8#include <reporter/reporter.h>
9#include <resources/feResource.h>
10
11#include <coeffs/coeffs.h>
12#include <coeffs/numbers.h>
13
14
15// the following headers are private...
16#include <coeffs/longrat.h>
17#include <coeffs/gnumpfl.h>
18#include <coeffs/gnumpc.h>
19#include <coeffs/shortfl.h>
20#include <coeffs/ffields.h>
21#include <coeffs/modulop.h>
22#include <coeffs/rmodulon.h>
23#include <coeffs/rmodulo2m.h>
24#include <coeffs/rintegers.h>
25
26
27#include <polys/monomials/ring.h>
28
29#include "common.h"
30using namespace std;
31
32
33
34class GlobalPrintingFixture : public CxxTest::GlobalFixture
35{
36  public:
37    bool setUpWorld() {
38      clog << ( "<world>" ) << endl;
39      feInitResources();
40     
41      TS_ASSERT_EQUALS( nRegister( n_Zp, npInitChar), n_Zp );
42      TS_ASSERT_EQUALS( nRegister( n_GF, nfInitChar), n_GF );
43      TS_ASSERT_EQUALS( nRegister( n_R, nrInitChar), n_R );
44      TS_ASSERT_EQUALS( nRegister( n_Q, nlInitChar), n_Q );
45      TS_ASSERT_EQUALS( nRegister( n_R, nrInitChar), n_R );
46     
47#ifdef HAVE_RINGS
48      TS_ASSERT_EQUALS( nRegister( n_Z, nrzInitChar), n_Z ); // these are UNusable at the moment!
49#endif
50     
51      return true;
52    }
53    bool tearDownWorld() { clog <<( "</world>" )  << endl; return true; }
54    bool setUp() { clog <<( "<test>" )  << endl; return true; }
55    bool tearDown() { clog <<( "</test>" )  << endl; return true; }
56};
57
58
59//
60// We can rely on this file being included exactly once
61// and declare this global variable in the header file.
62//
63static GlobalPrintingFixture globalPrintingFixture;
64
65
66namespace
67{
68  void PrintRing(const ring r)
69  {
70    rWrite(r); PrintLn();
71  #ifdef  RDEBUG
72    rDebugPrint(r); PrintLn();
73  #endif
74  }
75}
76
77class PolysTestSuite : public CxxTest::TestSuite
78{
79public:
80  void test_Z13_t()
81  {
82    clog << "Creating  Z/13[t]: " << endl;
83
84    char* n[] = {"t"};
85    ring r = rDefault( 13, 1, n);     
86    TS_ASSERT_DIFFERS( r, NULLp );
87
88    PrintRing(r);
89
90    TS_ASSERT( rField_is_Domain(r) );
91    TS_ASSERT( !rField_is_Q(r) );
92
93    TS_ASSERT( rField_is_Zp(r) );
94    TS_ASSERT( !rField_is_Zp(r, 11) );
95    TS_ASSERT( rField_is_Zp(r, 13) );
96
97    TS_ASSERT_EQUALS( rVar(r), 1);
98
99    rDelete(r);
100  }
101
102  void test_QQ_t()
103  {
104    clog << "Creating  Q[s]: " << endl;
105
106    char* n[] = {"s"};
107    ring r = rDefault( 0, 1, n);     
108    TS_ASSERT_DIFFERS( r, NULLp );
109
110    PrintRing(r);
111
112    TS_ASSERT( rField_is_Domain(r) );
113    TS_ASSERT( rField_is_Q(r) );
114   
115    TS_ASSERT( !rField_is_Zp(r) );
116    TS_ASSERT( !rField_is_Zp(r, 11) );
117
118    TS_ASSERT_EQUALS( rVar(r), 1);
119
120    rDelete(r);
121  }
122 
123  void test_Z11_x_y_z()
124  {
125     clog << "Creating  Z/11[x, y, z]: " << endl;
126     
127     char* n[] = {"x", "y", "z"};
128     ring r = rDefault( 11, 3, n);     
129     TS_ASSERT_DIFFERS( r, NULLp );
130
131     PrintRing(r);
132     
133     TS_ASSERT( rField_is_Domain(r) );
134     TS_ASSERT( !rField_is_Q(r) );
135
136     TS_ASSERT( rField_is_Zp(r) );
137     TS_ASSERT( rField_is_Zp(r, 11) );
138     TS_ASSERT( !rField_is_Zp(r, 13) );
139
140     TS_ASSERT_EQUALS( rVar(r), 3);
141
142     rDelete(r);
143  }
144   void test_QQ_x_y_z()
145   {
146     clog << "Creating  QQ[x, y, z, u]: " << endl;
147
148     char* n[] = {"x", "y", "z", "u"};
149     ring r = rDefault( 0, 4, n);     
150     TS_ASSERT_DIFFERS( r, NULLp );
151
152     PrintRing(r);
153
154     TS_ASSERT( rField_is_Domain(r) );
155     TS_ASSERT( rField_is_Q(r) );
156
157     TS_ASSERT( !rField_is_Zp(r) );
158     TS_ASSERT( !rField_is_Zp(r, 11) );
159
160     TS_ASSERT_EQUALS( rVar(r), 4);
161
162     rDelete(r);
163   }
164
165
166   void test_Z13_t_GF()
167   {
168     clog << "Creating  GF[t]: " << endl;
169
170     char* n[] = {"t"};
171
172     GFInfo param;
173
174     param.GFChar= 5;
175     param.GFDegree= 2;
176     param.GFPar_name= (const char*)"Q";
177
178     const coeffs cf = nInitChar( n_GF, &param );
179
180     TS_ASSERT_DIFFERS( cf, NULLp );
181
182     ring r = rDefault( cf, 1, n);  // now cf belongs to r!
183     TS_ASSERT_DIFFERS( r, NULLp );
184
185     PrintRing(r);
186
187     TS_ASSERT( rField_is_Domain(r) );
188     TS_ASSERT( !rField_is_Q(r) );
189
190     TS_ASSERT( !rField_is_Zp(r) );
191     TS_ASSERT( !rField_is_Zp(r, 11) );
192     TS_ASSERT( !rField_is_Zp(r, 13) );
193     TS_ASSERT( rField_is_GF(r) );
194
195     TS_ASSERT( !rField_is_GF(r, 5) );
196     TS_ASSERT( rField_is_GF(r, 25) );
197
198     TS_ASSERT_EQUALS( rVar(r), 1);
199
200     rDelete(r); // kills 'cf' as well!
201   }
202
203};
204
Note: See TracBrowser for help on using the repository browser.