26
33
const char *helpText()
35
return "This runs the test suite and checks against the stored result. If no result exists, it is generated.\n";
38
testSuiteFolderOption("--suite","Specify the folder which contains the test suite.","testsuite"),
39
executableOption("--gfan","Specify name of gfan executable to test.","./gfan")
48
return f.zHomomorphism(1);
51
FieldElement test3(FieldElement &a)
49
void lpRationalFunctionTest()
52
// IntegerVectorList L=StringParser("{(1,0,2),(1,2,0)}").parseIntegerVectorList();
53
// IntegerVectorList L=StringParser("{(1,2,0)}").parseIntegerVectorList();
56
// IntegerVectorList L=StringParser("{(1,0,2,3),(1,2,3,0)}").parseIntegerVectorList();
59
IntegerVectorList L=StringParser("{(1,0,2,3,5,4,6,7,9,8,10,11,13,12,14,15),"
60
"(3,0,1,2,7,4,5,6,11,8,9,10,15,12,13,14),"
61
"(0,4,8,12,1,5,9,13,2,6,10,14,3,7,11,15)}").parseIntegerVectorList();
64
IntegerVectorList L=StringParser("{(1,0,2,4,3,5,7,6,8),"
65
"(1,2,0,4,5,3,7,8,6),"
66
"(3,4,5,0,1,2,6,7,8),"
68
"}").parseIntegerVectorList();
71
IntegerVectorList L=StringParser("{(1,0,2,4,3,5,7,6,8),"
72
"(1,2,0,4,5,3,7,8,6),"
73
"(0,3,6,1,4,7,2,5,8)}").parseIntegerVectorList();
79
FieldRationalFunctions F(Q,"t");
80
FieldMatrix M(F,s.elements.size(),n);
82
for(SymmetryGroup::ElementContainer::const_iterator i=s.elements.begin();i!=s.elements.end();i++,I++)
86
M[I][j]=M[I][j]+F.exponent(j);
87
M[I][j]=M[I][j]-F.exponent(((SymmetryGroup::inverse(*i))[j]));
90
AsciiPrinter P(Stderr);
94
FieldMatrix M2(Q,M.getHeight(),M.getWidth());
95
for(int i=0;i<M.getHeight();i++)
96
for(int j=0;j<M.getWidth();j++)
97
M2[i][j]=F.substitute(M[i][j],Q.zHomomorphism(10000).inverse());
104
IntegerVectorList extreme;
110
FieldElement minusOne=myField.zHomomorphism(-1);//HERE
111
for(SymmetryGroup::ElementContainer::const_iterator i=s.elements.begin();i!=s.elements.end();i++,I++)
112
// for(int i=0;i<s.elements.size();i++)
114
fprintf(Stderr,"IIII:%i\n",I);
116
FieldVector b(myField,s.elements.size());//HERE
119
FieldLP lp2=lp.withNoLineality();
121
AsciiPrinter P(Stderr);
124
// cerr <<"Result" << lp2.findFeasibleBasis()<<endl;
126
if(lp2.findFeasibleBasis())
127
extreme.push_back(*i);
131
fprintf(Stdout,"Extreme permutations (%i):\n",extreme.size());
132
P.printVectorList(extreme);
140
TestCase(string const &folder_):
147
cerr<<"Test failed:"<<folder<<endl;
150
void compare(string a, string b)
152
FILE *A=fopen(a.c_str(),"r");
153
FILE *B=fopen(b.c_str(),"r");
156
while((!feof(A))&&(!feof(B)))
158
if(fgetc(A)!=fgetc(B))fail();
160
if(feof(A)!=feof(B))fail();
162
bool fileExists(string name)
164
FILE *f=fopen(name.c_str(),"r");
169
* Returns true if test was successful.
170
* Returns false if test was performed for the first time.
171
* Asserts if test fails
173
bool perform(const char *exe)
175
string fileName=folder+"/command";
176
FILE *f=fopen(fileName.c_str(),"r");
179
cerr<<"Could not open file:\""<<fileName<<"\""<<endl;
183
char *temp=fgets(command,4095,f);
186
for(int i=0;i<4096 && command[i];i++)if(command[i]=='\n'){command[i]=0;}
188
string input=folder+"/input";
189
sprintf(command2,command,exe,exe,exe,exe);
190
bool outputExists=fileExists(folder+"/output");
191
string outputName=folder+"/output";
194
outputName=outputName+"New";
197
string t="rm "+outputName;
200
string command3="cat <"+input+"|"+string(command2)+">"+outputName;
201
cerr<<"Running command:\""<<command3<<"\""<<endl;
202
system(command3.c_str());
203
if(outputExists)compare(folder+"/output",folder+"/outputNew");
208
list<string> subFolderNames()
210
#define tempName "GfAnTeMpTeStS"
212
system("rm "tempName);
213
sprintf(command,"ls %s>" tempName ,testSuiteFolderOption.getValue());
217
FILE *f=fopen(tempName,"r");
220
while(fgets(name,255,f))
222
for(int i=0;i<255 && name[i];i++)if(name[i]=='\n'){name[i]=0;}
223
if(name[0]>='0' && name[0]<='9')ret.push_back(string(testSuiteFolderOption.getValue())+"/"+string(name));
58
FieldElement a=Q.zHomomorphism(2);
59
FieldElement b=Q.zHomomorphism(3);
61
FieldElement c=Q.zHomomorphism(3);
73
PolynomialRing R=StringParser("Q[a]").parsePolynomialRing();
74
// Term s=StringParser("a").parseTerm(R);
76
FieldElement k(R.getField());
77
// k=R.getField().zHomomorphism(1);
82
FieldElement k(r.getField());
83
k=r.getField().zHomomorphism(1);
84
Monomial m=parseMonomial(r);
94
FieldElement e=test2();
98
AsciiPrinter(Stdout).printFieldElement(e);
100
// fprintf(Stderr,"Number of living FieldImplementations:%i\n",FieldImplementation::getNumberOfLivingFieldImplementations());
102
AsciiPrinter(Stdout).printField(e.getField());
103
// AsciiPrinter(Stdout).printFieldElement(c);
104
/* PolynomialSet g=FileParser(Stdin).parsePolynomialSetWithRing();
106
AsciiPrinter(Stdout).printPolynomialSet(nonHomogeneousSaturation(g));
110
// Field FF=c.getField();
231
// lpRationalFunctionTest();
232
// testRationalFunctionField();
234
list<string> testFolders=subFolderNames();
235
list<TestCase> testList;
236
for(list<string>::const_iterator i=testFolders.begin();i!=testFolders.end();i++)
238
testList.push_back(TestCase(*i));
241
cout<<"Number of tests to perform "<<testList.size()<<endl;
245
for(list<TestCase>::iterator i=testList.begin();i!=testList.end();i++)
246
if(i->perform(executableOption.getValue()))
250
cout<<"Number of successful tests "<<good<<endl;
251
cout<<"Number of initialized tests "<<bad<<endl;
116
257
static TestApplication theApplication;