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