source: git/libpolys/tests/rings_test.h @ 405407

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