diff -r 000000000000 -r e4d67989cc36 genericopenlibs/cppstdlib/stl/test/unit/valarray_test.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/genericopenlibs/cppstdlib/stl/test/unit/valarray_test.cpp Tue Feb 02 02:01:42 2010 +0200 @@ -0,0 +1,890 @@ +// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#include + +#include "cppunit/cppunit_proxy.h" + +#if !defined (STLPORT) || defined(_STLP_USE_NAMESPACES) +using namespace std; +#endif + +// +// TestCase class +// +class ValarrayTest : public CPPUNIT_NS::TestCase +{ + CPPUNIT_TEST_SUITE(ValarrayTest); + CPPUNIT_TEST(transcendentals); + CPPUNIT_TEST(valarray_cov1); + CPPUNIT_TEST(valarray_cov2); + CPPUNIT_TEST(valarray_cov3); + CPPUNIT_TEST(valarray_cov4); + CPPUNIT_TEST(valarray_cov5); + CPPUNIT_TEST(valarray_cov6); + CPPUNIT_TEST(valarray_cov7); + CPPUNIT_TEST(valarray_cov8); + CPPUNIT_TEST(valarray_cov9); + CPPUNIT_TEST(valarray_cov10); + CPPUNIT_TEST(valarray_cov11); + CPPUNIT_TEST(valarray_cov12); + CPPUNIT_TEST_SUITE_END(); + +protected: + void transcendentals(); + void valarray_cov1(); + void valarray_cov2(); + void valarray_cov3(); + void valarray_cov4(); + void valarray_cov5(); + void valarray_cov6(); + void valarray_cov7(); + void valarray_cov8(); + void valarray_cov9(); + void valarray_cov10(); + void valarray_cov11(); + void valarray_cov12(); +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(ValarrayTest); + +int MyApplyFunc( int n ) + { + return n*2; + } + + +// +// tests implementation +// +// For the moment this test is just a complitation test +// everyone is welcome to do a real good unit test for +// valarray functionality. +void ValarrayTest::transcendentals() +{ +#ifdef __SUNPRO_CC + using std::abs; +#endif + { + valarray darray; + valarray tmp; + tmp = abs(darray); + tmp = acos(darray); + tmp = asin(darray); + tmp = atan(darray); + tmp = atan2(darray, tmp); + tmp = atan2(1.0, darray); + tmp = atan2(darray, 1.0); + tmp = cos(darray); + tmp = cosh(darray); + tmp = sin(darray); + tmp = sinh(darray); + tmp = tan(darray); +#if !defined (STLPORT) || !defined (_STLP_USING_PLATFORM_SDK_COMPILER) || !defined (_M_AMD64) + tmp = tanh(darray); +#endif + tmp = exp(darray); + tmp = log(darray); + tmp = log10(darray); + tmp = pow(darray, tmp); + tmp = pow(1.0, darray); + tmp = pow(darray, 1.0); + tmp = sqrt(darray); + } + { + valarray farray; + valarray tmp; + tmp = abs(farray); + tmp = acos(farray); + tmp = asin(farray); + tmp = atan(farray); + tmp = atan2(farray, tmp); + tmp = atan2(1.0f, farray); + tmp = atan2(farray, 1.0f); + tmp = cos(farray); + tmp = cosh(farray); + tmp = sin(farray); + tmp = sinh(farray); + tmp = tan(farray); +#if !defined (STLPORT) || !defined (_STLP_USING_PLATFORM_SDK_COMPILER) || !defined (_M_AMD64) + tmp = tanh(farray); +#endif + tmp = exp(farray); + tmp = log(farray); + tmp = log10(farray); + tmp = pow(farray, tmp); + tmp = pow(1.0f, farray); + tmp = pow(farray, 1.0f); + tmp = sqrt(farray); + } +#if !defined (STLPORT) || !defined (_STLP_NO_LONG_DOUBLE) + { + valarray ldarray; + valarray tmp; + tmp = abs(ldarray); + tmp = acos(ldarray); + tmp = asin(ldarray); + tmp = atan(ldarray); + tmp = atan2(ldarray, tmp); + tmp = atan2(1.0l, ldarray); + tmp = atan2(ldarray, 1.0l); + tmp = cos(ldarray); + tmp = cosh(ldarray); + tmp = sin(ldarray); + tmp = sinh(ldarray); + tmp = tan(ldarray); +# if !defined (STLPORT) || !defined (_STLP_USING_PLATFORM_SDK_COMPILER) || !defined (_M_AMD64) + tmp = tanh(ldarray); +# endif + tmp = exp(ldarray); + tmp = log(ldarray); + tmp = log10(ldarray); + tmp = pow(ldarray, tmp); + tmp = pow(1.0l, ldarray); + tmp = pow(ldarray, 1.0l); + tmp = sqrt(ldarray); + } +#endif +} +void ValarrayTest::valarray_cov1() + { + {/* + int i; + valarray va ( 10 ); + + for ( i = 0 ; i < 10 ; i += 1 ) + va [ i ] = 2 * ( i + 1 ); + CPPUNIT_ASSERT(va.size()==10); + + float af1 [] = {0, 1, 2, 3}; + valarray vf1 (af1, 4); + CPPUNIT_ASSERT(vf1.size()==4); + + valarray vf2 (10, 3.0f); + CPPUNIT_ASSERT(vf2.size()==10); + + valarray vf3 (vf2); + CPPUNIT_ASSERT(vf3.size()==10); + + slice Slice ( 2 , 4 , 3 ); + + valarray vaSlice = va [ Slice ]; + + CPPUNIT_ASSERT(vaSlice [ 0 ] == 6); + CPPUNIT_ASSERT(vaSlice [ 1 ] == 12); + CPPUNIT_ASSERT(vaSlice [ 2 ] == 18);*/ + } + {/* + int i; + + valarray va ( 20 ), vaResult; + for ( i = 0 ; i < 20 ; i+=1 ) + va [ i ] = i; + valarray Len ( 2 ), Stride ( 2 ); + Len [0] = 4; + Len [1] = 4; + Stride [0] = 7; + Stride [1] = 4; + + gslice vaGSlice ( 0, Len, Stride ); + vaResult = va [ vaGSlice ]; + CPPUNIT_ASSERT(vaResult [ 0 ] == 0); + CPPUNIT_ASSERT(vaResult [ 1 ] == 4); + CPPUNIT_ASSERT(vaResult [ 2 ] == 8); + CPPUNIT_ASSERT(vaResult [ 3 ] == 12); + CPPUNIT_ASSERT(vaResult [ 4 ] == 7); + CPPUNIT_ASSERT(vaResult [ 5 ] == 11); + CPPUNIT_ASSERT(vaResult [ 6 ] == 15); + CPPUNIT_ASSERT(vaResult [ 7 ] == 19);*/ + } + { + int i; + + valarray va ( 10 ); + for ( i = 0 ; i < 10 ; i += 2 ) + va [ i ] = i; + for ( i = 1 ; i < 10 ; i += 2 ) + va [ i ] = -1; + // Use masked subsets to assign a value of 10 + // to all elements grrater than 3 in value + va [va > 3 ] = 10; + CPPUNIT_ASSERT(va [ 0 ] == 0); + CPPUNIT_ASSERT(va [ 1 ] == -1); + CPPUNIT_ASSERT(va [ 2 ] == 2); + CPPUNIT_ASSERT(va [ 3 ] == -1); + CPPUNIT_ASSERT(va [ 4 ] == 10); + CPPUNIT_ASSERT(va [ 5 ] == -1); + CPPUNIT_ASSERT(va [ 6 ] == 10); + CPPUNIT_ASSERT(va [ 7 ] == -1); + CPPUNIT_ASSERT(va [ 8 ] == 10); + CPPUNIT_ASSERT(va [ 9 ] == -1); + } + { + int i; + + valarray va ( 10 ); + for ( i = 0 ; i < 10 ; i += 2 ) + va [ i ] = i; + for ( i = 1 ; i < 10 ; i += 2 ) + va [ i ] = -1; + // Select 2nd, 4th & 6th elements + // and assign a value of 10 to them + valarray indx ( 3 ); + indx [0] = 2; + indx [1] = 4; + indx [2] = 6; + va[indx] = 10; + CPPUNIT_ASSERT(va [ 0 ] == 0); + CPPUNIT_ASSERT(va [ 1 ] == -1); + CPPUNIT_ASSERT(va [ 2 ] == 10); + CPPUNIT_ASSERT(va [ 3 ] == -1); + CPPUNIT_ASSERT(va [ 4 ] == 10); + CPPUNIT_ASSERT(va [ 5 ] == -1); + CPPUNIT_ASSERT(va [ 6 ] == 10); + CPPUNIT_ASSERT(va [ 7 ] == -1); + CPPUNIT_ASSERT(va [ 8 ] == 8); + CPPUNIT_ASSERT(va [ 9 ] == -1); + } + } +void ValarrayTest::valarray_cov2() + { + { + int i; + + valarray va ( 10 ); + for ( i = 0 ; i < 10 ; i+=1 ) + va [ i ] = i; + CPPUNIT_ASSERT(va.sum ( ) == 45); + CPPUNIT_ASSERT(va.min ( ) == 0); + CPPUNIT_ASSERT(va.max ( ) == 9); + } + { + int i; + valarray va1 ( 3 ); + for ( i = 0 ; i < 3 ; i+=1 ) + va1 [ i ] = i; + va1.resize(5, 10); + + CPPUNIT_ASSERT(va1 [ 0 ] == 10); + CPPUNIT_ASSERT(va1 [ 1 ] == 10); + CPPUNIT_ASSERT(va1 [ 2 ] == 10); + CPPUNIT_ASSERT(va1 [ 3 ] == 10); + CPPUNIT_ASSERT(va1 [ 4 ] == 10); + CPPUNIT_ASSERT(va1.size ( ) == 5); + } + { + int i; + + valarray vaR ( 3 ),vaApplied(3); + for ( i = 0 ; i < 3 ; i+=1 ) + vaR [ i ] = i; + + vaApplied = vaR.apply( MyApplyFunc ); + CPPUNIT_ASSERT(vaApplied [ 0 ] == 0); + CPPUNIT_ASSERT(vaApplied [ 1 ] == 2); + CPPUNIT_ASSERT(vaApplied [ 2 ] == 4); + } + { + int i; + + valarray vaL2 ( 4 ); + valarray vaNOT2 ( 4 ); + for ( i = 0 ; i < 3 ; i += 2 ) + vaL2 [ i ] = i; + for ( i = 1 ; i < 3 ; i += 2 ) + vaL2 [ i ] = -2 * i; + vaNOT2 = ~vaL2; + CPPUNIT_ASSERT(vaNOT2 [ 0 ] == -1); + CPPUNIT_ASSERT(vaNOT2 [ 1 ] == 1); + CPPUNIT_ASSERT(vaNOT2 [ 2 ] == -3); + } + } +void ValarrayTest::valarray_cov3() + { + { + valarray vaL ( 3 ), vaR ( 3 ),vaL1(3); + vaL[0] = 1;vaR[0] = 1; + vaL[1] = 0;vaR[1] = 2; + vaL[2] = 1;vaR[2] = 3; + vaL1 = vaL; + + vaL |= vaR; + CPPUNIT_ASSERT(vaL [ 0 ] == 1); + CPPUNIT_ASSERT(vaL [ 1 ] == 2); + CPPUNIT_ASSERT(vaL [ 2 ] == 3); + + vaL1 |= 3; + CPPUNIT_ASSERT(vaL1 [ 0 ] == 3); + CPPUNIT_ASSERT(vaL1 [ 1 ] == 3); + CPPUNIT_ASSERT(vaL1 [ 2 ] == 3); + } + { + valarray vaL ( 3 ), vaR ( 3 ),vaL1(3); + vaL[0] = 1;vaR[0] = 0; + vaL[1] = 0;vaR[1] = 0; + vaL[2] = 1;vaR[2] = 1; + vaL1 = vaL; + + vaL ^= vaR; + CPPUNIT_ASSERT(vaL [ 0 ] == 1); + CPPUNIT_ASSERT(vaL [ 1 ] == 0); + CPPUNIT_ASSERT(vaL [ 2 ] == 0); + + vaL1 ^= 0; + CPPUNIT_ASSERT(vaL1 [ 0 ] == 1); + CPPUNIT_ASSERT(vaL1 [ 1 ] == 0); + CPPUNIT_ASSERT(vaL1 [ 2 ] == 1); + } + { + valarray vaL ( 3 ), vaR ( 3 ),vaL1(3); + vaL[0] = 64;vaR[0] = 0; + vaL[1] = -64;vaR[1] = 1; + vaL[2] = 64;vaR[2] = 2; + vaL1 = vaL; + + vaL >>= vaR; + CPPUNIT_ASSERT(vaL [ 0 ] == 64); + CPPUNIT_ASSERT(vaL [ 1 ] == -32); + CPPUNIT_ASSERT(vaL [ 2 ] == 16); + + vaL1 >>= 0; + CPPUNIT_ASSERT(vaL1 [ 0 ] == 64); + CPPUNIT_ASSERT(vaL1 [ 1 ] == -64); + CPPUNIT_ASSERT(vaL1 [ 2 ] == 64); + } + } +void ValarrayTest::valarray_cov4() + { + { + valarray vaL ( 3 ), vaR ( 3 ),vaL1(3); + vaL[0] = 1;vaR[0] = 0; + vaL[1] = -1;vaR[1] = 1; + vaL[2] = 1;vaR[2] = 2; + vaL1 = vaL; + + vaL <<= vaR; + CPPUNIT_ASSERT(vaL [ 0 ] == 1); + CPPUNIT_ASSERT(vaL [ 1 ] == -2); + CPPUNIT_ASSERT(vaL [ 2 ] == 4); + + vaL1 <<= 2; + CPPUNIT_ASSERT(vaL1 [ 0 ] == 4); + CPPUNIT_ASSERT(vaL1 [ 1 ] == -4); + CPPUNIT_ASSERT(vaL1 [ 2 ] == 4); + } + { + valarray vaL ( 3 ), vaR ( 3 ),vaL1(3); + vaL[0] = 100;vaR[0] = 2; + vaL[1] = -100;vaR[1] = 4; + vaL[2] = 100;vaR[2] = 10; + vaL1 = vaL; + + vaL /= vaR; + CPPUNIT_ASSERT(vaL [ 0 ] == 50); + CPPUNIT_ASSERT(vaL [ 1 ] == -25); + CPPUNIT_ASSERT(vaL [ 2 ] == 10); + + vaL1 /= 2; + CPPUNIT_ASSERT(vaL1 [ 0 ] == 50); + CPPUNIT_ASSERT(vaL1 [ 1 ] == -50); + CPPUNIT_ASSERT(vaL1 [ 2 ] == 50); + } + { + valarray vaL ( 3 ), vaR ( 3 ),vaL1(3); + vaL[0] = 10;vaR[0] = 0; + vaL[1] = -10;vaR[1] = 1; + vaL[2] = 10;vaR[2] = 2; + vaL1 = vaL; + + vaL -= vaR; + CPPUNIT_ASSERT(vaL [ 0 ] == 10); + CPPUNIT_ASSERT(vaL [ 1 ] == -11); + CPPUNIT_ASSERT(vaL [ 2 ] == 8); + + vaL1 -= 2; + CPPUNIT_ASSERT(vaL1 [ 0 ] == 8); + CPPUNIT_ASSERT(vaL1 [ 1 ] == -12); + CPPUNIT_ASSERT(vaL1 [ 2 ] == 8); + } + } +void ValarrayTest::valarray_cov5() + { + { + valarray vaL ( 3 ), vaR ( 3 ); + vaL[0] = 0; + vaL[1] = -10; + vaL[2] = 10; + + vaR = -vaL; + CPPUNIT_ASSERT(vaR [ 0 ] == 0); + CPPUNIT_ASSERT(vaR [ 1 ] == 10); + CPPUNIT_ASSERT(vaR [ 2 ] == -10); + } + { + valarray vaL ( 3 ), vaR ( 3 ),vaL1(3); + vaL[0] = 10;vaR[0] = 0; + vaL[1] = -10;vaR[1] = 1; + vaL[2] = 10;vaR[2] = 2; + vaL1 = vaL; + + vaL += vaR; + CPPUNIT_ASSERT(vaL [ 0 ] == 10); + CPPUNIT_ASSERT(vaL [ 1 ] == -9); + CPPUNIT_ASSERT(vaL [ 2 ] == 12); + + vaL1 += 2; + CPPUNIT_ASSERT(vaL1 [ 0 ] == 12); + CPPUNIT_ASSERT(vaL1 [ 1 ] == -8); + CPPUNIT_ASSERT(vaL1 [ 2 ] == 12); + } + { + valarray vaL ( 3 ), vaR ( 3 ),vaL1(3); + vaL[0] = 2;vaR[0] = 0; + vaL[1] = -1;vaR[1] = 1; + vaL[2] = 2;vaR[2] = 2; + vaL1 = vaL; + + vaL *= vaR; + CPPUNIT_ASSERT(vaL [ 0 ] == 0); + CPPUNIT_ASSERT(vaL [ 1 ] == -1); + CPPUNIT_ASSERT(vaL [ 2 ] == 4); + + vaL1 *= 2; + CPPUNIT_ASSERT(vaL1 [ 0 ] == 4); + CPPUNIT_ASSERT(vaL1 [ 1 ] == -2); + CPPUNIT_ASSERT(vaL1 [ 2 ] == 4); + } + { + valarray vaL ( 3 ), vaR ( 3 ),vaL1(3); + vaL[0] = 0;vaR[0] = 0; + vaL[1] = 1;vaR[1] = 1; + vaL[2] = 2;vaR[2] = 2; + vaL1 = vaL; + + vaL &= vaR; + CPPUNIT_ASSERT(vaL [ 0 ] == 0); + CPPUNIT_ASSERT(vaL [ 1 ] == 1); + CPPUNIT_ASSERT(vaL [ 2 ] == 2); + + vaL1 &= 0; + CPPUNIT_ASSERT(vaL1 [ 0 ] == 0); + CPPUNIT_ASSERT(vaL1 [ 1 ] == 0); + CPPUNIT_ASSERT(vaL1 [ 2 ] == 0); + } + } +void ValarrayTest::valarray_cov6() + { + { + valarray vaL ( 3 ), vaR ( 3 ),vaL1(3); + vaL[0] = 53;vaR[0] = 1; + vaL[1] = -67;vaR[1] = 4; + vaL[2] = 53;vaR[2] = 7; + vaL1 = vaL; + + vaL %= vaR; + CPPUNIT_ASSERT(vaL [ 0 ] == 0); + CPPUNIT_ASSERT(vaL [ 1 ] == -3); + CPPUNIT_ASSERT(vaL [ 2 ] == 4); + + vaL1 %= 53; + CPPUNIT_ASSERT(vaL1 [ 0 ] == 0); + CPPUNIT_ASSERT(vaL1 [ 1 ] == -14); + CPPUNIT_ASSERT(vaL1 [ 2 ] == 0); + } + { + valarray vaL ( 3 ), vaR ( 3 ),vaL1(3),vaL2(3); + vaL[0] = 1;vaR[0] = 1; + vaL[1] = 0;vaR[1] = 2; + vaL[2] = 1;vaR[2] = 3; + vaL1 = vaL; + vaL2 = vaL; + + vaL = vaL | vaR; + CPPUNIT_ASSERT(vaL [ 0 ] == 1); + CPPUNIT_ASSERT(vaL [ 1 ] == 2); + CPPUNIT_ASSERT(vaL [ 2 ] == 3); + + vaL1 = vaL1 | 3; + CPPUNIT_ASSERT(vaL1 [ 0 ] == 3); + CPPUNIT_ASSERT(vaL1 [ 1 ] == 3); + CPPUNIT_ASSERT(vaL1 [ 2 ] == 3); + vaL2 = 3 | vaL2; + CPPUNIT_ASSERT(vaL2 [ 0 ] == 3); + CPPUNIT_ASSERT(vaL2 [ 1 ] == 3); + CPPUNIT_ASSERT(vaL2 [ 2 ] == 3); + } + { + valarray vaL ( 3 ), vaR ( 3 ),vaL1(3),vaL2(3); + vaL[0] = 1;vaR[0] = 0; + vaL[1] = 0;vaR[1] = 0; + vaL[2] = 1;vaR[2] = 1; + vaL1 = vaL; + vaL2 = vaL; + + vaL = vaL ^ vaR; + CPPUNIT_ASSERT(vaL [ 0 ] == 1); + CPPUNIT_ASSERT(vaL [ 1 ] == 0); + CPPUNIT_ASSERT(vaL [ 2 ] == 0); + + vaL1 = vaL1 ^ 0; + CPPUNIT_ASSERT(vaL1 [ 0 ] == 1); + CPPUNIT_ASSERT(vaL1 [ 1 ] == 0); + CPPUNIT_ASSERT(vaL1 [ 2 ] == 1); + vaL2 = 0 ^ vaL2; + CPPUNIT_ASSERT(vaL2 [ 0 ] == 1); + CPPUNIT_ASSERT(vaL2 [ 1 ] == 0); + CPPUNIT_ASSERT(vaL2 [ 2 ] == 1); + } + } +void ValarrayTest::valarray_cov7() + { + { + valarray vaL ( 3 ), vaR ( 3 ),vaL1(3),vaL2(3); + vaL[0] = 64;vaR[0] = 0; + vaL[1] = -64;vaR[1] = 1; + vaL[2] = 64;vaR[2] = 2; + vaL1 = vaL; + vaL2 = vaL; + + vaL = vaL >> vaR; + CPPUNIT_ASSERT(vaL [ 0 ] == 64); + CPPUNIT_ASSERT(vaL [ 1 ] == -32); + CPPUNIT_ASSERT(vaL [ 2 ] == 16); + + vaL1 = vaL1 >> 0; + CPPUNIT_ASSERT(vaL1 [ 0 ] == 64); + CPPUNIT_ASSERT(vaL1 [ 1 ] == -64); + CPPUNIT_ASSERT(vaL1 [ 2 ] == 64); + vaL2 = 0 >> vaL2; + CPPUNIT_ASSERT(vaL2 [ 0 ] == 0); + CPPUNIT_ASSERT(vaL2 [ 1 ] == 0); + CPPUNIT_ASSERT(vaL2 [ 2 ] == 0); + } + { + valarray vaL ( 3 ), vaR ( 3 ); + valarray vaLb1(3),vaLb2(3),vaLb3(3); + vaL[0] = 1;vaR[0] = 0; + vaL[1] = 0;vaR[1] = 0; + vaL[2] = 1;vaR[2] = 2; + + vaLb1 = (vaL >= vaR); + CPPUNIT_ASSERT(vaLb1 [ 0 ] == true); + CPPUNIT_ASSERT(vaLb1 [ 1 ] == true); + CPPUNIT_ASSERT(vaLb1 [ 2 ] == false); + + vaLb2 = (vaL >= 0); + CPPUNIT_ASSERT(vaLb2 [ 0 ] == true); + CPPUNIT_ASSERT(vaLb2 [ 1 ] == true); + CPPUNIT_ASSERT(vaLb2 [ 2 ] == true); + vaLb3 = (0 >= vaL); + CPPUNIT_ASSERT(vaLb3 [ 0 ] == false); + CPPUNIT_ASSERT(vaLb3 [ 1 ] == true); + CPPUNIT_ASSERT(vaLb3 [ 2 ] == false); + } + { + valarray vaL ( 3 ), vaR ( 3 ); + valarray vaLb1(3),vaLb2(3),vaLb3(3); + vaL[0] = 1;vaR[0] = 0; + vaL[1] = 0;vaR[1] = 0; + vaL[2] = 1;vaR[2] = 2; + + vaLb1 = (vaL > vaR); + CPPUNIT_ASSERT(vaLb1 [ 0 ] == true); + CPPUNIT_ASSERT(vaLb1 [ 1 ] == false); + CPPUNIT_ASSERT(vaLb1 [ 2 ] == false); + + vaLb2 = (vaL > 0); + CPPUNIT_ASSERT(vaLb2 [ 0 ] == true); + CPPUNIT_ASSERT(vaLb2 [ 1 ] == false); + CPPUNIT_ASSERT(vaLb2 [ 2 ] == true); + vaLb3 = (0 > vaL); + CPPUNIT_ASSERT(vaLb3 [ 0 ] == false); + CPPUNIT_ASSERT(vaLb3 [ 1 ] == false); + CPPUNIT_ASSERT(vaLb3 [ 2 ] == false); + } + } +void ValarrayTest::valarray_cov8() + { + { + valarray vaL ( 3 ), vaR ( 3 ); + valarray vaLb1(3),vaLb2(3),vaLb3(3); + vaL[0] = 1;vaR[0] = 0; + vaL[1] = 0;vaR[1] = 0; + vaL[2] = 1;vaR[2] = 2; + + vaLb1 = (vaL == vaR); + CPPUNIT_ASSERT(vaLb1 [ 0 ] == false); + CPPUNIT_ASSERT(vaLb1 [ 1 ] == true); + CPPUNIT_ASSERT(vaLb1 [ 2 ] == false); + + vaLb2 = (vaL == 0); + CPPUNIT_ASSERT(vaLb2 [ 0 ] == false); + CPPUNIT_ASSERT(vaLb2 [ 1 ] == true); + CPPUNIT_ASSERT(vaLb2 [ 2 ] == false); + vaLb3 = (0 == vaL); + CPPUNIT_ASSERT(vaLb3 [ 0 ] == false); + CPPUNIT_ASSERT(vaLb3 [ 1 ] == true); + CPPUNIT_ASSERT(vaLb3 [ 2 ] == false); + } + { + valarray vaL ( 3 ), vaR ( 3 ); + valarray vaLb1(3),vaLb2(3),vaLb3(3); + vaL[0] = 1;vaR[0] = 0; + vaL[1] = 0;vaR[1] = 0; + vaL[2] = 1;vaR[2] = 2; + + vaLb1 = (vaL <= vaR); + CPPUNIT_ASSERT(vaLb1 [ 0 ] == false); + CPPUNIT_ASSERT(vaLb1 [ 1 ] == true); + CPPUNIT_ASSERT(vaLb1 [ 2 ] == true); + + vaLb2 = (vaL <= 0); + CPPUNIT_ASSERT(vaLb2 [ 0 ] == false); + CPPUNIT_ASSERT(vaLb2 [ 1 ] == true); + CPPUNIT_ASSERT(vaLb2 [ 2 ] == false); + vaLb3 = (0 <= vaL); + CPPUNIT_ASSERT(vaLb3 [ 0 ] == true); + CPPUNIT_ASSERT(vaLb3 [ 1 ] == true); + CPPUNIT_ASSERT(vaLb3 [ 2 ] == true); + } + { + valarray vaL ( 3 ), vaR ( 3 ),vaL1(3),vaL2(3); + vaL[0] = 1;vaR[0] = 0; + vaL[1] = -1;vaR[1] = 1; + vaL[2] = 1;vaR[2] = 2; + vaL1 = vaL; + vaL2 = vaL; + + vaL = vaL << vaR; + CPPUNIT_ASSERT(vaL [ 0 ] == 1); + CPPUNIT_ASSERT(vaL [ 1 ] == -2); + CPPUNIT_ASSERT(vaL [ 2 ] == 4); + + vaL1 = vaL1 << 2; + CPPUNIT_ASSERT(vaL1 [ 0 ] == 4); + CPPUNIT_ASSERT(vaL1 [ 1 ] == -4); + CPPUNIT_ASSERT(vaL1 [ 2 ] == 4); + vaL2 = 2 << vaL2; + CPPUNIT_ASSERT(vaL2 [ 0 ] == 4); + CPPUNIT_ASSERT(vaL2 [ 1 ] == 0); + CPPUNIT_ASSERT(vaL2 [ 2 ] == 4); + } + } +void ValarrayTest::valarray_cov9() + { + { + valarray vaL ( 3 ), vaR ( 3 ); + valarray vaLb1(3),vaLb2(3),vaLb3(3); + vaL[0] = 1;vaR[0] = 0; + vaL[1] = 0;vaR[1] = 0; + vaL[2] = 1;vaR[2] = 2; + + vaLb1 = (vaL < vaR); + CPPUNIT_ASSERT(vaLb1 [ 0 ] == false); + CPPUNIT_ASSERT(vaLb1 [ 1 ] == false); + CPPUNIT_ASSERT(vaLb1 [ 2 ] == true); + + vaLb2 = (vaL < 0); + CPPUNIT_ASSERT(vaLb2 [ 0 ] == false); + CPPUNIT_ASSERT(vaLb2 [ 1 ] == false); + CPPUNIT_ASSERT(vaLb2 [ 2 ] == false); + vaLb3 = (0 < vaL); + CPPUNIT_ASSERT(vaLb3 [ 0 ] == true); + CPPUNIT_ASSERT(vaLb3 [ 1 ] == false); + CPPUNIT_ASSERT(vaLb3 [ 2 ] == true); + } + { + valarray vaL ( 3 ), vaR ( 3 ),vaL1(3),vaL2(3); + vaL[0] = 100;vaR[0] = 2; + vaL[1] = -100;vaR[1] = 4; + vaL[2] = 100;vaR[2] = 10; + vaL1 = vaL; + vaL2 = vaL; + + vaL = vaL / vaR; + CPPUNIT_ASSERT(vaL [ 0 ] == 50); + CPPUNIT_ASSERT(vaL [ 1 ] == -25); + CPPUNIT_ASSERT(vaL [ 2 ] == 10); + + vaL1 = vaL1 / 2; + CPPUNIT_ASSERT(vaL1 [ 0 ] == 50); + CPPUNIT_ASSERT(vaL1 [ 1 ] == -50); + CPPUNIT_ASSERT(vaL1 [ 2 ] == 50); + vaL2 = 1000 / vaL2 ; + CPPUNIT_ASSERT(vaL2 [ 0 ] == 10); + CPPUNIT_ASSERT(vaL2 [ 1 ] == -10); + CPPUNIT_ASSERT(vaL2 [ 2 ] == 10); + } + { + valarray vaL ( 3 ), vaR ( 3 ),vaL1(3),vaL2(3); + vaL[0] = 10;vaR[0] = 0; + vaL[1] = -10;vaR[1] = 1; + vaL[2] = 10;vaR[2] = 2; + vaL1 = vaL; + vaL2 = vaL; + + vaL = vaL - vaR; + CPPUNIT_ASSERT(vaL [ 0 ] == 10); + CPPUNIT_ASSERT(vaL [ 1 ] == -11); + CPPUNIT_ASSERT(vaL [ 2 ] == 8); + + vaL1 = vaL1 - 2; + CPPUNIT_ASSERT(vaL1 [ 0 ] == 8); + CPPUNIT_ASSERT(vaL1 [ 1 ] == -12); + CPPUNIT_ASSERT(vaL1 [ 2 ] == 8); + vaL2 = 2 - vaL2; + CPPUNIT_ASSERT(vaL2 [ 0 ] == -8); + CPPUNIT_ASSERT(vaL2 [ 1 ] == 12); + CPPUNIT_ASSERT(vaL2 [ 2 ] == -8); + } + } +void ValarrayTest::valarray_cov10() + { + { + valarray vaL ( 3 ), vaR ( 3 ),vaL1(3),vaL2(3); + vaL[0] = 10;vaR[0] = 0; + vaL[1] = -10;vaR[1] = 1; + vaL[2] = 10;vaR[2] = 2; + vaL1 = vaL; + vaL2 = vaL; + + vaL = vaL + vaR; + CPPUNIT_ASSERT(vaL [ 0 ] == 10); + CPPUNIT_ASSERT(vaL [ 1 ] == -9); + CPPUNIT_ASSERT(vaL [ 2 ] == 12); + + vaL1 = vaL1 + 2; + CPPUNIT_ASSERT(vaL1 [ 0 ] == 12); + CPPUNIT_ASSERT(vaL1 [ 1 ] == -8); + CPPUNIT_ASSERT(vaL1 [ 2 ] == 12); + vaL2 = 2 + vaL2; + CPPUNIT_ASSERT(vaL2 [ 0 ] == 12); + CPPUNIT_ASSERT(vaL2 [ 1 ] == -8); + CPPUNIT_ASSERT(vaL2 [ 2 ] == 12); + } + { + valarray vaL ( 3 ), vaR ( 3 ),vaL1(3),vaL2(3); + vaL[0] = 10;vaR[0] = 0; + vaL[1] = -10;vaR[1] = 1; + vaL[2] = 10;vaR[2] = 2; + vaL1 = vaL; + vaL2 = vaL; + + vaL = vaL * vaR; + CPPUNIT_ASSERT(vaL [ 0 ] == 0); + CPPUNIT_ASSERT(vaL [ 1 ] == -10); + CPPUNIT_ASSERT(vaL [ 2 ] == 20); + + vaL1 = vaL1 * 2; + CPPUNIT_ASSERT(vaL1 [ 0 ] == 20); + CPPUNIT_ASSERT(vaL1 [ 1 ] == -20); + CPPUNIT_ASSERT(vaL1 [ 2 ] == 20); + vaL2 = 2 * vaL2; + CPPUNIT_ASSERT(vaL2 [ 0 ] == 20); + CPPUNIT_ASSERT(vaL2 [ 1 ] == -20); + CPPUNIT_ASSERT(vaL2 [ 2 ] == 20); + } + { + valarray vaL ( 3 ), vaR ( 3 ),vaL1(3),vaL2(3); + vaL[0] = 0;vaR[0] = 0; + vaL[1] = 1;vaR[1] = 1; + vaL[2] = 2;vaR[2] = 2; + vaL1 = vaL; + vaL2 = vaL; + + vaL = vaL & vaR; + CPPUNIT_ASSERT(vaL [ 0 ] == 0); + CPPUNIT_ASSERT(vaL [ 1 ] == 1); + CPPUNIT_ASSERT(vaL [ 2 ] == 2); + + vaL1 = vaL1 & 0; + CPPUNIT_ASSERT(vaL1 [ 0 ] == 0); + CPPUNIT_ASSERT(vaL1 [ 1 ] == 0); + CPPUNIT_ASSERT(vaL1 [ 2 ] == 0); + vaL2 = 0 & vaL2; + CPPUNIT_ASSERT(vaL2 [ 0 ] == 0); + CPPUNIT_ASSERT(vaL2 [ 1 ] == 0); + CPPUNIT_ASSERT(vaL2 [ 2 ] == 0); + } + } +void ValarrayTest::valarray_cov11() + { + { + valarray vaL ( 3 ), vaR ( 3 ),vaL1(3),vaL2(3); + vaL[0] = 53;vaR[0] = 1; + vaL[1] = -67;vaR[1] = 4; + vaL[2] = 53;vaR[2] = 7; + vaL1 = vaL; + vaL2 = vaL; + + vaL = vaL % vaR; + CPPUNIT_ASSERT(vaL [ 0 ] == 0); + CPPUNIT_ASSERT(vaL [ 1 ] == -3); + CPPUNIT_ASSERT(vaL [ 2 ] == 4); + + vaL1 = vaL1 % 53; + CPPUNIT_ASSERT(vaL1 [ 0 ] == 0); + CPPUNIT_ASSERT(vaL1 [ 1 ] == -14); + CPPUNIT_ASSERT(vaL1 [ 2 ] == 0); + + vaL2 = 67 % vaL2; + CPPUNIT_ASSERT(vaL2 [ 0 ] == 14); + CPPUNIT_ASSERT(vaL2 [ 1 ] == 0); + CPPUNIT_ASSERT(vaL2 [ 2 ] == 14); + } + { + valarray vaL ( 3 ), vaR ( 3 ); + valarray vaLb1(3),vaLb2(3),vaLb3(3); + vaL[0] = 1;vaR[0] = 0; + vaL[1] = 0;vaR[1] = 0; + vaL[2] = 1;vaR[2] = 2; + + vaLb1 = (vaL != vaR); + CPPUNIT_ASSERT(vaLb1 [ 0 ] == true); + CPPUNIT_ASSERT(vaLb1 [ 1 ] == false); + CPPUNIT_ASSERT(vaLb1 [ 2 ] == true); + + vaLb2 = (vaL != 0); + CPPUNIT_ASSERT(vaLb2 [ 0 ] == true); + CPPUNIT_ASSERT(vaLb2 [ 1 ] == false); + CPPUNIT_ASSERT(vaLb2 [ 2 ] == true); + vaLb3 = (1 != vaL); + CPPUNIT_ASSERT(vaLb3 [ 0 ] == false); + CPPUNIT_ASSERT(vaLb3 [ 1 ] == true); + CPPUNIT_ASSERT(vaLb3 [ 2 ] == false); + } + } +void ValarrayTest::valarray_cov12() + { + { + valarray vaL ( 4 ), vaL1(4),vaR ( 4 ) , vaR1 ( 4 ); + + vaL[0] = 0;vaL1[0] = 7; + vaL[1] = 1;vaL1[1] = 6; + vaL[2] = 2;vaL1[2] = 5; + vaL[3] = 3;vaL1[3] = 4; + + vaR = vaL.shift(3); + CPPUNIT_ASSERT(vaR [ 0 ] == 3); + CPPUNIT_ASSERT(vaR [ 1 ] == 0); + CPPUNIT_ASSERT(vaR [ 2 ] == 0); + CPPUNIT_ASSERT(vaR [ 3 ] == 0); + vaR1 = vaL1.shift(-4); + CPPUNIT_ASSERT(vaR1 [ 0 ] == 0); + CPPUNIT_ASSERT(vaR1 [ 1 ] == 0); + CPPUNIT_ASSERT(vaR1 [ 2 ] == 0); + CPPUNIT_ASSERT(vaR1 [ 3 ] == 0); + } + }