From: Christian Bauer Date: Fri, 6 Apr 2001 23:02:12 +0000 (+0000) Subject: added check for archiving system X-Git-Tag: release_0-8-1~25 X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=commitdiff_plain;h=336c03561cdacb388041cf9345c51a28465ee653 added check for archiving system --- diff --git a/check/Makefile.am b/check/Makefile.am index fb943d0b..459799eb 100644 --- a/check/Makefile.am +++ b/check/Makefile.am @@ -10,8 +10,8 @@ checks_LDADD = ../ginac/libginac.la exams_SOURCES = exam_paranoia.cpp exam_numeric.cpp exam_powerlaws.cpp \ exam_inifcns.cpp exam_differentiation.cpp exam_polygcd.cpp \ exam_normalization.cpp exam_pseries.cpp exam_matrices.cpp exam_lsolve.cpp \ - exam_indexed.cpp exam_color.cpp exam_clifford.cpp exam_misc.cpp exams.cpp \ - exams.h + exam_indexed.cpp exam_color.cpp exam_clifford.cpp exam_archive.cpp \ + exam_misc.cpp exams.cpp exams.h exams_LDADD = ../ginac/libginac.la times_SOURCES = time_dennyfliegner.cpp time_gammaseries.cpp \ diff --git a/check/exam_archive.cpp b/check/exam_archive.cpp new file mode 100644 index 00000000..af8f4905 --- /dev/null +++ b/check/exam_archive.cpp @@ -0,0 +1,80 @@ +/** @file exam_archive.cpp + * + * Here we test GiNaC's archiving system. */ + +/* + * GiNaC Copyright (C) 1999-2001 Johannes Gutenberg University Mainz, Germany + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "exams.h" + +#include + +unsigned exam_archive(void) +{ + unsigned result = 0; + + cout << "examining archiving system" << flush; + clog << "----------archiving system:" << endl; + + symbol x("x"), y("y"), mu("mu"), dim("dim"); + ex e, f; + + // This expression is complete nonsense but it contains every type of + // GiNaC object + e = -42 * x * pow(y, sin(y*Catalan)) * dirac_one() + * epsilon_tensor(idx(fail(), 3), idx(0, 3), idx(y/2, 3)) + + lorentz_g( + varidx(lst(x, -11*y, acos(2*x).series(x==3-5*I, 3)) * color_ONE() + * metric_tensor(varidx(0, 5), varidx(2, 4)), zeta(3)), + varidx(diag_matrix(lst(-1, Euler, atan(x/y==-15*I/17))) + * delta_tensor(idx(x, 2), idx(y, 3)), log(cos(128.0/(x*y))), true), + true + ) + + dirac_gamma(varidx(mu, dim)) * dirac_gamma(varidx(mu, 4-dim, true)) + * color_T(idx(x, 8), 1) * color_h(idx(x, 8), idx(y, 8), idx(2, 8)) + * indexed(x, indexed::antisymmetric, idx(2*y+1, x), varidx(-mu, 5)) + + 0.775; + + archive ar; + ar.archive_ex(e, "expr 1"); + { + std::ofstream fout("exam.gar"); + fout << ar; + } + ar.clear(); + { + std::ifstream fin("exam.gar"); + fin >> ar; + } + f = ar.unarchive_ex(lst(x, y, mu, dim), "expr 1"); + + if (!f.is_equal(e)) { + clog << "archiving/unarchiving " << e << endl + << "erroneously returned " << f << endl; + ++result; + } + + if (!result) { + cout << " passed " << endl; + clog << "(no output)" << endl; + } else { + cout << " failed " << endl; + } + + return result; +} diff --git a/check/exams.cpp b/check/exams.cpp index b4ec8cb4..41097741 100644 --- a/check/exams.cpp +++ b/check/exams.cpp @@ -50,6 +50,7 @@ try { \ EXAM(indexed) EXAM(color) EXAM(clifford) + EXAM(archive) EXAM(misc) if (result) { diff --git a/check/exams.h b/check/exams.h index ae454e40..1372cc30 100644 --- a/check/exams.h +++ b/check/exams.h @@ -41,6 +41,7 @@ unsigned exam_lsolve(); unsigned exam_indexed(); unsigned exam_color(); unsigned exam_clifford(); +unsigned exam_archive(); unsigned exam_misc(); #endif // ndef EXAMS_H diff --git a/check/exams.ref b/check/exams.ref index d44e9104..86a9512d 100644 --- a/check/exams.ref +++ b/check/exams.ref @@ -24,5 +24,7 @@ (no output) ----------clifford objects: (no output) +----------archiving system: +(no output) ----------miscellaneous other things: (no output)