LCOV - code coverage report
Current view: top level - cppu/qa - test_any.cxx (source / functions) Hit Total Coverage
Test: commit 0e63ca4fde4e446f346e35849c756a30ca294aab Lines: 1123 1150 97.7 %
Date: 2014-04-11 Functions: 50 54 92.6 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <sal/types.h>
      21             : 
      22             : #include <stdlib.h>
      23             : 
      24             : #include <cppunit/TestSuite.h>
      25             : #include <cppunit/TestFixture.h>
      26             : #include <cppunit/TestCase.h>
      27             : #include <cppunit/plugin/TestPlugIn.h>
      28             : #include <cppunit/extensions/HelperMacros.h>
      29             : 
      30             : #include "Enum1.hpp"
      31             : #include "Enum2.hpp"
      32             : #include "Exception1.hpp"
      33             : #include "Exception2.hpp"
      34             : #include "Exception2a.hpp"
      35             : #include "Exception2b.hpp"
      36             : #include "Interface1.hpp"
      37             : #include "Interface2.hpp"
      38             : #include "Interface2a.hpp"
      39             : #include "Interface2b.hpp"
      40             : #include "Interface3.hpp"
      41             : #include "Poly.hpp"
      42             : #include "Struct1.hpp"
      43             : #include "Struct2.hpp"
      44             : #include "Struct2a.hpp"
      45             : #include "Struct2b.hpp"
      46             : #include "boost/noncopyable.hpp"
      47             : #include "boost/type_traits/is_same.hpp"
      48             : #include "com/sun/star/uno/Any.hxx"
      49             : #include "com/sun/star/uno/Reference.hxx"
      50             : #include "com/sun/star/uno/RuntimeException.hpp"
      51             : #include "com/sun/star/uno/Sequence.hxx"
      52             : #include "com/sun/star/uno/Type.hxx"
      53             : #include "com/sun/star/uno/XInterface.hpp"
      54             : #include "osl/diagnose.h"
      55             : #include "osl/interlck.h"
      56             : #include "rtl/string.h"
      57             : #include "rtl/ustring.h"
      58             : #include "rtl/ustring.hxx"
      59             : #include "sal/types.h"
      60             : 
      61             : namespace {
      62             : 
      63             : class Base: private boost::noncopyable {
      64             : public:
      65          29 :     Base(): m_count(0) {}
      66             : 
      67          60 :     void acquire() {
      68          60 :         if (osl_atomic_increment(&m_count) == SAL_MAX_INT32) {
      69           0 :             abort();
      70             :         }
      71          60 :     }
      72             : 
      73          60 :     void release() {
      74          60 :         if (osl_atomic_decrement(&m_count) == 0) {
      75          29 :             delete this;
      76             :         }
      77          60 :     }
      78             : 
      79             : protected:
      80          29 :     virtual ~Base() {}
      81             : 
      82             : private:
      83             :     oslInterlockedCount m_count;
      84             : };
      85             : 
      86          60 : class Impl1: public Interface1, private Base {
      87             : public:
      88           0 :     virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const & type)
      89             :         throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE
      90             :     {
      91           0 :         if (type
      92           0 :             == getCppuType< css::uno::Reference< css::uno::XInterface > >())
      93             :         {
      94             :             css::uno::Reference< css::uno::XInterface > ref(
      95           0 :                 static_cast< css::uno::XInterface * >(this));
      96           0 :             return css::uno::Any(&ref, type);
      97           0 :         } else if (type == getCppuType< css::uno::Reference< Interface1 > >()) {
      98           0 :             css::uno::Reference< Interface1 > ref(this);
      99           0 :             return css::uno::Any(&ref, type);
     100             :         } else {
     101           0 :             return css::uno::Any();
     102             :         }
     103             :     }
     104             : 
     105          39 :     virtual void SAL_CALL acquire() throw () SAL_OVERRIDE {
     106          39 :         Base::acquire();
     107          39 :     }
     108             : 
     109          39 :     virtual void SAL_CALL release() throw () SAL_OVERRIDE {
     110          39 :         Base::release();
     111          39 :     }
     112             : };
     113             : 
     114          21 : class Impl2: public Interface2a, public Interface3, private Base {
     115             : public:
     116           6 :     virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const & type)
     117             :         throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE
     118             :     {
     119           6 :         if (type
     120           6 :             == getCppuType< css::uno::Reference< css::uno::XInterface > >())
     121             :         {
     122             :             css::uno::Reference< css::uno::XInterface > ref(
     123             :                 static_cast< css::uno::XInterface * >(
     124           2 :                     static_cast< Interface2a * >(this)));
     125           2 :             return css::uno::Any(&ref, type);
     126           4 :         } else if (type == getCppuType< css::uno::Reference< Interface2 > >()) {
     127           1 :             css::uno::Reference< Interface2 > ref(this);
     128           1 :             return css::uno::Any(&ref, type);
     129           3 :         } else if (type == getCppuType< css::uno::Reference< Interface2a > >())
     130             :         {
     131           0 :             css::uno::Reference< Interface2a > ref(this);
     132           0 :             return css::uno::Any(&ref, type);
     133           3 :         } else if (type == getCppuType< css::uno::Reference< Interface3 > >()) {
     134           1 :             css::uno::Reference< Interface3 > ref(this);
     135           1 :             return css::uno::Any(&ref, type);
     136             :         } else {
     137           2 :             return css::uno::Any();
     138             :         }
     139             :     }
     140             : 
     141          18 :     virtual void SAL_CALL acquire() throw () SAL_OVERRIDE {
     142          18 :         Base::acquire();
     143          18 :     }
     144             : 
     145          18 :     virtual void SAL_CALL release() throw () SAL_OVERRIDE {
     146          18 :         Base::release();
     147          18 :     }
     148             : };
     149             : 
     150           6 : class Impl2b: public Interface2b, private Base {
     151             : public:
     152           0 :     virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const & type)
     153             :         throw (css::uno::RuntimeException, std::exception) SAL_OVERRIDE
     154             :     {
     155           0 :         if (type
     156           0 :             == getCppuType< css::uno::Reference< css::uno::XInterface > >())
     157             :         {
     158             :             css::uno::Reference< css::uno::XInterface > ref(
     159             :                 static_cast< css::uno::XInterface * >(
     160           0 :                     static_cast< Interface2a * >(this)));
     161           0 :             return css::uno::Any(&ref, type);
     162           0 :         } else if (type == getCppuType< css::uno::Reference< Interface2 > >()) {
     163           0 :             css::uno::Reference< Interface2 > ref(this);
     164           0 :             return css::uno::Any(&ref, type);
     165           0 :         } else if (type == getCppuType< css::uno::Reference< Interface2a > >())
     166             :         {
     167           0 :             css::uno::Reference< Interface2a > ref(this);
     168           0 :             return css::uno::Any(&ref, type);
     169           0 :         } else if (type == getCppuType< css::uno::Reference< Interface2b > >())
     170             :         {
     171           0 :             css::uno::Reference< Interface2b > ref(this);
     172           0 :             return css::uno::Any(&ref, type);
     173             :         } else {
     174           0 :             return css::uno::Any();
     175             :         }
     176             :     }
     177             : 
     178           3 :     virtual void SAL_CALL acquire() throw () SAL_OVERRIDE {
     179           3 :         Base::acquire();
     180           3 :     }
     181             : 
     182           3 :     virtual void SAL_CALL release() throw () SAL_OVERRIDE {
     183           3 :         Base::release();
     184           3 :     }
     185             : };
     186             : 
     187          63 : class Test: public CppUnit::TestFixture {
     188             : public:
     189             :     void testVoid();
     190             :     void testBoolean();
     191             :     void testByte();
     192             :     void testShort();
     193             :     void testUnsignedShort();
     194             :     void testLong();
     195             :     void testUnsignedLong();
     196             :     void testHyper();
     197             :     void testUnsignedHyper();
     198             :     void testFloat();
     199             :     void testDouble();
     200             :     void testChar();
     201             :     void testString();
     202             :     void testType();
     203             :     void testSequence();
     204             :     void testEnum();
     205             :     void testStruct();
     206             :     void testPoly();
     207             :     void testException();
     208             :     void testInterface();
     209             :     void testNull();
     210             : 
     211           2 :     CPPUNIT_TEST_SUITE(Test);
     212           1 :     CPPUNIT_TEST(testVoid);
     213           1 :     CPPUNIT_TEST(testBoolean);
     214           1 :     CPPUNIT_TEST(testByte);
     215           1 :     CPPUNIT_TEST(testShort);
     216           1 :     CPPUNIT_TEST(testUnsignedShort);
     217           1 :     CPPUNIT_TEST(testLong);
     218           1 :     CPPUNIT_TEST(testUnsignedLong);
     219           1 :     CPPUNIT_TEST(testHyper);
     220           1 :     CPPUNIT_TEST(testUnsignedHyper);
     221           1 :     CPPUNIT_TEST(testFloat);
     222           1 :     CPPUNIT_TEST(testDouble);
     223           1 :     CPPUNIT_TEST(testChar);
     224           1 :     CPPUNIT_TEST(testString);
     225           1 :     CPPUNIT_TEST(testType);
     226           1 :     CPPUNIT_TEST(testSequence);
     227           1 :     CPPUNIT_TEST(testEnum);
     228           1 :     CPPUNIT_TEST(testStruct);
     229           1 :     CPPUNIT_TEST(testPoly);
     230           1 :     CPPUNIT_TEST(testException);
     231           1 :     CPPUNIT_TEST(testInterface);
     232           1 :     CPPUNIT_TEST(testNull);
     233           2 :     CPPUNIT_TEST_SUITE_END();
     234             : };
     235             : 
     236           1 : void Test::testVoid() {
     237           1 :     css::uno::Any a;
     238           1 :     CPPUNIT_ASSERT(a.getValueType() == getVoidCppuType());
     239             :     {
     240           1 :         bool b = true;
     241           1 :         CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b);
     242             :     }
     243             :     {
     244           1 :         sal_Bool b = true;
     245           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b);
     246             :     }
     247             :     {
     248           1 :         sal_Int8 b = 2;
     249           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2);
     250             :     }
     251             :     {
     252           1 :         sal_uInt8 b = 2;
     253           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2);
     254             :     }
     255             :     {
     256           1 :         sal_Int16 b = 2;
     257           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2);
     258             :     }
     259             :     {
     260           1 :         sal_uInt16 b = 2;
     261           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2);
     262             :     }
     263             :     {
     264           1 :         sal_Int32 b = 2;
     265           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2);
     266             :     }
     267             :     {
     268           1 :         sal_uInt32 b = 2;
     269           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2);
     270             :     }
     271             :     {
     272           1 :         sal_Int64 b = 2;
     273           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2);
     274             :     }
     275             :     {
     276           1 :         sal_uInt64 b = 2;
     277           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2);
     278             :     }
     279             :     {
     280           1 :         float b = 2;
     281           1 :         CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2);
     282             :     }
     283             :     {
     284           1 :         double b = 2;
     285           1 :         CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2);
     286             :     }
     287             :     {
     288           1 :         sal_Unicode b = '2';
     289           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2');
     290             :     }
     291             :     {
     292           1 :         rtl::OUString b("2");
     293           1 :         CPPUNIT_ASSERT_MESSAGE( "rtl::OUString", !(a >>= b) && b == "2" );
     294             :     }
     295             :     {
     296           1 :         css::uno::Type b(getCppuType< rtl::OUString >());
     297           2 :         CPPUNIT_ASSERT_MESSAGE(
     298             :             "css::uno::Type",
     299           2 :             !(a >>= b) && b == getCppuType< rtl::OUString >());
     300             :     }
     301             :     {
     302           1 :         css::uno::Any b(rtl::OUString("2"));
     303           1 :         CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a);
     304             :     }
     305             :     {
     306           1 :         css::uno::Sequence< rtl::OUString > b(2);
     307           2 :         CPPUNIT_ASSERT_MESSAGE(
     308           2 :             "css::uno::Sequence<rtl::OUString>", !(a >>= b) && b.getLength() == 2);
     309             :     }
     310             :     {
     311           1 :         Enum1 b = Enum1_M2;
     312           1 :         CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2);
     313             :     }
     314             :     {
     315           1 :         Struct1 b(2);
     316           1 :         CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2);
     317             :     }
     318             :     {
     319             :         Exception1 b(
     320           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
     321           1 :         CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2);
     322             :     }
     323             :     {
     324           1 :         css::uno::Reference< Interface1 > i(new Impl1);
     325           2 :         css::uno::Reference< Interface1 > b(i);
     326           2 :         CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i);
     327           1 :     }
     328           1 : }
     329             : 
     330           1 : void Test::testBoolean() {
     331           1 :     css::uno::Any a(false);
     332           1 :     CPPUNIT_ASSERT(a.getValueType() == getCppuType< sal_Bool >());
     333             :     {
     334           1 :         bool b = true;
     335           1 :         CPPUNIT_ASSERT_MESSAGE("bool", (a >>= b) && !b);
     336             :     }
     337             :     {
     338           1 :         sal_Bool b = true;
     339           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Bool", (a >>= b) && !b);
     340             :     }
     341             :     {
     342           1 :         sal_Int8 b = 2;
     343           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2);
     344             :     }
     345             :     {
     346           1 :         sal_uInt8 b = 2;
     347             :         if (boost::is_same< sal_uInt8, sal_Bool >::value) {
     348           1 :             CPPUNIT_ASSERT_MESSAGE("@sal_uInt8", (a >>= b) && b == 0);
     349             :         } else {
     350             :             CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2);
     351             :         }
     352             :     }
     353             :     {
     354           1 :         sal_Int16 b = 2;
     355           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2);
     356             :     }
     357             :     {
     358           1 :         sal_uInt16 b = 2;
     359           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2);
     360             :     }
     361             :     {
     362           1 :         sal_Int32 b = 2;
     363           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2);
     364             :     }
     365             :     {
     366           1 :         sal_uInt32 b = 2;
     367           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2);
     368             :     }
     369             :     {
     370           1 :         sal_Int64 b = 2;
     371           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2);
     372             :     }
     373             :     {
     374           1 :         sal_uInt64 b = 2;
     375           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2);
     376             :     }
     377             :     {
     378           1 :         float b = 2;
     379           1 :         CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2);
     380             :     }
     381             :     {
     382           1 :         double b = 2;
     383           1 :         CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2);
     384             :     }
     385             :     {
     386           1 :         sal_Unicode b = '2';
     387           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2');
     388             :     }
     389             :     {
     390           1 :         rtl::OUString b("2");
     391           1 :         CPPUNIT_ASSERT_MESSAGE( "rtl::OUString", !(a >>= b) && b == "2" );
     392             :     }
     393             :     {
     394           1 :         css::uno::Type b(getCppuType< rtl::OUString >());
     395           2 :         CPPUNIT_ASSERT_MESSAGE(
     396             :             "css::uno::Type",
     397           2 :             !(a >>= b) && b == getCppuType< rtl::OUString >());
     398             :     }
     399             :     {
     400           1 :         css::uno::Any b(rtl::OUString("2"));
     401           1 :         CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a);
     402             :     }
     403             :     {
     404           1 :         css::uno::Sequence< rtl::OUString > b(2);
     405           2 :         CPPUNIT_ASSERT_MESSAGE(
     406             :             "css::uno::Sequence<rtl::OUString>",
     407           2 :             !(a >>= b) && b.getLength() == 2);
     408             :     }
     409             :     {
     410           1 :         Enum1 b = Enum1_M2;
     411           1 :         CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2);
     412             :     }
     413             :     {
     414           1 :         Struct1 b(2);
     415           1 :         CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2);
     416             :     }
     417             :     {
     418             :         Exception1 b(
     419           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
     420           1 :         CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2);
     421             :     }
     422             :     {
     423           1 :         css::uno::Reference< Interface1 > i(new Impl1);
     424           2 :         css::uno::Reference< Interface1 > b(i);
     425           2 :         CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i);
     426           1 :     }
     427           1 : }
     428             : 
     429           1 : void Test::testByte() {
     430           1 :     css::uno::Any a(static_cast< sal_Int8 >(1));
     431           1 :     CPPUNIT_ASSERT(a.getValueType() == getCppuType< sal_Int8 >());
     432             :     {
     433           1 :         bool b = true;
     434           1 :         CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b);
     435             :     }
     436             :     {
     437           1 :         sal_Bool b = true;
     438           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b);
     439             :     }
     440             :     {
     441           1 :         sal_Int8 b = 2;
     442           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int8", (a >>= b) && b == 1);
     443             :     }
     444             :     {
     445           1 :         sal_uInt8 b = 2;
     446           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2);
     447             :     }
     448             :     {
     449           1 :         sal_Int16 b = 2;
     450           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int16", (a >>= b) && b == 1);
     451             :     }
     452             :     {
     453           1 :         sal_uInt16 b = 2;
     454           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt16", (a >>= b) && b == 1);
     455             :     }
     456             :     {
     457           1 :         sal_Int32 b = 2;
     458           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int32", (a >>= b) && b == 1);
     459             :     }
     460             :     {
     461           1 :         sal_uInt32 b = 2;
     462           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt32", (a >>= b) && b == 1);
     463             :     }
     464             :     {
     465           1 :         sal_Int64 b = 2;
     466           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int64", (a >>= b) && b == 1);
     467             :     }
     468             :     {
     469           1 :         sal_uInt64 b = 2;
     470           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt64", (a >>= b) && b == 1);
     471             :     }
     472             :     {
     473           1 :         float b = 2;
     474           1 :         CPPUNIT_ASSERT_MESSAGE("float", (a >>= b) && b == 1);
     475             :     }
     476             :     {
     477           1 :         double b = 2;
     478           1 :         CPPUNIT_ASSERT_MESSAGE("double", (a >>= b) && b == 1);
     479             :     }
     480             :     {
     481           1 :         sal_Unicode b = '2';
     482             :         if (boost::is_same< sal_Unicode, sal_uInt16 >::value) {
     483           1 :             CPPUNIT_ASSERT_MESSAGE("@sal_Unicode", (a >>= b) && b == 1);
     484             :         } else {
     485             :             CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2');
     486             :         }
     487             :     }
     488             :     {
     489           1 :         rtl::OUString b("2");
     490           1 :         CPPUNIT_ASSERT_MESSAGE( "rtl::OUString", !(a >>= b) && b == "2" );
     491             :     }
     492             :     {
     493           1 :         css::uno::Type b(getCppuType< rtl::OUString >());
     494           2 :         CPPUNIT_ASSERT_MESSAGE(
     495             :             "css::uno::Type",
     496           2 :             !(a >>= b) && b == getCppuType< rtl::OUString >());
     497             :     }
     498             :     {
     499           1 :         css::uno::Any b(rtl::OUString("2"));
     500           1 :         CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a);
     501             :     }
     502             :     {
     503           1 :         css::uno::Sequence< rtl::OUString > b(2);
     504           2 :         CPPUNIT_ASSERT_MESSAGE(
     505             :             "css::uno::Sequence<rtl::OUString>",
     506           2 :             !(a >>= b) && b.getLength() == 2);
     507             :     }
     508             :     {
     509           1 :         Enum1 b = Enum1_M2;
     510           1 :         CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2);
     511             :     }
     512             :     {
     513           1 :         Struct1 b(2);
     514           1 :         CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2);
     515             :     }
     516             :     {
     517             :         Exception1 b(
     518           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
     519           1 :         CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2);
     520             :     }
     521             :     {
     522           1 :         css::uno::Reference< Interface1 > i(new Impl1);
     523           2 :         css::uno::Reference< Interface1 > b(i);
     524           2 :         CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i);
     525           1 :     }
     526           1 : }
     527             : 
     528           1 : void Test::testShort() {
     529           1 :     css::uno::Any a(static_cast< sal_Int16 >(1));
     530           1 :     CPPUNIT_ASSERT(a.getValueType() == getCppuType< sal_Int16 >());
     531             :     {
     532           1 :         bool b = true;
     533           1 :         CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b);
     534             :     }
     535             :     {
     536           1 :         sal_Bool b = true;
     537           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b);
     538             :     }
     539             :     {
     540           1 :         sal_Int8 b = 2;
     541           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2);
     542             :     }
     543             :     {
     544           1 :         sal_uInt8 b = 2;
     545           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2);
     546             :     }
     547             :     {
     548           1 :         sal_Int16 b = 2;
     549           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int16", (a >>= b) && b == 1);
     550             :     }
     551             :     {
     552           1 :         sal_uInt16 b = 2;
     553           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt16", (a >>= b) && b == 1);
     554             :     }
     555             :     {
     556           1 :         sal_Int32 b = 2;
     557           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int32", (a >>= b) && b == 1);
     558             :     }
     559             :     {
     560           1 :         sal_uInt32 b = 2;
     561           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt32", (a >>= b) && b == 1);
     562             :     }
     563             :     {
     564           1 :         sal_Int64 b = 2;
     565           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int64", (a >>= b) && b == 1);
     566             :     }
     567             :     {
     568           1 :         sal_uInt64 b = 2;
     569           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt64", (a >>= b) && b == 1);
     570             :     }
     571             :     {
     572           1 :         float b = 2;
     573           1 :         CPPUNIT_ASSERT_MESSAGE("float", (a >>= b) && b == 1);
     574             :     }
     575             :     {
     576           1 :         double b = 2;
     577           1 :         CPPUNIT_ASSERT_MESSAGE("double", (a >>= b) && b == 1);
     578             :     }
     579             :     {
     580           1 :         sal_Unicode b = '2';
     581             :         if (boost::is_same< sal_Unicode, sal_uInt16 >::value) {
     582           1 :             CPPUNIT_ASSERT_MESSAGE("@sal_Unicode", (a >>= b) && b == 1);
     583             :         } else {
     584             :             CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2');
     585             :         }
     586             :     }
     587             :     {
     588           1 :         rtl::OUString b("2");
     589           1 :         CPPUNIT_ASSERT_MESSAGE( "rtl::OUString", !(a >>= b) && b == "2" );
     590             :     }
     591             :     {
     592           1 :         css::uno::Type b(getCppuType< rtl::OUString >());
     593           2 :         CPPUNIT_ASSERT_MESSAGE(
     594             :             "css::uno::Type",
     595           2 :             !(a >>= b) && b == getCppuType< rtl::OUString >());
     596             :     }
     597             :     {
     598           1 :         css::uno::Any b(rtl::OUString("2"));
     599           1 :         CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a);
     600             :     }
     601             :     {
     602           1 :         css::uno::Sequence< rtl::OUString > b(2);
     603           2 :         CPPUNIT_ASSERT_MESSAGE(
     604             :             "css::uno::Sequence<rtl::OUString>",
     605           2 :             !(a >>= b) && b.getLength() == 2);
     606             :     }
     607             :     {
     608           1 :         Enum1 b = Enum1_M2;
     609           1 :         CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2);
     610             :     }
     611             :     {
     612           1 :         Struct1 b(2);
     613           1 :         CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2);
     614             :     }
     615             :     {
     616             :         Exception1 b(
     617           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
     618           1 :         CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2);
     619             :     }
     620             :     {
     621           1 :         css::uno::Reference< Interface1 > i(new Impl1);
     622           2 :         css::uno::Reference< Interface1 > b(i);
     623           2 :         CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i);
     624           1 :     }
     625           1 : }
     626             : 
     627           1 : void Test::testUnsignedShort() {
     628           1 :     sal_uInt16 n = 1;
     629           1 :     css::uno::Any a(&n, getCppuType(static_cast< sal_uInt16 const * >(0)));
     630           2 :     CPPUNIT_ASSERT(
     631           1 :         a.getValueType() == getCppuType(static_cast< sal_uInt16 const * >(0)));
     632             :     {
     633           1 :         bool b = true;
     634           1 :         CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b);
     635             :     }
     636             :     {
     637           1 :         sal_Bool b = true;
     638           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b);
     639             :     }
     640             :     {
     641           1 :         sal_Int8 b = 2;
     642           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2);
     643             :     }
     644             :     {
     645           1 :         sal_uInt8 b = 2;
     646           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2);
     647             :     }
     648             :     {
     649           1 :         sal_Int16 b = 2;
     650           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int16", (a >>= b) && b == 1);
     651             :     }
     652             :     {
     653           1 :         sal_uInt16 b = 2;
     654           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt16", (a >>= b) && b == 1);
     655             :     }
     656             :     {
     657           1 :         sal_Int32 b = 2;
     658           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int32", (a >>= b) && b == 1);
     659             :     }
     660             :     {
     661           1 :         sal_uInt32 b = 2;
     662           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt32", (a >>= b) && b == 1);
     663             :     }
     664             :     {
     665           1 :         sal_Int64 b = 2;
     666           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int64", (a >>= b) && b == 1);
     667             :     }
     668             :     {
     669           1 :         sal_uInt64 b = 2;
     670           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt64", (a >>= b) && b == 1);
     671             :     }
     672             :     {
     673           1 :         float b = 2;
     674           1 :         CPPUNIT_ASSERT_MESSAGE("float", (a >>= b) && b == 1);
     675             :     }
     676             :     {
     677           1 :         double b = 2;
     678           1 :         CPPUNIT_ASSERT_MESSAGE("double", (a >>= b) && b == 1);
     679             :     }
     680             :     {
     681           1 :         sal_Unicode b = '2';
     682             :         if (boost::is_same< sal_Unicode, sal_uInt16 >::value) {
     683           1 :             CPPUNIT_ASSERT_MESSAGE("@sal_Unicode", (a >>= b) && b == 1);
     684             :         } else {
     685             :             CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2');
     686             :         }
     687             :     }
     688             :     {
     689           1 :         rtl::OUString b("2");
     690           1 :         CPPUNIT_ASSERT_MESSAGE( "rtl::OUString", !(a >>= b) && b == "2" );
     691             :     }
     692             :     {
     693           1 :         css::uno::Type b(getCppuType< rtl::OUString >());
     694           2 :         CPPUNIT_ASSERT_MESSAGE(
     695             :             "css::uno::Type",
     696           2 :             !(a >>= b) && b == getCppuType< rtl::OUString >());
     697             :     }
     698             :     {
     699           1 :         css::uno::Any b(rtl::OUString("2"));
     700           1 :         CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a);
     701             :     }
     702             :     {
     703           1 :         css::uno::Sequence< rtl::OUString > b(2);
     704           2 :         CPPUNIT_ASSERT_MESSAGE(
     705             :             "css::uno::Sequence<rtl::OUString>",
     706           2 :             !(a >>= b) && b.getLength() == 2);
     707             :     }
     708             :     {
     709           1 :         Enum1 b = Enum1_M2;
     710           1 :         CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2);
     711             :     }
     712             :     {
     713           1 :         Struct1 b(2);
     714           1 :         CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2);
     715             :     }
     716             :     {
     717             :         Exception1 b(
     718           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
     719           1 :         CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2);
     720             :     }
     721             :     {
     722           1 :         css::uno::Reference< Interface1 > i(new Impl1);
     723           2 :         css::uno::Reference< Interface1 > b(i);
     724           2 :         CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i);
     725           1 :     }
     726           1 : }
     727             : 
     728           1 : void Test::testLong() {
     729           1 :     css::uno::Any a(static_cast< sal_Int32 >(1));
     730           1 :     CPPUNIT_ASSERT(a.getValueType() == getCppuType< sal_Int32 >());
     731             :     {
     732           1 :         bool b = true;
     733           1 :         CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b);
     734             :     }
     735             :     {
     736           1 :         sal_Bool b = true;
     737           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b);
     738             :     }
     739             :     {
     740           1 :         sal_Int8 b = 2;
     741           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2);
     742             :     }
     743             :     {
     744           1 :         sal_uInt8 b = 2;
     745           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2);
     746             :     }
     747             :     {
     748           1 :         sal_Int16 b = 2;
     749           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2);
     750             :     }
     751             :     {
     752           1 :         sal_uInt16 b = 2;
     753           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2);
     754             :     }
     755             :     {
     756           1 :         sal_Int32 b = 2;
     757           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int32", (a >>= b) && b == 1);
     758             :     }
     759             :     {
     760           1 :         sal_uInt32 b = 2;
     761           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt32", (a >>= b) && b == 1);
     762             :     }
     763             :     {
     764           1 :         sal_Int64 b = 2;
     765           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int64", (a >>= b) && b == 1);
     766             :     }
     767             :     {
     768           1 :         sal_uInt64 b = 2;
     769           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt64", (a >>= b) && b == 1);
     770             :     }
     771             :     {
     772           1 :         float b = 2;
     773           1 :         CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2);
     774             :     }
     775             :     {
     776           1 :         double b = 2;
     777           1 :         CPPUNIT_ASSERT_MESSAGE("double", (a >>= b) && b == 1);
     778             :     }
     779             :     {
     780           1 :         sal_Unicode b = '2';
     781           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2');
     782             :     }
     783             :     {
     784           1 :         rtl::OUString b("2");
     785           1 :         CPPUNIT_ASSERT_MESSAGE( "rtl::OUString", !(a >>= b) && b == "2" );
     786             :     }
     787             :     {
     788           1 :         css::uno::Type b(getCppuType< rtl::OUString >());
     789           2 :         CPPUNIT_ASSERT_MESSAGE(
     790             :             "css::uno::Type",
     791           2 :             !(a >>= b) && b == getCppuType< rtl::OUString >());
     792             :     }
     793             :     {
     794           1 :         css::uno::Any b(rtl::OUString("2"));
     795           1 :         CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a);
     796             :     }
     797             :     {
     798           1 :         css::uno::Sequence< rtl::OUString > b(2);
     799           2 :         CPPUNIT_ASSERT_MESSAGE(
     800             :             "css::uno::Sequence<rtl::OUString>",
     801           2 :             !(a >>= b) && b.getLength() == 2);
     802             :     }
     803             :     {
     804           1 :         Enum1 b = Enum1_M2;
     805           1 :         CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2);
     806             :     }
     807             :     {
     808           1 :         Struct1 b(2);
     809           1 :         CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2);
     810             :     }
     811             :     {
     812             :         Exception1 b(
     813           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
     814           1 :         CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2);
     815             :     }
     816             :     {
     817           1 :         css::uno::Reference< Interface1 > i(new Impl1);
     818           2 :         css::uno::Reference< Interface1 > b(i);
     819           2 :         CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i);
     820           1 :     }
     821           1 : }
     822             : 
     823           1 : void Test::testUnsignedLong() {
     824           1 :     css::uno::Any a(static_cast< sal_uInt32 >(1));
     825           1 :     CPPUNIT_ASSERT(a.getValueType() == getCppuType< sal_uInt32 >());
     826             :     {
     827           1 :         bool b = true;
     828           1 :         CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b);
     829             :     }
     830             :     {
     831           1 :         sal_Bool b = true;
     832           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b);
     833             :     }
     834             :     {
     835           1 :         sal_Int8 b = 2;
     836           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2);
     837             :     }
     838             :     {
     839           1 :         sal_uInt8 b = 2;
     840           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2);
     841             :     }
     842             :     {
     843           1 :         sal_Int16 b = 2;
     844           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2);
     845             :     }
     846             :     {
     847           1 :         sal_uInt16 b = 2;
     848           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2);
     849             :     }
     850             :     {
     851           1 :         sal_Int32 b = 2;
     852           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int32", (a >>= b) && b == 1);
     853             :     }
     854             :     {
     855           1 :         sal_uInt32 b = 2;
     856           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt32", (a >>= b) && b == 1);
     857             :     }
     858             :     {
     859           1 :         sal_Int64 b = 2;
     860           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int64", (a >>= b) && b == 1);
     861             :     }
     862             :     {
     863           1 :         sal_uInt64 b = 2;
     864           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt64", (a >>= b) && b == 1);
     865             :     }
     866             :     {
     867           1 :         float b = 2;
     868           1 :         CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2);
     869             :     }
     870             :     {
     871           1 :         double b = 2;
     872           1 :         CPPUNIT_ASSERT_MESSAGE("double", (a >>= b) && b == 1);
     873             :     }
     874             :     {
     875           1 :         sal_Unicode b = '2';
     876           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2');
     877             :     }
     878             :     {
     879           1 :         rtl::OUString b("2");
     880           1 :         CPPUNIT_ASSERT_MESSAGE( "rtl::OUString", !(a >>= b) && b == "2" );
     881             :     }
     882             :     {
     883           1 :         css::uno::Type b(getCppuType< rtl::OUString >());
     884           2 :         CPPUNIT_ASSERT_MESSAGE(
     885             :             "css::uno::Type",
     886           2 :             !(a >>= b) && b == getCppuType< rtl::OUString >());
     887             :     }
     888             :     {
     889           1 :         css::uno::Any b(rtl::OUString("2"));
     890           1 :         CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a);
     891             :     }
     892             :     {
     893           1 :         css::uno::Sequence< rtl::OUString > b(2);
     894           2 :         CPPUNIT_ASSERT_MESSAGE(
     895             :             "css::uno::Sequence<rtl::OUString>",
     896           2 :             !(a >>= b) && b.getLength() == 2);
     897             :     }
     898             :     {
     899           1 :         Enum1 b = Enum1_M2;
     900           1 :         CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2);
     901             :     }
     902             :     {
     903           1 :         Struct1 b(2);
     904           1 :         CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2);
     905             :     }
     906             :     {
     907             :         Exception1 b(
     908           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
     909           1 :         CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2);
     910             :     }
     911             :     {
     912           1 :         css::uno::Reference< Interface1 > i(new Impl1);
     913           2 :         css::uno::Reference< Interface1 > b(i);
     914           2 :         CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i);
     915           1 :     }
     916           1 : }
     917             : 
     918           1 : void Test::testHyper() {
     919           1 :     css::uno::Any a(static_cast< sal_Int64 >(1));
     920           1 :     CPPUNIT_ASSERT(a.getValueType() == getCppuType< sal_Int64 >());
     921             :     {
     922           1 :         bool b = true;
     923           1 :         CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b);
     924             :     }
     925             :     {
     926           1 :         sal_Bool b = true;
     927           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b);
     928             :     }
     929             :     {
     930           1 :         sal_Int8 b = 2;
     931           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2);
     932             :     }
     933             :     {
     934           1 :         sal_uInt8 b = 2;
     935           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2);
     936             :     }
     937             :     {
     938           1 :         sal_Int16 b = 2;
     939           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2);
     940             :     }
     941             :     {
     942           1 :         sal_uInt16 b = 2;
     943           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2);
     944             :     }
     945             :     {
     946           1 :         sal_Int32 b = 2;
     947           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2);
     948             :     }
     949             :     {
     950           1 :         sal_uInt32 b = 2;
     951           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2);
     952             :     }
     953             :     {
     954           1 :         sal_Int64 b = 2;
     955           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int64", (a >>= b) && b == 1);
     956             :     }
     957             :     {
     958           1 :         sal_uInt64 b = 2;
     959           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt64", (a >>= b) && b == 1);
     960             :     }
     961             :     {
     962           1 :         float b = 2;
     963           1 :         CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2);
     964             :     }
     965             :     {
     966           1 :         double b = 2;
     967           1 :         CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2);
     968             :     }
     969             :     {
     970           1 :         sal_Unicode b = '2';
     971           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2');
     972             :     }
     973             :     {
     974           1 :         rtl::OUString b("2");
     975           1 :         CPPUNIT_ASSERT_MESSAGE( "rtl::OUString", !(a >>= b) && b == "2" );
     976             :     }
     977             :     {
     978           1 :         css::uno::Type b(getCppuType< rtl::OUString >());
     979           2 :         CPPUNIT_ASSERT_MESSAGE(
     980             :             "css::uno::Type",
     981           2 :             !(a >>= b) && b == getCppuType< rtl::OUString >());
     982             :     }
     983             :     {
     984           1 :         css::uno::Any b(rtl::OUString("2"));
     985           1 :         CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a);
     986             :     }
     987             :     {
     988           1 :         css::uno::Sequence< rtl::OUString > b(2);
     989           2 :         CPPUNIT_ASSERT_MESSAGE(
     990             :             "css::uno::Sequence<rtl::OUString>",
     991           2 :             !(a >>= b) && b.getLength() == 2);
     992             :     }
     993             :     {
     994           1 :         Enum1 b = Enum1_M2;
     995           1 :         CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2);
     996             :     }
     997             :     {
     998           1 :         Struct1 b(2);
     999           1 :         CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2);
    1000             :     }
    1001             :     {
    1002             :         Exception1 b(
    1003           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
    1004           1 :         CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2);
    1005             :     }
    1006             :     {
    1007           1 :         css::uno::Reference< Interface1 > i(new Impl1);
    1008           2 :         css::uno::Reference< Interface1 > b(i);
    1009           2 :         CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i);
    1010           1 :     }
    1011           1 : }
    1012             : 
    1013           1 : void Test::testUnsignedHyper() {
    1014           1 :     css::uno::Any a(static_cast< sal_uInt64 >(1));
    1015           1 :     CPPUNIT_ASSERT(a.getValueType() == getCppuType< sal_uInt64 >());
    1016             :     {
    1017           1 :         bool b = true;
    1018           1 :         CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b);
    1019             :     }
    1020             :     {
    1021           1 :         sal_Bool b = true;
    1022           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b);
    1023             :     }
    1024             :     {
    1025           1 :         sal_Int8 b = 2;
    1026           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2);
    1027             :     }
    1028             :     {
    1029           1 :         sal_uInt8 b = 2;
    1030           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2);
    1031             :     }
    1032             :     {
    1033           1 :         sal_Int16 b = 2;
    1034           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2);
    1035             :     }
    1036             :     {
    1037           1 :         sal_uInt16 b = 2;
    1038           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2);
    1039             :     }
    1040             :     {
    1041           1 :         sal_Int32 b = 2;
    1042           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2);
    1043             :     }
    1044             :     {
    1045           1 :         sal_uInt32 b = 2;
    1046           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2);
    1047             :     }
    1048             :     {
    1049           1 :         sal_Int64 b = 2;
    1050           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int64", (a >>= b) && b == 1);
    1051             :     }
    1052             :     {
    1053           1 :         sal_uInt64 b = 2;
    1054           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt64", (a >>= b) && b == 1);
    1055             :     }
    1056             :     {
    1057           1 :         float b = 2;
    1058           1 :         CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2);
    1059             :     }
    1060             :     {
    1061           1 :         double b = 2;
    1062           1 :         CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2);
    1063             :     }
    1064             :     {
    1065           1 :         sal_Unicode b = '2';
    1066           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2');
    1067             :     }
    1068             :     {
    1069           1 :         rtl::OUString b("2");
    1070           1 :         CPPUNIT_ASSERT_MESSAGE( "rtl::OUString", !(a >>= b) && b == "2" );
    1071             :     }
    1072             :     {
    1073           1 :         css::uno::Type b(getCppuType< rtl::OUString >());
    1074           2 :         CPPUNIT_ASSERT_MESSAGE(
    1075             :             "css::uno::Type",
    1076           2 :             !(a >>= b) && b == getCppuType< rtl::OUString >());
    1077             :     }
    1078             :     {
    1079           1 :         css::uno::Any b(rtl::OUString("2"));
    1080           1 :         CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a);
    1081             :     }
    1082             :     {
    1083           1 :         css::uno::Sequence< rtl::OUString > b(2);
    1084           2 :         CPPUNIT_ASSERT_MESSAGE(
    1085             :             "css::uno::Sequence<rtl::OUString>",
    1086           2 :             !(a >>= b) && b.getLength() == 2);
    1087             :     }
    1088             :     {
    1089           1 :         Enum1 b = Enum1_M2;
    1090           1 :         CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2);
    1091             :     }
    1092             :     {
    1093           1 :         Struct1 b(2);
    1094           1 :         CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2);
    1095             :     }
    1096             :     {
    1097             :         Exception1 b(
    1098           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
    1099           1 :         CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2);
    1100             :     }
    1101             :     {
    1102           1 :         css::uno::Reference< Interface1 > i(new Impl1);
    1103           2 :         css::uno::Reference< Interface1 > b(i);
    1104           2 :         CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i);
    1105           1 :     }
    1106           1 : }
    1107             : 
    1108           1 : void Test::testFloat() {
    1109           1 :     css::uno::Any a(1.f);
    1110           1 :     CPPUNIT_ASSERT(a.getValueType() == getCppuType< float >());
    1111             :     {
    1112           1 :         bool b = true;
    1113           1 :         CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b);
    1114             :     }
    1115             :     {
    1116           1 :         sal_Bool b = true;
    1117           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b);
    1118             :     }
    1119             :     {
    1120           1 :         sal_Int8 b = 2;
    1121           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2);
    1122             :     }
    1123             :     {
    1124           1 :         sal_uInt8 b = 2;
    1125           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2);
    1126             :     }
    1127             :     {
    1128           1 :         sal_Int16 b = 2;
    1129           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2);
    1130             :     }
    1131             :     {
    1132           1 :         sal_uInt16 b = 2;
    1133           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2);
    1134             :     }
    1135             :     {
    1136           1 :         sal_Int32 b = 2;
    1137           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2);
    1138             :     }
    1139             :     {
    1140           1 :         sal_uInt32 b = 2;
    1141           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2);
    1142             :     }
    1143             :     {
    1144           1 :         sal_Int64 b = 2;
    1145           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2);
    1146             :     }
    1147             :     {
    1148           1 :         sal_uInt64 b = 2;
    1149           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2);
    1150             :     }
    1151             :     {
    1152           1 :         float b = 2;
    1153           1 :         CPPUNIT_ASSERT_MESSAGE("float", (a >>= b) && b == 1);
    1154             :     }
    1155             :     {
    1156           1 :         double b = 2;
    1157           1 :         CPPUNIT_ASSERT_MESSAGE("double", (a >>= b) && b == 1);
    1158             :     }
    1159             :     {
    1160           1 :         sal_Unicode b = '2';
    1161           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2');
    1162             :     }
    1163             :     {
    1164           1 :         rtl::OUString b("2");
    1165           1 :         CPPUNIT_ASSERT_MESSAGE( "rtl::OUString", !(a >>= b) && b == "2" );
    1166             :     }
    1167             :     {
    1168           1 :         css::uno::Type b(getCppuType< rtl::OUString >());
    1169           2 :         CPPUNIT_ASSERT_MESSAGE(
    1170             :             "css::uno::Type",
    1171           2 :             !(a >>= b) && b == getCppuType< rtl::OUString >());
    1172             :     }
    1173             :     {
    1174           1 :         css::uno::Any b(rtl::OUString("2"));
    1175           1 :         CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a);
    1176             :     }
    1177             :     {
    1178           1 :         css::uno::Sequence< rtl::OUString > b(2);
    1179           2 :         CPPUNIT_ASSERT_MESSAGE(
    1180             :             "css::uno::Sequence<rtl::OUString>",
    1181           2 :             !(a >>= b) && b.getLength() == 2);
    1182             :     }
    1183             :     {
    1184           1 :         Enum1 b = Enum1_M2;
    1185           1 :         CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2);
    1186             :     }
    1187             :     {
    1188           1 :         Struct1 b(2);
    1189           1 :         CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2);
    1190             :     }
    1191             :     {
    1192             :         Exception1 b(
    1193           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
    1194           1 :         CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2);
    1195             :     }
    1196             :     {
    1197           1 :         css::uno::Reference< Interface1 > i(new Impl1);
    1198           2 :         css::uno::Reference< Interface1 > b(i);
    1199           2 :         CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i);
    1200           1 :     }
    1201           1 : }
    1202             : 
    1203           1 : void Test::testDouble() {
    1204           1 :     css::uno::Any a(1.);
    1205           1 :     CPPUNIT_ASSERT(a.getValueType() == getCppuType< double >());
    1206             :     {
    1207           1 :         bool b = true;
    1208           1 :         CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b);
    1209             :     }
    1210             :     {
    1211           1 :         sal_Bool b = true;
    1212           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b);
    1213             :     }
    1214             :     {
    1215           1 :         sal_Int8 b = 2;
    1216           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2);
    1217             :     }
    1218             :     {
    1219           1 :         sal_uInt8 b = 2;
    1220           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2);
    1221             :     }
    1222             :     {
    1223           1 :         sal_Int16 b = 2;
    1224           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2);
    1225             :     }
    1226             :     {
    1227           1 :         sal_uInt16 b = 2;
    1228           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2);
    1229             :     }
    1230             :     {
    1231           1 :         sal_Int32 b = 2;
    1232           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2);
    1233             :     }
    1234             :     {
    1235           1 :         sal_uInt32 b = 2;
    1236           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2);
    1237             :     }
    1238             :     {
    1239           1 :         sal_Int64 b = 2;
    1240           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2);
    1241             :     }
    1242             :     {
    1243           1 :         sal_uInt64 b = 2;
    1244           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2);
    1245             :     }
    1246             :     {
    1247           1 :         float b = 2;
    1248           1 :         CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2);
    1249             :     }
    1250             :     {
    1251           1 :         double b = 2;
    1252           1 :         CPPUNIT_ASSERT_MESSAGE("double", (a >>= b) && b == 1);
    1253             :     }
    1254             :     {
    1255           1 :         sal_Unicode b = '2';
    1256           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2');
    1257             :     }
    1258             :     {
    1259           1 :         rtl::OUString b("2");
    1260           1 :         CPPUNIT_ASSERT_MESSAGE( "rtl::OUString", !(a >>= b) && b == "2" );
    1261             :     }
    1262             :     {
    1263           1 :         css::uno::Type b(getCppuType< rtl::OUString >());
    1264           2 :         CPPUNIT_ASSERT_MESSAGE(
    1265             :             "css::uno::Type",
    1266           2 :             !(a >>= b) && b == getCppuType< rtl::OUString >());
    1267             :     }
    1268             :     {
    1269           1 :         css::uno::Any b(rtl::OUString("2"));
    1270           1 :         CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a);
    1271             :     }
    1272             :     {
    1273           1 :         css::uno::Sequence< rtl::OUString > b(2);
    1274           2 :         CPPUNIT_ASSERT_MESSAGE(
    1275             :             "css::uno::Sequence<rtl::OUString>",
    1276           2 :             !(a >>= b) && b.getLength() == 2);
    1277             :     }
    1278             :     {
    1279           1 :         Enum1 b = Enum1_M2;
    1280           1 :         CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2);
    1281             :     }
    1282             :     {
    1283           1 :         Struct1 b(2);
    1284           1 :         CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2);
    1285             :     }
    1286             :     {
    1287             :         Exception1 b(
    1288           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
    1289           1 :         CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2);
    1290             :     }
    1291             :     {
    1292           1 :         css::uno::Reference< Interface1 > i(new Impl1);
    1293           2 :         css::uno::Reference< Interface1 > b(i);
    1294           2 :         CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i);
    1295           1 :     }
    1296           1 : }
    1297             : 
    1298           1 : void Test::testChar() {
    1299           1 :     sal_Unicode c = '1';
    1300           1 :     css::uno::Any a(&c, getCppuType< sal_Unicode >());
    1301           1 :     CPPUNIT_ASSERT(a.getValueType() == getCppuType< sal_Unicode >());
    1302             :     {
    1303           1 :         bool b = true;
    1304           1 :         CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b);
    1305             :     }
    1306             :     {
    1307           1 :         sal_Bool b = true;
    1308           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b);
    1309             :     }
    1310             :     {
    1311           1 :         sal_Int8 b = 2;
    1312           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2);
    1313             :     }
    1314             :     {
    1315           1 :         sal_uInt8 b = 2;
    1316           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2);
    1317             :     }
    1318             :     {
    1319           1 :         sal_Int16 b = 2;
    1320           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2);
    1321             :     }
    1322             :     {
    1323           1 :         sal_uInt16 b = 2;
    1324           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2);
    1325             :     }
    1326             :     {
    1327           1 :         sal_Int32 b = 2;
    1328           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2);
    1329             :     }
    1330             :     {
    1331           1 :         sal_uInt32 b = 2;
    1332           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2);
    1333             :     }
    1334             :     {
    1335           1 :         sal_Int64 b = 2;
    1336           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2);
    1337             :     }
    1338             :     {
    1339           1 :         sal_uInt64 b = 2;
    1340           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2);
    1341             :     }
    1342             :     {
    1343           1 :         float b = 2;
    1344           1 :         CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2);
    1345             :     }
    1346             :     {
    1347           1 :         double b = 2;
    1348           1 :         CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2);
    1349             :     }
    1350             :     {
    1351           1 :         sal_Unicode b = '2';
    1352             :         if (boost::is_same< sal_Unicode, sal_uInt16 >::value) {
    1353           1 :             CPPUNIT_ASSERT_MESSAGE("@sal_Unicode", !(a >>= b) && b == '2');
    1354             :         } else {
    1355             :             CPPUNIT_ASSERT_MESSAGE("sal_Unicode", (a >>= b) && b == '1');
    1356             :         }
    1357             :     }
    1358             :     {
    1359           1 :         rtl::OUString b("2");
    1360           1 :         CPPUNIT_ASSERT_MESSAGE( "rtl::OUString", !(a >>= b) && b == "2" );
    1361             :     }
    1362             :     {
    1363           1 :         css::uno::Type b(getCppuType< rtl::OUString >());
    1364           2 :         CPPUNIT_ASSERT_MESSAGE(
    1365             :             "css::uno::Type",
    1366           2 :             !(a >>= b) && b == getCppuType< rtl::OUString >());
    1367             :     }
    1368             :     {
    1369           1 :         css::uno::Any b(rtl::OUString("2"));
    1370           1 :         CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a);
    1371             :     }
    1372             :     {
    1373           1 :         css::uno::Sequence< rtl::OUString > b(2);
    1374           2 :         CPPUNIT_ASSERT_MESSAGE(
    1375             :             "css::uno::Sequence<rtl::OUString>",
    1376           2 :             !(a >>= b) && b.getLength() == 2);
    1377             :     }
    1378             :     {
    1379           1 :         Enum1 b = Enum1_M2;
    1380           1 :         CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2);
    1381             :     }
    1382             :     {
    1383           1 :         Struct1 b(2);
    1384           1 :         CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2);
    1385             :     }
    1386             :     {
    1387             :         Exception1 b(
    1388           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
    1389           1 :         CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2);
    1390             :     }
    1391             :     {
    1392           1 :         css::uno::Reference< Interface1 > i(new Impl1);
    1393           2 :         css::uno::Reference< Interface1 > b(i);
    1394           2 :         CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i);
    1395           1 :     }
    1396           1 : }
    1397             : 
    1398           1 : void Test::testString() {
    1399           1 :     css::uno::Any a(rtl::OUString("1"));
    1400           1 :     CPPUNIT_ASSERT(a.getValueType() == getCppuType< rtl::OUString >());
    1401             :     {
    1402           1 :         bool b = true;
    1403           1 :         CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b);
    1404             :     }
    1405             :     {
    1406           1 :         sal_Bool b = true;
    1407           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b);
    1408             :     }
    1409             :     {
    1410           1 :         sal_Int8 b = 2;
    1411           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2);
    1412             :     }
    1413             :     {
    1414           1 :         sal_uInt8 b = 2;
    1415           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2);
    1416             :     }
    1417             :     {
    1418           1 :         sal_Int16 b = 2;
    1419           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2);
    1420             :     }
    1421             :     {
    1422           1 :         sal_uInt16 b = 2;
    1423           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2);
    1424             :     }
    1425             :     {
    1426           1 :         sal_Int32 b = 2;
    1427           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2);
    1428             :     }
    1429             :     {
    1430           1 :         sal_uInt32 b = 2;
    1431           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2);
    1432             :     }
    1433             :     {
    1434           1 :         sal_Int64 b = 2;
    1435           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2);
    1436             :     }
    1437             :     {
    1438           1 :         sal_uInt64 b = 2;
    1439           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2);
    1440             :     }
    1441             :     {
    1442           1 :         float b = 2;
    1443           1 :         CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2);
    1444             :     }
    1445             :     {
    1446           1 :         double b = 2;
    1447           1 :         CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2);
    1448             :     }
    1449             :     {
    1450           1 :         sal_Unicode b = '2';
    1451           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2');
    1452             :     }
    1453             :     {
    1454           1 :         rtl::OUString b("2");
    1455           1 :         CPPUNIT_ASSERT_MESSAGE( "rtl::OUString", (a >>= b) && b == "1" );
    1456             :     }
    1457             :     {
    1458           1 :         css::uno::Type b(getCppuType< rtl::OUString >());
    1459           2 :         CPPUNIT_ASSERT_MESSAGE(
    1460             :             "css::uno::Type",
    1461           2 :             !(a >>= b) && b == getCppuType< rtl::OUString >());
    1462             :     }
    1463             :     {
    1464           1 :         css::uno::Any b(rtl::OUString("2"));
    1465           1 :         CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a);
    1466             :     }
    1467             :     {
    1468           1 :         css::uno::Sequence< rtl::OUString > b(2);
    1469           2 :         CPPUNIT_ASSERT_MESSAGE(
    1470             :             "css::uno::Sequence<rtl::OUString>",
    1471           2 :             !(a >>= b) && b.getLength() == 2);
    1472             :     }
    1473             :     {
    1474           1 :         Enum1 b = Enum1_M2;
    1475           1 :         CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2);
    1476             :     }
    1477             :     {
    1478           1 :         Struct1 b(2);
    1479           1 :         CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2);
    1480             :     }
    1481             :     {
    1482             :         Exception1 b(
    1483           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
    1484           1 :         CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2);
    1485             :     }
    1486             :     {
    1487           1 :         css::uno::Reference< Interface1 > i(new Impl1);
    1488           2 :         css::uno::Reference< Interface1 > b(i);
    1489           2 :         CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i);
    1490           1 :     }
    1491           1 : }
    1492             : 
    1493           1 : void Test::testType() {
    1494           1 :     css::uno::Any a(getCppuType< sal_Int32 >());
    1495           1 :     CPPUNIT_ASSERT(a.getValueType() == getCppuType< css::uno::Type >());
    1496             :     {
    1497           1 :         bool b = true;
    1498           1 :         CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b);
    1499             :     }
    1500             :     {
    1501           1 :         sal_Bool b = true;
    1502           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b);
    1503             :     }
    1504             :     {
    1505           1 :         sal_Int8 b = 2;
    1506           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2);
    1507             :     }
    1508             :     {
    1509           1 :         sal_uInt8 b = 2;
    1510           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2);
    1511             :     }
    1512             :     {
    1513           1 :         sal_Int16 b = 2;
    1514           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2);
    1515             :     }
    1516             :     {
    1517           1 :         sal_uInt16 b = 2;
    1518           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2);
    1519             :     }
    1520             :     {
    1521           1 :         sal_Int32 b = 2;
    1522           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2);
    1523             :     }
    1524             :     {
    1525           1 :         sal_uInt32 b = 2;
    1526           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2);
    1527             :     }
    1528             :     {
    1529           1 :         sal_Int64 b = 2;
    1530           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2);
    1531             :     }
    1532             :     {
    1533           1 :         sal_uInt64 b = 2;
    1534           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2);
    1535             :     }
    1536             :     {
    1537           1 :         float b = 2;
    1538           1 :         CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2);
    1539             :     }
    1540             :     {
    1541           1 :         double b = 2;
    1542           1 :         CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2);
    1543             :     }
    1544             :     {
    1545           1 :         sal_Unicode b = '2';
    1546           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2');
    1547             :     }
    1548             :     {
    1549           1 :         rtl::OUString b("2");
    1550           1 :         CPPUNIT_ASSERT_MESSAGE( "rtl::OUString", !(a >>= b) && b == "2" );
    1551             :     }
    1552             :     {
    1553           1 :         css::uno::Type b(getCppuType< rtl::OUString >());
    1554           2 :         CPPUNIT_ASSERT_MESSAGE(
    1555           2 :             "css::uno::Type", (a >>= b) && b == getCppuType< sal_Int32 >());
    1556             :     }
    1557             :     {
    1558           1 :         css::uno::Any b(rtl::OUString("2"));
    1559           1 :         CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a);
    1560             :     }
    1561             :     {
    1562           1 :         css::uno::Sequence< rtl::OUString > b(2);
    1563           2 :         CPPUNIT_ASSERT_MESSAGE(
    1564             :             "css::uno::Sequence<rtl::OUString>",
    1565           2 :             !(a >>= b) && b.getLength() == 2);
    1566             :     }
    1567             :     {
    1568           1 :         Enum1 b = Enum1_M2;
    1569           1 :         CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2);
    1570             :     }
    1571             :     {
    1572           1 :         Struct1 b(2);
    1573           1 :         CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2);
    1574             :     }
    1575             :     {
    1576             :         Exception1 b(
    1577           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
    1578           1 :         CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2);
    1579             :     }
    1580             :     {
    1581           1 :         css::uno::Reference< Interface1 > i(new Impl1);
    1582           2 :         css::uno::Reference< Interface1 > b(i);
    1583           2 :         CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i);
    1584           1 :     }
    1585           1 : }
    1586             : 
    1587           1 : void Test::testSequence() {
    1588           1 :     sal_Int32 n = 1;
    1589           1 :     css::uno::Any a(css::uno::Sequence< sal_Int32 >(&n, 1));
    1590           2 :     CPPUNIT_ASSERT(
    1591           1 :         a.getValueType() == getCppuType< css::uno::Sequence< sal_Int32 > >());
    1592             :     {
    1593           1 :         bool b = true;
    1594           1 :         CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b);
    1595             :     }
    1596             :     {
    1597           1 :         sal_Bool b = true;
    1598           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b);
    1599             :     }
    1600             :     {
    1601           1 :         sal_Int8 b = 2;
    1602           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2);
    1603             :     }
    1604             :     {
    1605           1 :         sal_uInt8 b = 2;
    1606           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2);
    1607             :     }
    1608             :     {
    1609           1 :         sal_Int16 b = 2;
    1610           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2);
    1611             :     }
    1612             :     {
    1613           1 :         sal_uInt16 b = 2;
    1614           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2);
    1615             :     }
    1616             :     {
    1617           1 :         sal_Int32 b = 2;
    1618           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2);
    1619             :     }
    1620             :     {
    1621           1 :         sal_uInt32 b = 2;
    1622           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2);
    1623             :     }
    1624             :     {
    1625           1 :         sal_Int64 b = 2;
    1626           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2);
    1627             :     }
    1628             :     {
    1629           1 :         sal_uInt64 b = 2;
    1630           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2);
    1631             :     }
    1632             :     {
    1633           1 :         float b = 2;
    1634           1 :         CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2);
    1635             :     }
    1636             :     {
    1637           1 :         double b = 2;
    1638           1 :         CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2);
    1639             :     }
    1640             :     {
    1641           1 :         sal_Unicode b = '2';
    1642           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2');
    1643             :     }
    1644             :     {
    1645           1 :         rtl::OUString b("2");
    1646           1 :         CPPUNIT_ASSERT_MESSAGE( "rtl::OUString", !(a >>= b) && b == "2" );
    1647             :     }
    1648             :     {
    1649           1 :         css::uno::Type b(getCppuType< rtl::OUString >());
    1650           2 :         CPPUNIT_ASSERT_MESSAGE(
    1651             :             "css::uno::Type",
    1652           2 :             !(a >>= b) && b == getCppuType< rtl::OUString >());
    1653             :     }
    1654             :     {
    1655           1 :         css::uno::Any b(rtl::OUString("2"));
    1656           1 :         CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a);
    1657             :     }
    1658             :     {
    1659           1 :         css::uno::Sequence< rtl::OUString > b(2);
    1660           2 :         CPPUNIT_ASSERT_MESSAGE(
    1661             :             "css::uno::Sequence<rtl::OUString>",
    1662           2 :             !(a >>= b) && b.getLength() == 2);
    1663             :     }
    1664             :     {
    1665           1 :         css::uno::Sequence< sal_Int32 > b(2);
    1666           2 :         CPPUNIT_ASSERT_MESSAGE(
    1667             :             "css::uno::Sequence<sal_Int32>",
    1668           2 :             (a >>= b) && b.getLength() == 1 && b[0] == 1);
    1669             :     }
    1670             :     {
    1671           1 :         Enum1 b = Enum1_M2;
    1672           1 :         CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2);
    1673             :     }
    1674             :     {
    1675           1 :         Struct1 b(2);
    1676           1 :         CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2);
    1677             :     }
    1678             :     {
    1679             :         Exception1 b(
    1680           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
    1681           1 :         CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2);
    1682             :     }
    1683             :     {
    1684           1 :         css::uno::Reference< Interface1 > i(new Impl1);
    1685           2 :         css::uno::Reference< Interface1 > b(i);
    1686           2 :         CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i);
    1687           1 :     }
    1688           1 : }
    1689             : 
    1690           1 : void Test::testEnum() {
    1691           1 :     css::uno::Any a(Enum2_M1);
    1692           1 :     CPPUNIT_ASSERT(a.getValueType() == getCppuType< Enum2 >());
    1693             :     {
    1694           1 :         bool b = true;
    1695           1 :         CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b);
    1696             :     }
    1697             :     {
    1698           1 :         sal_Bool b = true;
    1699           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b);
    1700             :     }
    1701             :     {
    1702           1 :         sal_Int8 b = 2;
    1703           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2);
    1704             :     }
    1705             :     {
    1706           1 :         sal_uInt8 b = 2;
    1707           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2);
    1708             :     }
    1709             :     {
    1710           1 :         sal_Int16 b = 2;
    1711           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2);
    1712             :     }
    1713             :     {
    1714           1 :         sal_uInt16 b = 2;
    1715           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2);
    1716             :     }
    1717             :     {
    1718           1 :         sal_Int32 b = 2;
    1719           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2);
    1720             :     }
    1721             :     {
    1722           1 :         sal_uInt32 b = 2;
    1723           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2);
    1724             :     }
    1725             :     {
    1726           1 :         sal_Int64 b = 2;
    1727           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2);
    1728             :     }
    1729             :     {
    1730           1 :         sal_uInt64 b = 2;
    1731           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2);
    1732             :     }
    1733             :     {
    1734           1 :         float b = 2;
    1735           1 :         CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2);
    1736             :     }
    1737             :     {
    1738           1 :         double b = 2;
    1739           1 :         CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2);
    1740             :     }
    1741             :     {
    1742           1 :         sal_Unicode b = '2';
    1743           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2');
    1744             :     }
    1745             :     {
    1746           1 :         rtl::OUString b("2");
    1747           1 :         CPPUNIT_ASSERT_MESSAGE( "rtl::OUString", !(a >>= b) && b == "2" );
    1748             :     }
    1749             :     {
    1750           1 :         css::uno::Type b(getCppuType< rtl::OUString >());
    1751           2 :         CPPUNIT_ASSERT_MESSAGE(
    1752             :             "css::uno::Type",
    1753           2 :             !(a >>= b) && b == getCppuType< rtl::OUString >());
    1754             :     }
    1755             :     {
    1756           1 :         css::uno::Any b(rtl::OUString("2"));
    1757           1 :         CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a);
    1758             :     }
    1759             :     {
    1760           1 :         css::uno::Sequence< rtl::OUString > b(2);
    1761           2 :         CPPUNIT_ASSERT_MESSAGE(
    1762             :             "css::uno::Sequence<rtl::OUString>",
    1763           2 :             !(a >>= b) && b.getLength() == 2);
    1764             :     }
    1765             :     {
    1766           1 :         Enum1 b = Enum1_M2;
    1767           1 :         CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2);
    1768             :     }
    1769             :     {
    1770           1 :         Enum2 b = Enum2_M2;
    1771           1 :         CPPUNIT_ASSERT_MESSAGE("Enum2", (a >>= b) && b == Enum2_M1);
    1772             :     }
    1773             :     {
    1774           1 :         Struct1 b(2);
    1775           1 :         CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2);
    1776             :     }
    1777             :     {
    1778             :         Exception1 b(
    1779           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
    1780           1 :         CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2);
    1781             :     }
    1782             :     {
    1783           1 :         css::uno::Reference< Interface1 > i(new Impl1);
    1784           2 :         css::uno::Reference< Interface1 > b(i);
    1785           2 :         CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i);
    1786           1 :     }
    1787           1 : }
    1788             : 
    1789           1 : void Test::testStruct() {
    1790           1 :     css::uno::Any a(Struct2a(1, 3));
    1791           1 :     CPPUNIT_ASSERT(a.getValueType() == getCppuType< Struct2a >());
    1792             :     {
    1793           1 :         bool b = true;
    1794           1 :         CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b);
    1795             :     }
    1796             :     {
    1797           1 :         sal_Bool b = true;
    1798           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b);
    1799             :     }
    1800             :     {
    1801           1 :         sal_Int8 b = 2;
    1802           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2);
    1803             :     }
    1804             :     {
    1805           1 :         sal_uInt8 b = 2;
    1806           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2);
    1807             :     }
    1808             :     {
    1809           1 :         sal_Int16 b = 2;
    1810           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2);
    1811             :     }
    1812             :     {
    1813           1 :         sal_uInt16 b = 2;
    1814           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2);
    1815             :     }
    1816             :     {
    1817           1 :         sal_Int32 b = 2;
    1818           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2);
    1819             :     }
    1820             :     {
    1821           1 :         sal_uInt32 b = 2;
    1822           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2);
    1823             :     }
    1824             :     {
    1825           1 :         sal_Int64 b = 2;
    1826           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2);
    1827             :     }
    1828             :     {
    1829           1 :         sal_uInt64 b = 2;
    1830           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2);
    1831             :     }
    1832             :     {
    1833           1 :         float b = 2;
    1834           1 :         CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2);
    1835             :     }
    1836             :     {
    1837           1 :         double b = 2;
    1838           1 :         CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2);
    1839             :     }
    1840             :     {
    1841           1 :         sal_Unicode b = '2';
    1842           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2');
    1843             :     }
    1844             :     {
    1845           1 :         rtl::OUString b("2");
    1846           1 :         CPPUNIT_ASSERT_MESSAGE( "rtl::OUString", !(a >>= b) && b == "2" );
    1847             :     }
    1848             :     {
    1849           1 :         css::uno::Type b(getCppuType< rtl::OUString >());
    1850           2 :         CPPUNIT_ASSERT_MESSAGE(
    1851             :             "css::uno::Type",
    1852           2 :             !(a >>= b) && b == getCppuType< rtl::OUString >());
    1853             :     }
    1854             :     {
    1855           1 :         css::uno::Any b(rtl::OUString("2"));
    1856           1 :         CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a);
    1857             :     }
    1858             :     {
    1859           1 :         css::uno::Sequence< rtl::OUString > b(2);
    1860           2 :         CPPUNIT_ASSERT_MESSAGE(
    1861             :             "css::uno::Sequence<rtl::OUString>",
    1862           2 :             !(a >>= b) && b.getLength() == 2);
    1863             :     }
    1864             :     {
    1865           1 :         Enum1 b = Enum1_M2;
    1866           1 :         CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2);
    1867             :     }
    1868             :     {
    1869           1 :         Struct1 b(2);
    1870           1 :         CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2);
    1871             :     }
    1872             :     {
    1873           1 :         Struct2 b(2);
    1874           1 :         CPPUNIT_ASSERT_MESSAGE("Struct2", (a >>= b) && b.member == 1);
    1875             :     }
    1876             :     {
    1877           1 :         Struct2a b(2, 2);
    1878           2 :         CPPUNIT_ASSERT_MESSAGE(
    1879           1 :             "Struct2a", (a >>= b) && b.member == 1 && b.member2 == 3);
    1880             :     }
    1881             :     {
    1882           1 :         Struct2b b(2, 2, 2);
    1883           1 :         CPPUNIT_ASSERT_MESSAGE("Struct2b", !(a >>= b) && b.member == 2);
    1884             :     }
    1885             :     {
    1886             :         Exception1 b(
    1887           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
    1888           1 :         CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2);
    1889             :     }
    1890             :     {
    1891           1 :         css::uno::Reference< Interface1 > i(new Impl1);
    1892           2 :         css::uno::Reference< Interface1 > b(i);
    1893           2 :         CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i);
    1894           1 :     }
    1895           1 : }
    1896             : 
    1897           1 : void Test::testPoly() {
    1898           1 :     css::uno::Any a;
    1899           1 :     a <<= Poly< css::uno::Sequence< ::sal_Unicode > >();
    1900           1 :     CPPUNIT_ASSERT_MESSAGE( "type name", a.getValueType().getTypeName() == "Poly<[]char>" );
    1901           2 :     CPPUNIT_ASSERT_MESSAGE(
    1902             :         "constructor",
    1903           2 :         a == css::uno::Any(Poly< css::uno::Sequence< ::sal_Unicode > >()));
    1904           1 : }
    1905             : 
    1906           1 : void Test::testException() {
    1907             :     css::uno::Any a(
    1908             :         Exception2a(
    1909             :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 1,
    1910           1 :             3));
    1911           1 :     CPPUNIT_ASSERT(a.getValueType() == getCppuType< Exception2a >());
    1912             :     {
    1913           1 :         bool b = true;
    1914           1 :         CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b);
    1915             :     }
    1916             :     {
    1917           1 :         sal_Bool b = true;
    1918           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b);
    1919             :     }
    1920             :     {
    1921           1 :         sal_Int8 b = 2;
    1922           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2);
    1923             :     }
    1924             :     {
    1925           1 :         sal_uInt8 b = 2;
    1926           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2);
    1927             :     }
    1928             :     {
    1929           1 :         sal_Int16 b = 2;
    1930           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2);
    1931             :     }
    1932             :     {
    1933           1 :         sal_uInt16 b = 2;
    1934           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2);
    1935             :     }
    1936             :     {
    1937           1 :         sal_Int32 b = 2;
    1938           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2);
    1939             :     }
    1940             :     {
    1941           1 :         sal_uInt32 b = 2;
    1942           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2);
    1943             :     }
    1944             :     {
    1945           1 :         sal_Int64 b = 2;
    1946           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2);
    1947             :     }
    1948             :     {
    1949           1 :         sal_uInt64 b = 2;
    1950           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2);
    1951             :     }
    1952             :     {
    1953           1 :         float b = 2;
    1954           1 :         CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2);
    1955             :     }
    1956             :     {
    1957           1 :         double b = 2;
    1958           1 :         CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2);
    1959             :     }
    1960             :     {
    1961           1 :         sal_Unicode b = '2';
    1962           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2');
    1963             :     }
    1964             :     {
    1965           1 :         rtl::OUString b("2");
    1966           1 :         CPPUNIT_ASSERT_MESSAGE( "rtl::OUString", !(a >>= b) && b == "2" );
    1967             :     }
    1968             :     {
    1969           1 :         css::uno::Type b(getCppuType< rtl::OUString >());
    1970           2 :         CPPUNIT_ASSERT_MESSAGE(
    1971             :             "css::uno::Type",
    1972           2 :             !(a >>= b) && b == getCppuType< rtl::OUString >());
    1973             :     }
    1974             :     {
    1975           1 :         css::uno::Any b(rtl::OUString("2"));
    1976           1 :         CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a);
    1977             :     }
    1978             :     {
    1979           1 :         css::uno::Sequence< rtl::OUString > b(2);
    1980           2 :         CPPUNIT_ASSERT_MESSAGE(
    1981             :             "css::uno::Sequence<rtl::OUString>",
    1982           2 :             !(a >>= b) && b.getLength() == 2);
    1983             :     }
    1984             :     {
    1985           1 :         Enum1 b = Enum1_M2;
    1986           1 :         CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2);
    1987             :     }
    1988             :     {
    1989           1 :         Struct1 b(2);
    1990           1 :         CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2);
    1991             :     }
    1992             :     {
    1993             :         Exception1 b(
    1994           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
    1995           1 :         CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2);
    1996             :     }
    1997             :     {
    1998             :         Exception2 b(
    1999           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
    2000           1 :         CPPUNIT_ASSERT_MESSAGE("Exception2", (a >>= b) && b.member == 1);
    2001             :     }
    2002             :     {
    2003             :         Exception2a b(
    2004             :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2,
    2005           1 :             2);
    2006           2 :         CPPUNIT_ASSERT_MESSAGE(
    2007           2 :             "Exception2a", (a >>= b) && b.member == 1 && b.member2 == 3);
    2008             :     }
    2009             :     {
    2010             :         Exception2b b(
    2011             :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2,
    2012           1 :             2);
    2013           1 :         CPPUNIT_ASSERT_MESSAGE("Exception2b", !(a >>= b) && b.member == 2);
    2014             :     }
    2015             :     {
    2016           1 :         css::uno::Reference< Interface1 > i(new Impl1);
    2017           2 :         css::uno::Reference< Interface1 > b(i);
    2018           2 :         CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i);
    2019           1 :     }
    2020           1 : }
    2021             : 
    2022           1 : void Test::testInterface() {
    2023           1 :     css::uno::Reference< Interface2a > i2(new Impl2);
    2024           2 :     css::uno::Any a(i2);
    2025           2 :     CPPUNIT_ASSERT(
    2026             :         a.getValueType()
    2027           1 :         == getCppuType< css::uno::Reference< Interface2a > >());
    2028             :     {
    2029           1 :         bool b = true;
    2030           1 :         CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b);
    2031             :     }
    2032             :     {
    2033           1 :         sal_Bool b = true;
    2034           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b);
    2035             :     }
    2036             :     {
    2037           1 :         sal_Int8 b = 2;
    2038           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2);
    2039             :     }
    2040             :     {
    2041           1 :         sal_uInt8 b = 2;
    2042           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2);
    2043             :     }
    2044             :     {
    2045           1 :         sal_Int16 b = 2;
    2046           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2);
    2047             :     }
    2048             :     {
    2049           1 :         sal_uInt16 b = 2;
    2050           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2);
    2051             :     }
    2052             :     {
    2053           1 :         sal_Int32 b = 2;
    2054           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2);
    2055             :     }
    2056             :     {
    2057           1 :         sal_uInt32 b = 2;
    2058           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2);
    2059             :     }
    2060             :     {
    2061           1 :         sal_Int64 b = 2;
    2062           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2);
    2063             :     }
    2064             :     {
    2065           1 :         sal_uInt64 b = 2;
    2066           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2);
    2067             :     }
    2068             :     {
    2069           1 :         float b = 2;
    2070           1 :         CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2);
    2071             :     }
    2072             :     {
    2073           1 :         double b = 2;
    2074           1 :         CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2);
    2075             :     }
    2076             :     {
    2077           1 :         sal_Unicode b = '2';
    2078           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2');
    2079             :     }
    2080             :     {
    2081           1 :         rtl::OUString b("2");
    2082           1 :         CPPUNIT_ASSERT_MESSAGE( "rtl::OUString", !(a >>= b) && b == "2" );
    2083             :     }
    2084             :     {
    2085           1 :         css::uno::Type b(getCppuType< rtl::OUString >());
    2086           2 :         CPPUNIT_ASSERT_MESSAGE(
    2087             :             "css::uno::Type",
    2088           2 :             !(a >>= b) && b == getCppuType< rtl::OUString >());
    2089             :     }
    2090             :     {
    2091           1 :         css::uno::Any b(rtl::OUString("2"));
    2092           1 :         CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a);
    2093             :     }
    2094             :     {
    2095           1 :         css::uno::Sequence< rtl::OUString > b(2);
    2096           2 :         CPPUNIT_ASSERT_MESSAGE(
    2097             :             "css::uno::Sequence<rtl::OUString>",
    2098           2 :             !(a >>= b) && b.getLength() == 2);
    2099             :     }
    2100             :     {
    2101           1 :         Enum1 b = Enum1_M2;
    2102           1 :         CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2);
    2103             :     }
    2104             :     {
    2105           1 :         Struct1 b(2);
    2106           1 :         CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2);
    2107             :     }
    2108             :     {
    2109             :         Exception1 b(
    2110           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
    2111           1 :         CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2);
    2112             :     }
    2113             :     {
    2114           1 :         css::uno::Reference< Interface1 > i(new Impl1);
    2115           2 :         css::uno::Reference< Interface1 > b(i);
    2116           2 :         CPPUNIT_ASSERT_MESSAGE("Interface1", !(a >>= b) && b == i);
    2117             :     }
    2118             :     {
    2119           1 :         css::uno::Reference< Interface2 > b(new Impl2);
    2120           1 :         CPPUNIT_ASSERT_MESSAGE("Interface2", (a >>= b) && b == i2);
    2121             :     }
    2122             :     {
    2123           1 :         css::uno::Reference< Interface2a > b(new Impl2);
    2124           1 :         CPPUNIT_ASSERT_MESSAGE("Interface2a", (a >>= b) && b == i2);
    2125             :     }
    2126             :     {
    2127           1 :         css::uno::Reference< Interface2b > i(new Impl2b);
    2128           2 :         css::uno::Reference< Interface2b > b(i);
    2129           2 :         CPPUNIT_ASSERT_MESSAGE("Interface2b", !(a >>= b) && b == i);
    2130             :     }
    2131             :     {
    2132           1 :         css::uno::Reference< Interface3 > b(new Impl2);
    2133           1 :         CPPUNIT_ASSERT_MESSAGE("Interface3", (a >>= b) && b == i2);
    2134           1 :     }
    2135           1 : }
    2136             : 
    2137           1 : void Test::testNull() {
    2138           1 :     css::uno::Any a = css::uno::Any(css::uno::Reference< Interface2a >());
    2139           2 :     CPPUNIT_ASSERT(
    2140             :         a.getValueType()
    2141           1 :         == getCppuType< css::uno::Reference< Interface2a > >());
    2142             :     {
    2143           1 :         bool b = true;
    2144           1 :         CPPUNIT_ASSERT_MESSAGE("bool", !(a >>= b) && b);
    2145             :     }
    2146             :     {
    2147           1 :         sal_Bool b = true;
    2148           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Bool", !(a >>= b) && b);
    2149             :     }
    2150             :     {
    2151           1 :         sal_Int8 b = 2;
    2152           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int8", !(a >>= b) && b == 2);
    2153             :     }
    2154             :     {
    2155           1 :         sal_uInt8 b = 2;
    2156           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt8", !(a >>= b) && b == 2);
    2157             :     }
    2158             :     {
    2159           1 :         sal_Int16 b = 2;
    2160           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int16", !(a >>= b) && b == 2);
    2161             :     }
    2162             :     {
    2163           1 :         sal_uInt16 b = 2;
    2164           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt16", !(a >>= b) && b == 2);
    2165             :     }
    2166             :     {
    2167           1 :         sal_Int32 b = 2;
    2168           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int32", !(a >>= b) && b == 2);
    2169             :     }
    2170             :     {
    2171           1 :         sal_uInt32 b = 2;
    2172           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt32", !(a >>= b) && b == 2);
    2173             :     }
    2174             :     {
    2175           1 :         sal_Int64 b = 2;
    2176           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Int64", !(a >>= b) && b == 2);
    2177             :     }
    2178             :     {
    2179           1 :         sal_uInt64 b = 2;
    2180           1 :         CPPUNIT_ASSERT_MESSAGE("sal_uInt64", !(a >>= b) && b == 2);
    2181             :     }
    2182             :     {
    2183           1 :         float b = 2;
    2184           1 :         CPPUNIT_ASSERT_MESSAGE("float", !(a >>= b) && b == 2);
    2185             :     }
    2186             :     {
    2187           1 :         double b = 2;
    2188           1 :         CPPUNIT_ASSERT_MESSAGE("double", !(a >>= b) && b == 2);
    2189             :     }
    2190             :     {
    2191           1 :         sal_Unicode b = '2';
    2192           1 :         CPPUNIT_ASSERT_MESSAGE("sal_Unicode", !(a >>= b) && b == '2');
    2193             :     }
    2194             :     {
    2195           1 :         rtl::OUString b("2");
    2196           1 :         CPPUNIT_ASSERT_MESSAGE( "rtl::OUString", !(a >>= b) && b == "2" );
    2197             :     }
    2198             :     {
    2199           1 :         css::uno::Type b(getCppuType< rtl::OUString >());
    2200           2 :         CPPUNIT_ASSERT_MESSAGE(
    2201             :             "css::uno::Type",
    2202           2 :             !(a >>= b) && b == getCppuType< rtl::OUString >());
    2203             :     }
    2204             :     {
    2205           1 :         css::uno::Any b(rtl::OUString("2"));
    2206           1 :         CPPUNIT_ASSERT_MESSAGE("css::uno::Any", (a >>= b) && b == a);
    2207             :     }
    2208             :     {
    2209           1 :         css::uno::Sequence< rtl::OUString > b(2);
    2210           2 :         CPPUNIT_ASSERT_MESSAGE(
    2211             :             "css::uno::Sequence<rtl::OUString>",
    2212           2 :             !(a >>= b) && b.getLength() == 2);
    2213             :     }
    2214             :     {
    2215           1 :         Enum1 b = Enum1_M2;
    2216           1 :         CPPUNIT_ASSERT_MESSAGE("Enum1", !(a >>= b) && b == Enum1_M2);
    2217             :     }
    2218             :     {
    2219           1 :         Struct1 b(2);
    2220           1 :         CPPUNIT_ASSERT_MESSAGE("Struct1", !(a >>= b) && b.member == 2);
    2221             :     }
    2222             :     {
    2223             :         Exception1 b(
    2224           1 :             rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2);
    2225           1 :         CPPUNIT_ASSERT_MESSAGE("Exception1", !(a >>= b) && b.member == 2);
    2226             :     }
    2227             :     {
    2228           1 :         css::uno::Reference< Interface1 > b(new Impl1);
    2229           2 :         CPPUNIT_ASSERT_MESSAGE(
    2230           2 :             "Interface1", (a >>= b) && !b.is());
    2231             :     }
    2232             :     {
    2233           1 :         css::uno::Reference< Interface2 > b(new Impl2);
    2234           2 :         CPPUNIT_ASSERT_MESSAGE(
    2235           2 :             "Interface2", (a >>= b) && !b.is());
    2236             :     }
    2237             :     {
    2238           1 :         css::uno::Reference< Interface2a > b(new Impl2);
    2239           1 :         CPPUNIT_ASSERT_MESSAGE("Interface2a", (a >>= b) && !b.is());
    2240             :     }
    2241             :     {
    2242           1 :         css::uno::Reference< Interface2b > b(new Impl2b);
    2243           2 :         CPPUNIT_ASSERT_MESSAGE(
    2244           2 :             "Interface2b", (a >>= b) && !b.is());
    2245             :     }
    2246             :     {
    2247           1 :         css::uno::Reference< Interface3 > b(new Impl2);
    2248           2 :         CPPUNIT_ASSERT_MESSAGE(
    2249           2 :             "Interface3", (a >>= b) && !b.is());
    2250           1 :     }
    2251           1 : }
    2252             : 
    2253           1 : CPPUNIT_TEST_SUITE_REGISTRATION(Test);
    2254             : 
    2255             : }
    2256             : 
    2257           4 : CPPUNIT_PLUGIN_IMPLEMENT();
    2258             : 
    2259             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10