source: git/libpolys/tests/rings_test.h @ 2d3091c

fieker-DuValspielwiese
Last change on this file since 2d3091c was 7af488e, checked in by Hans Schoenemann <hannes@…>, 13 years ago
nRegister not needed any more for standard coeffs
  • Property mode set to 100644
File size: 4.9 KB
Line 
1#include "config.h"
2
3#include "common.h"
4using namespace std;
5
6// the following headers are private...
7#include <coeffs/longrat.h>
8#include <coeffs/gnumpfl.h>
9#include <coeffs/gnumpc.h>
10#include <coeffs/shortfl.h>
11#include <coeffs/ffields.h>
12#include <coeffs/modulop.h>
13#include <coeffs/rmodulon.h>
14#include <coeffs/rmodulo2m.h>
15#include <coeffs/rintegers.h>
16
17
18#include <polys/monomials/ring.h>
19#include <polys/monomials/p_polys.h>
20
21
22
23
24class MyGlobalPrintingFixture : public GlobalPrintingFixture
25{
26  public:
27    virtual bool setUpWorld()
28    {
29   
30      GlobalPrintingFixture::setUpWorld();
31     
32
33      //TS_ASSERT_EQUALS( nRegister( n_Zp, npInitChar), n_Zp );
34      //TS_ASSERT_EQUALS( nRegister( n_GF, nfInitChar), n_GF );
35      //TS_ASSERT_EQUALS( nRegister( n_R, nrInitChar), n_R );
36      //TS_ASSERT_EQUALS( nRegister( n_Q, nlInitChar), n_Q );
37      //TS_ASSERT_EQUALS( nRegister( n_R, nrInitChar), n_R );
38     
39#ifdef HAVE_RINGS
40      //TS_ASSERT_EQUALS( nRegister( n_Z, nrzInitChar), n_Z ); // these are UNusable at the moment!
41#endif
42     
43      return true;
44    }
45};
46
47
48//
49// We can rely on this file being included exactly once
50// and declare this global variable in the header file.
51//
52static MyGlobalPrintingFixture globalPrintingFixture;
53
54
55namespace
56{
57  void PrintRing(const ring r)
58  {
59    rWrite(r); PrintLn();
60  #ifdef  RDEBUG
61    rDebugPrint(r); PrintLn();
62  #endif
63  }
64static inline void Test(const ring)
65{
66  // does nothing yet...
67}
68
69}
70
71class PolysTestSuite : public CxxTest::TestSuite
72{
73public:
74  void test_Z13_t()
75  {
76    clog << "Creating  Z/13[t]: " << endl;
77
78    char* n[] = {"t"};
79    ring r = rDefault( 13, 1, n);     
80    TS_ASSERT_DIFFERS( r, NULLp );
81
82    PrintRing(r);
83
84    TS_ASSERT( rField_is_Domain(r) );
85    TS_ASSERT( !rField_is_Q(r) );
86
87    TS_ASSERT( rField_is_Zp(r) );
88    TS_ASSERT( !rField_is_Zp(r, 11) );
89    TS_ASSERT( rField_is_Zp(r, 13) );
90
91    TS_ASSERT_EQUALS( rVar(r), 1);
92
93    Test(r);
94     
95    rDelete(r);
96  }
97
98  void test_QQ_t()
99  {
100    clog << "Creating  Q[s]: " << endl;
101
102    char* n[] = {"s"};
103    ring r = rDefault( 0, 1, n);     
104    TS_ASSERT_DIFFERS( r, NULLp );
105
106    PrintRing(r);
107
108    TS_ASSERT( rField_is_Domain(r) );
109    TS_ASSERT( rField_is_Q(r) );
110   
111    TS_ASSERT( !rField_is_Zp(r) );
112    TS_ASSERT( !rField_is_Zp(r, 11) );
113
114    TS_ASSERT_EQUALS( rVar(r), 1);
115
116    Test(r);
117
118    rDelete(r);
119  }
120 
121  void test_Z11_x_y_z()
122  {
123     clog << "Creating  Z/11[x, y, z]: " << endl;
124     
125     char* n[] = {"x", "y", "z"};
126     ring r = rDefault( 11, 3, n);     
127     TS_ASSERT_DIFFERS( r, NULLp );
128
129     PrintRing(r);
130     
131     TS_ASSERT( rField_is_Domain(r) );
132     TS_ASSERT( !rField_is_Q(r) );
133
134     TS_ASSERT( rField_is_Zp(r) );
135     TS_ASSERT( rField_is_Zp(r, 11) );
136     TS_ASSERT( !rField_is_Zp(r, 13) );
137
138     TS_ASSERT_EQUALS( rVar(r), 3);
139
140     Test(r);
141     
142     rDelete(r);
143  }
144
145  void test_QQ_x_y_z()
146  {
147     clog << "Creating  QQ[x, y, z, u]: " << endl;
148
149     char* n[] = {"x", "y", "z", "u"};
150     ring r = rDefault( 0, 4, n);     
151     TS_ASSERT_DIFFERS( r, NULLp );
152
153     PrintRing(r);
154
155     TS_ASSERT( rField_is_Domain(r) );
156     TS_ASSERT( rField_is_Q(r) );
157
158     TS_ASSERT( !rField_is_Zp(r) );
159     TS_ASSERT( !rField_is_Zp(r, 11) );
160
161     TS_ASSERT_EQUALS( rVar(r), 4);
162
163     Test(r);
164     
165     rDelete(r);
166   }
167
168
169   void test_Z13_t_GF()
170   {
171     clog << "Creating  GF[t]: " << endl;
172
173     char* n[] = {"t"};
174
175     GFInfo param;
176
177     param.GFChar= 5;
178     param.GFDegree= 2;
179     param.GFPar_name= (const char*)"Q";
180
181     const coeffs cf = nInitChar( n_GF, &param );
182
183     TS_ASSERT_DIFFERS( cf, NULLp );
184
185     ring r = rDefault( cf, 1, n);  // now cf belongs to r!
186     TS_ASSERT_DIFFERS( r, NULLp );
187
188     PrintRing(r);
189
190     TS_ASSERT( rField_is_Domain(r) );
191     TS_ASSERT( !rField_is_Q(r) );
192
193     TS_ASSERT( !rField_is_Zp(r) );
194     TS_ASSERT( !rField_is_Zp(r, 11) );
195     TS_ASSERT( !rField_is_Zp(r, 13) );
196     TS_ASSERT( rField_is_GF(r) );
197
198     TS_ASSERT( rField_is_GF(r, 5) );
199     TS_ASSERT( !rField_is_GF(r, 25) );
200
201     TS_ASSERT_EQUALS( rVar(r), 1);
202
203     Test(r);
204
205     rDelete(r); // kills 'cf' as well!
206   }
207   
208
209
210
211
212  void test_QQ_x_y_z_ord_2_lp()
213  {
214     clog << "Creating  QQ[x, y, z, u]: " << endl;
215
216     const int N = 4;
217     char* n[N] = {"x", "y", "z", "u"};
218
219
220     const int D = 2;
221     /*order: lp,0*/
222     int *order = (int *) omAlloc0(D* sizeof(int));
223     int *block0 = (int *)omAlloc0(D * sizeof(int));
224     int *block1 = (int *)omAlloc0(D * sizeof(int));
225     /* ringorder dp for the first block: var 1..N */
226     order[0]  = ringorder_dp;
227     block0[0] = 1;
228     block1[0] = N;
229     /* the last block: everything is 0 */
230//     order[1]  = 0;
231
232     ring r = rDefault(0, N, n, D, order, block0, block1);
233     TS_ASSERT_DIFFERS( r, NULLp );
234
235     PrintRing(r);
236
237     TS_ASSERT( rField_is_Domain(r) );
238     TS_ASSERT( rField_is_Q(r) );
239
240     TS_ASSERT( !rField_is_Zp(r) );
241     TS_ASSERT( !rField_is_Zp(r, 11) );
242
243     TS_ASSERT_EQUALS( rVar(r), N);
244
245     Test(r);
246     
247     rDelete(r);
248   }
249};
250
Note: See TracBrowser for help on using the repository browser.