X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?a=blobdiff_plain;f=check%2Fexam_numeric.cpp;h=73700a1345fcc9c29eb776cfa2d09893efd7235a;hb=da3cc1d79533680f0722be73abe95aedcac96b72;hp=3b943b17e41f359381fd26575c74a3ea5bb15ef9;hpb=1f5afe37b4c079821de9810435fa9fa11e4ea17b;p=ginac.git diff --git a/check/exam_numeric.cpp b/check/exam_numeric.cpp index 3b943b17..73700a13 100644 --- a/check/exam_numeric.cpp +++ b/check/exam_numeric.cpp @@ -1,10 +1,10 @@ /** @file exam_numeric.cpp * - * These exams creates some numbers and check the result of several boolean + * These exams creates some numbers and check the result of several Boolean * tests on these numbers like is_integer() etc... */ /* - * GiNaC Copyright (C) 1999-2003 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2015 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 @@ -18,16 +18,19 @@ * * 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 + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "exams.h" +#include "ginac.h" +using namespace GiNaC; +#include #include +using namespace std; /* Simple and maybe somewhat pointless consistency tests of assorted tests and * conversions. */ -static unsigned exam_numeric1(void) +static unsigned exam_numeric1() { unsigned result = 0; numeric test_int1(42); @@ -65,6 +68,11 @@ static unsigned exam_numeric1(void) << " erroneously not recognized as complex rational" << endl; ++result; } + if (test_crat.info(info_flags::nonnegative)) { + clog << test_crat + << " erroneously recognized as non-negative number" << endl; + ++result; + } int i = numeric(1984).to_int(); if (i-1984) { @@ -112,7 +120,7 @@ static unsigned exam_numeric1(void) * Implementing a workaround sadly introduced another bug on May 28th 1999 * that was fixed on May 31st. The workaround turned out to be stupid and * the original bug in CLN was finally killed on September 2nd. */ -static unsigned exam_numeric2(void) +static unsigned exam_numeric2() { unsigned result = 0; @@ -151,7 +159,7 @@ static unsigned exam_numeric2(void) /* Assorted tests to ensure some crucial functions behave exactly as specified * in the documentation. */ -static unsigned exam_numeric3(void) +static unsigned exam_numeric3() { unsigned result = 0; numeric calc_rem, calc_quo; @@ -269,7 +277,7 @@ static unsigned exam_numeric3(void) /* Now we perform some less trivial checks about several functions which should * return exact numbers if possible. */ -static unsigned exam_numeric4(void) +static unsigned exam_numeric4() { unsigned result = 0; bool passed; @@ -300,7 +308,7 @@ static unsigned exam_numeric4(void) /* This test examines that simplifications of the form 5^(3/2) -> 5*5^(1/2) * are carried out properly. */ -static unsigned exam_numeric5(void) +static unsigned exam_numeric5() { unsigned result = 0; @@ -319,7 +327,7 @@ static unsigned exam_numeric5(void) /* This test checks whether the numeric output/parsing routines are consistent. */ -static unsigned exam_numeric6(void) +static unsigned exam_numeric6() { unsigned result = 0; @@ -358,7 +366,7 @@ static unsigned exam_numeric6(void) // Read back expression from string string x_as_string = s.str(); - ex x_again(x_as_string, lst(sym)); + ex x_again(x_as_string, lst{sym}); // They should be equal if (!x_again.is_equal(x)) { @@ -373,12 +381,11 @@ static unsigned exam_numeric6(void) return result; } -unsigned exam_numeric(void) +unsigned exam_numeric() { unsigned result = 0; cout << "examining consistency of numeric types" << flush; - clog << "----------consistency of numeric types:" << endl; result += exam_numeric1(); cout << '.' << flush; result += exam_numeric2(); cout << '.' << flush; @@ -387,12 +394,10 @@ unsigned exam_numeric(void) result += exam_numeric5(); cout << '.' << flush; result += exam_numeric6(); cout << '.' << flush; - if (!result) { - cout << " passed " << endl; - clog << "(no output)" << endl; - } else { - cout << " failed " << endl; - } - return result; } + +int main(int argc, char** argv) +{ + return exam_numeric(); +}