diff options
author | Rüdiger Timm <rt@openoffice.org> | 2007-07-03 11:33:03 +0000 |
---|---|---|
committer | Rüdiger Timm <rt@openoffice.org> | 2007-07-03 11:33:03 +0000 |
commit | c40ff500606ec79c84d58132010fc3966810fe07 (patch) | |
tree | 85f5958b0a53c479a8c45c7807730f5016368db6 /tools/test/tests.cxx | |
parent | 4d13576cc03c7d99bb392bafd78017a6b082da9b (diff) |
INTEGRATION: CWS sixtyfour12 (1.1.2); FILE ADDED
2007/06/20 09:45:13 thb 1.1.2.1: #i78392# Added unit test for Fraction
Diffstat (limited to 'tools/test/tests.cxx')
-rw-r--r-- | tools/test/tests.cxx | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/tools/test/tests.cxx b/tools/test/tests.cxx new file mode 100644 index 000000000000..3b39da9b1b8c --- /dev/null +++ b/tools/test/tests.cxx @@ -0,0 +1,134 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: tests.cxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: rt $ $Date: 2007-07-03 12:33:03 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + ************************************************************************/ + + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_tools.hxx" +// autogenerated file with codegen.pl + +#include <cppunit/simpleheader.hxx> +#include <rtl/math.hxx> +#include <tools/fract.hxx> + +#include <stdio.h> + +namespace tools +{ + +class FractionTest : public CppUnit::TestFixture +{ +public: + void setUp() + { + } + + void tearDown() + { + } + + void testFraction() + { + const Fraction aFract(1082130431,1073741824); + CPPUNIT_ASSERT_MESSAGE( "Fraction #1 not approximately equal to 1.007812499068677", + rtl::math::approxEqual((double)aFract,1.007812499068677) ); + + Fraction aFract2( aFract ); + aFract2.ReduceInaccurate(8); + CPPUNIT_ASSERT_MESSAGE( "Fraction #2 not 1", + aFract2.GetNumerator() == 1 && + aFract2.GetDenominator() == 1 ); + + Fraction aFract3( 0x7AAAAAAA, 0x35555555 ); + CPPUNIT_ASSERT_MESSAGE( "Fraction #3 cancellation wrong", + aFract3.GetNumerator() == 0x7AAAAAAA && + aFract3.GetDenominator() == 0x35555555 ); + aFract3.ReduceInaccurate(30); + CPPUNIT_ASSERT_MESSAGE( "Fraction #3 ReduceInaccurate errorneously cut precision", + aFract3.GetNumerator() == 0x7AAAAAAA && + aFract3.GetDenominator() == 0x35555555 ); + + aFract3.ReduceInaccurate(29); + CPPUNIT_ASSERT_MESSAGE( "Fraction #3 reduce to 29 bits failed", + aFract3.GetNumerator() == 0x3D555555 && + aFract3.GetDenominator() == 0x1AAAAAAA ); + + aFract3.ReduceInaccurate(9); + CPPUNIT_ASSERT_MESSAGE( "Fraction #3 reduce to 9 bits failed", + aFract3.GetNumerator() == 0x0147 && + aFract3.GetDenominator() == 0x008E ); + + aFract3.ReduceInaccurate(1); + CPPUNIT_ASSERT_MESSAGE( "Fraction #3 reduce to 1 bit failed", + aFract3.GetNumerator() == 2 && + aFract3.GetDenominator() == 1 ); + + aFract3.ReduceInaccurate(0); + CPPUNIT_ASSERT_MESSAGE( "Fraction #3 reduce to 0 bits failed", + aFract3.GetNumerator() == 2 && + aFract3.GetDenominator() == 1 ); + +#if SAL_TYPES_SIZEOFLONG == 8 + Fraction aFract4(0x7AAAAAAAAAAAAAAA, 0x3555555555555555); + CPPUNIT_ASSERT_MESSAGE( "Fraction #4 cancellation wrong", + aFract4.GetNumerator() == 0x7AAAAAAAAAAAAAAA && + aFract4.GetDenominator() == 0x3555555555555555 ); + aFract4.ReduceInaccurate(62); + CPPUNIT_ASSERT_MESSAGE( "Fraction #4 ReduceInaccurate errorneously cut precision", + aFract4.GetNumerator() == 0x7AAAAAAAAAAAAAAA && + aFract4.GetDenominator() == 0x3555555555555555 ); + + aFract4.ReduceInaccurate(61); + CPPUNIT_ASSERT_MESSAGE( "Fraction #4 ReduceInaccurate reduce to 61 bit failed", + aFract4.GetNumerator() == 0x3D55555555555555 && + aFract4.GetDenominator() == 0x1AAAAAAAAAAAAAAA ); +#endif + } + + CPPUNIT_TEST_SUITE(FractionTest); + CPPUNIT_TEST(testFraction); + CPPUNIT_TEST_SUITE_END(); +}; + +// ----------------------------------------------------------------------------- +CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(tools::FractionTest, "FractionTest"); +} // namespace tools + + +// ----------------------------------------------------------------------------- + +// this macro creates an empty function, which will called by the RegisterAllFunctions() +// to let the user the possibility to also register some functions by hand. +NOADDITIONAL; + |