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

Generated by: LCOV version 1.11