import TestLib;

void test(bool r, bool i) {
 file fout=output("xdata",mode="xdr").word().singlereal(r).singleint(i);
 write(fout,"test");
 write(fout,1);
 write(fout,2.0);
 write(fout,(3,4));
 write(fout,(5,6,7));
 close(fout);

 file fin=input("xdata",mode="xdr").word().singlereal(r).singleint(i);
 string a=fin;
 assert(a == "test");
 int b=fin;
 assert(b == 1);
 real c=fin;
 assert(c == 2.0);
 pair d=fin;
 assert(d == (3,4));
 triple e=fin;
 assert(e == (5,6,7));
}

StartTest("xdr: single real, single int");
{
 test(true,true);
}
EndTest();

StartTest("xdr: single real, double int");
{
 test(true,false);
}
EndTest();

StartTest("xdr: double real, single int");
{
 test(false,true);
}
EndTest();

StartTest("xdr: double real, double int");
{
 test(false,false);
}
EndTest();

StartTest("xdr: character");
{
 file fout=output("xdata",mode="xdr");
 write(fout,"a");
 write(fout,"b");
 close(fout);

 file fin=input("xdata",mode="xdr");
 string a=getc(fin);
 assert(a == "a");
 string b=getc(fin);
 assert(b == "b");
}
EndTest();