xref: /aoo42x/main/tools/test/tests.cxx (revision 7969c931)
189b56da7SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
389b56da7SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
489b56da7SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
589b56da7SAndrew Rist  * distributed with this work for additional information
689b56da7SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
789b56da7SAndrew Rist  * to you under the Apache License, Version 2.0 (the
889b56da7SAndrew Rist  * "License"); you may not use this file except in compliance
989b56da7SAndrew Rist  * with the License.  You may obtain a copy of the License at
1089b56da7SAndrew Rist  *
1189b56da7SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
1289b56da7SAndrew Rist  *
1389b56da7SAndrew Rist  * Unless required by applicable law or agreed to in writing,
1489b56da7SAndrew Rist  * software distributed under the License is distributed on an
1589b56da7SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
1689b56da7SAndrew Rist  * KIND, either express or implied.  See the License for the
1789b56da7SAndrew Rist  * specific language governing permissions and limitations
1889b56da7SAndrew Rist  * under the License.
1989b56da7SAndrew Rist  *
2089b56da7SAndrew Rist  *************************************************************/
2189b56da7SAndrew Rist 
2289b56da7SAndrew Rist 
23cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
24cdf0e10cSrcweir #include "precompiled_tools.hxx"
25cdf0e10cSrcweir // autogenerated file with codegen.pl
26cdf0e10cSrcweir 
27*7969c931SDamjan Jovanovic #include "gtest/gtest.h"
28cdf0e10cSrcweir #include <rtl/math.hxx>
29cdf0e10cSrcweir #include <tools/fract.hxx>
30cdf0e10cSrcweir 
31cdf0e10cSrcweir #include <stdio.h>
32cdf0e10cSrcweir 
33cdf0e10cSrcweir namespace tools
34cdf0e10cSrcweir {
35cdf0e10cSrcweir 
36*7969c931SDamjan Jovanovic class FractionTest : public ::testing::Test
37cdf0e10cSrcweir {
38cdf0e10cSrcweir public:
SetUp()39*7969c931SDamjan Jovanovic     void SetUp()
40cdf0e10cSrcweir     {
41cdf0e10cSrcweir     }
42cdf0e10cSrcweir 
TearDown()43*7969c931SDamjan Jovanovic     void TearDown()
44cdf0e10cSrcweir     {
45cdf0e10cSrcweir     }
46*7969c931SDamjan Jovanovic };
47cdf0e10cSrcweir 
TEST_F(FractionTest,testFraction)48*7969c931SDamjan Jovanovic TEST_F(FractionTest, testFraction)
49*7969c931SDamjan Jovanovic {
50*7969c931SDamjan Jovanovic     const Fraction aFract(1082130431,1073741824);
51*7969c931SDamjan Jovanovic     ASSERT_TRUE(rtl::math::approxEqual((double)aFract,1.007812499068677)) << "Fraction #1 not approximately equal to 1.007812499068677";
52cdf0e10cSrcweir 
53*7969c931SDamjan Jovanovic     Fraction aFract2( aFract );
54*7969c931SDamjan Jovanovic     aFract2.ReduceInaccurate(8);
55*7969c931SDamjan Jovanovic     ASSERT_TRUE(aFract2.GetNumerator() == 1 &&
56*7969c931SDamjan Jovanovic                 aFract2.GetDenominator() == 1) << "Fraction #2 not 1";
57cdf0e10cSrcweir 
58*7969c931SDamjan Jovanovic     Fraction aFract3( 0x7AAAAAAA, 0x35555555 );
59*7969c931SDamjan Jovanovic     ASSERT_TRUE(aFract3.GetNumerator() == 0x7AAAAAAA &&
60*7969c931SDamjan Jovanovic                 aFract3.GetDenominator() == 0x35555555) << "Fraction #3 cancellation wrong";
61*7969c931SDamjan Jovanovic     aFract3.ReduceInaccurate(30);
62*7969c931SDamjan Jovanovic     ASSERT_TRUE(aFract3.GetNumerator() == 0x7AAAAAAA &&
63*7969c931SDamjan Jovanovic                 aFract3.GetDenominator() == 0x35555555) << "Fraction #3 ReduceInaccurate errorneously cut precision";
64cdf0e10cSrcweir 
65*7969c931SDamjan Jovanovic     aFract3.ReduceInaccurate(29);
66*7969c931SDamjan Jovanovic     ASSERT_TRUE(aFract3.GetNumerator() == 0x3D555555 &&
67*7969c931SDamjan Jovanovic                 aFract3.GetDenominator() == 0x1AAAAAAA) << "Fraction #3 reduce to 29 bits failed";
68cdf0e10cSrcweir 
69*7969c931SDamjan Jovanovic     aFract3.ReduceInaccurate(9);
70*7969c931SDamjan Jovanovic     ASSERT_TRUE(aFract3.GetNumerator() == 0x0147 &&
71*7969c931SDamjan Jovanovic                 aFract3.GetDenominator() == 0x008E) << "Fraction #3 reduce to 9 bits failed";
72cdf0e10cSrcweir 
73*7969c931SDamjan Jovanovic     aFract3.ReduceInaccurate(1);
74*7969c931SDamjan Jovanovic     ASSERT_TRUE(aFract3.GetNumerator() == 2 &&
75*7969c931SDamjan Jovanovic                 aFract3.GetDenominator() == 1) << "Fraction #3 reduce to 1 bit failed";
76cdf0e10cSrcweir 
77*7969c931SDamjan Jovanovic     aFract3.ReduceInaccurate(0);
78*7969c931SDamjan Jovanovic     ASSERT_TRUE(aFract3.GetNumerator() == 2 &&
79*7969c931SDamjan Jovanovic                 aFract3.GetDenominator() == 1) << "Fraction #3 reduce to 0 bits failed";
80cdf0e10cSrcweir 
81*7969c931SDamjan Jovanovic #if SAL_TYPES_SIZEOFLONG == 8
82*7969c931SDamjan Jovanovic     Fraction aFract4(0x7AAAAAAAAAAAAAAA, 0x3555555555555555);
83*7969c931SDamjan Jovanovic     ASSERT_TRUE(aFract4.GetNumerator() == 0x7AAAAAAAAAAAAAAA &&
84*7969c931SDamjan Jovanovic                 aFract4.GetDenominator() == 0x3555555555555555) << "Fraction #4 cancellation wrong";
85*7969c931SDamjan Jovanovic     aFract4.ReduceInaccurate(62);
86*7969c931SDamjan Jovanovic     ASSERT_TRUE(aFract4.GetNumerator() == 0x7AAAAAAAAAAAAAAA &&
87*7969c931SDamjan Jovanovic                 aFract4.GetDenominator() == 0x3555555555555555) << "Fraction #4 ReduceInaccurate errorneously cut precision";
88*7969c931SDamjan Jovanovic 
89*7969c931SDamjan Jovanovic     aFract4.ReduceInaccurate(61);
90*7969c931SDamjan Jovanovic     ASSERT_TRUE(aFract4.GetNumerator() == 0x3D55555555555555 &&
91*7969c931SDamjan Jovanovic                 aFract4.GetDenominator() == 0x1AAAAAAAAAAAAAAA) << "Fraction #4 ReduceInaccurate reduce to 61 bit failed";
92*7969c931SDamjan Jovanovic #endif
93*7969c931SDamjan Jovanovic }
94*7969c931SDamjan Jovanovic 
95*7969c931SDamjan Jovanovic } // namespace tools
96*7969c931SDamjan Jovanovic 
97*7969c931SDamjan Jovanovic 
main(int argc,char ** argv)98*7969c931SDamjan Jovanovic int main(int argc, char **argv)
99*7969c931SDamjan Jovanovic {
100*7969c931SDamjan Jovanovic     ::testing::InitGoogleTest(&argc, argv);
101*7969c931SDamjan Jovanovic     return RUN_ALL_TESTS();
102*7969c931SDamjan Jovanovic }
103