source: git/libpolys/tests/rings_test.h @ 6c5f32

fieker-DuValspielwiese
Last change on this file since 6c5f32 was b27c052, checked in by Oleksandr Motsak <motsak@…>, 13 years ago
ADD: first poly-tests (Sum Up integers 0..N) ADD: GlobalFixup made common and is able to redirect clog FIX: related minor fixes
  • Property mode set to 100644
File size: 4.0 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   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     Test(r);
163     
164     rDelete(r);
165   }
166
167
168   void test_Z13_t_GF()
169   {
170     clog << "Creating  GF[t]: " << endl;
171
172     char* n[] = {"t"};
173
174     GFInfo param;
175
176     param.GFChar= 5;
177     param.GFDegree= 2;
178     param.GFPar_name= (const char*)"Q";
179
180     const coeffs cf = nInitChar( n_GF, &param );
181
182     TS_ASSERT_DIFFERS( cf, NULLp );
183
184     ring r = rDefault( cf, 1, n);  // now cf belongs to r!
185     TS_ASSERT_DIFFERS( r, NULLp );
186
187     PrintRing(r);
188
189     TS_ASSERT( rField_is_Domain(r) );
190     TS_ASSERT( !rField_is_Q(r) );
191
192     TS_ASSERT( !rField_is_Zp(r) );
193     TS_ASSERT( !rField_is_Zp(r, 11) );
194     TS_ASSERT( !rField_is_Zp(r, 13) );
195     TS_ASSERT( rField_is_GF(r) );
196
197     TS_ASSERT( rField_is_GF(r, 5) );
198     TS_ASSERT( !rField_is_GF(r, 25) );
199
200     TS_ASSERT_EQUALS( rVar(r), 1);
201
202     Test(r);
203
204     rDelete(r); // kills 'cf' as well!
205   }
206
207};
208
Note: See TracBrowser for help on using the repository browser.