/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_cppu.hxx" #include "sal/config.h" #include // wntmsci10 does not like #include "Enum1.hpp" #include "Enum2.hpp" #include "Exception1.hpp" #include "Exception2.hpp" #include "Exception2a.hpp" #include "Exception2b.hpp" #include "Interface1.hpp" #include "Interface2.hpp" #include "Interface2a.hpp" #include "Interface2b.hpp" #include "Interface3.hpp" #include "Poly.hpp" #include "Struct1.hpp" #include "Struct2.hpp" #include "Struct2a.hpp" #include "Struct2b.hpp" #include "boost/type_traits/is_same.hpp" #include "com/sun/star/uno/Any.hxx" #include "com/sun/star/uno/Reference.hxx" #include "com/sun/star/uno/RuntimeException.hpp" #include "com/sun/star/uno/Sequence.hxx" #include "com/sun/star/uno/Type.hxx" #include "com/sun/star/uno/XInterface.hpp" #include "osl/diagnose.h" #include "osl/interlck.h" #include "rtl/string.h" #include "rtl/ustring.h" #include "rtl/ustring.hxx" #include "sal/types.h" #include "gtest/gtest.h" namespace { namespace css = com::sun::star; class Base { public: Base(): m_count(0) {} void acquire() { if (osl_incrementInterlockedCount(&m_count) == SAL_MAX_INT32) { abort(); } } void release() { if (osl_decrementInterlockedCount(&m_count) == 0) { delete this; } } protected: virtual ~Base() {} private: Base(Base &); // not declared void operator =(Base &); // not declared oslInterlockedCount m_count; }; class Impl1: public Interface1, private Base { public: virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const & type) throw (css::uno::RuntimeException) { if (type == getCppuType< css::uno::Reference< css::uno::XInterface > >()) { css::uno::Reference< css::uno::XInterface > ref( static_cast< css::uno::XInterface * >(this)); return css::uno::Any(&ref, type); } else if (type == getCppuType< css::uno::Reference< Interface1 > >()) { css::uno::Reference< Interface1 > ref(this); return css::uno::Any(&ref, type); } else { return css::uno::Any(); } } virtual void SAL_CALL acquire() throw () { Base::acquire(); } virtual void SAL_CALL release() throw () { Base::release(); } }; class Impl2: public Interface2a, public Interface3, private Base { public: virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const & type) throw (css::uno::RuntimeException) { if (type == getCppuType< css::uno::Reference< css::uno::XInterface > >()) { css::uno::Reference< css::uno::XInterface > ref( static_cast< css::uno::XInterface * >( static_cast< Interface2a * >(this))); return css::uno::Any(&ref, type); } else if (type == getCppuType< css::uno::Reference< Interface2 > >()) { css::uno::Reference< Interface2 > ref(this); return css::uno::Any(&ref, type); } else if (type == getCppuType< css::uno::Reference< Interface2a > >()) { css::uno::Reference< Interface2a > ref(this); return css::uno::Any(&ref, type); } else if (type == getCppuType< css::uno::Reference< Interface3 > >()) { css::uno::Reference< Interface3 > ref(this); return css::uno::Any(&ref, type); } else { return css::uno::Any(); } } virtual void SAL_CALL acquire() throw () { Base::acquire(); } virtual void SAL_CALL release() throw () { Base::release(); } }; class Impl2b: public Interface2b, private Base { public: virtual css::uno::Any SAL_CALL queryInterface(css::uno::Type const & type) throw (css::uno::RuntimeException) { if (type == getCppuType< css::uno::Reference< css::uno::XInterface > >()) { css::uno::Reference< css::uno::XInterface > ref( static_cast< css::uno::XInterface * >( static_cast< Interface2a * >(this))); return css::uno::Any(&ref, type); } else if (type == getCppuType< css::uno::Reference< Interface2 > >()) { css::uno::Reference< Interface2 > ref(this); return css::uno::Any(&ref, type); } else if (type == getCppuType< css::uno::Reference< Interface2a > >()) { css::uno::Reference< Interface2a > ref(this); return css::uno::Any(&ref, type); } else if (type == getCppuType< css::uno::Reference< Interface2b > >()) { css::uno::Reference< Interface2b > ref(this); return css::uno::Any(&ref, type); } else { return css::uno::Any(); } } virtual void SAL_CALL acquire() throw () { Base::acquire(); } virtual void SAL_CALL release() throw () { Base::release(); } }; class Test: public ::testing::Test { public: }; TEST_F(Test, testVoid) { css::uno::Any a; ASSERT_TRUE(a.getValueType() == getVoidCppuType()); { bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "bool"; } { sal_Bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "sal_Bool"; } { sal_Int8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int8"; } { sal_uInt8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt8"; } { sal_Int16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int16"; } { sal_uInt16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt16"; } { sal_Int32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int32"; } { sal_uInt32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt32"; } { sal_Int64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int64"; } { sal_uInt64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt64"; } { float b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "float"; } { double b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "double"; } { sal_Unicode b = '2'; ASSERT_TRUE(!(a >>= b) && b == '2') << "sal_Unicode"; } { rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); ASSERT_TRUE( !(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))) << "rtl::OUString"; } { css::uno::Type b(getCppuType< rtl::OUString >()); ASSERT_TRUE( !(a >>= b) && b == getCppuType< rtl::OUString >()) << "css::uno::Type"; } { css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); ASSERT_TRUE((a >>= b) && b == a) << "css::uno::Any"; } { css::uno::Sequence< rtl::OUString > b(2); ASSERT_TRUE(!(a >>= b) && b.getLength() == 2) << "css::uno::Sequence"; } { Enum1 b = Enum1_M2; ASSERT_TRUE(!(a >>= b) && b == Enum1_M2) << "Enum1"; } { Struct1 b(2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct1"; } { Exception1 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception1"; } { css::uno::Reference< Interface1 > i(new Impl1); css::uno::Reference< Interface1 > b(i); ASSERT_TRUE(!(a >>= b) && b == i) << "Interface1"; } } TEST_F(Test, testBoolean) { css::uno::Any a(false); ASSERT_TRUE(a.getValueType() == getCppuType< sal_Bool >()); { bool b = true; ASSERT_TRUE((a >>= b) && !b) << "bool"; } { sal_Bool b = true; ASSERT_TRUE((a >>= b) && !b) << "sal_Bool"; } { sal_Int8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int8"; } { sal_uInt8 b = 2; if (boost::is_same< sal_uInt8, sal_Bool >::value) { ASSERT_TRUE((a >>= b) && b == 0) << "@sal_uInt8"; } else { ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt8"; } } { sal_Int16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int16"; } { sal_uInt16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt16"; } { sal_Int32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int32"; } { sal_uInt32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt32"; } { sal_Int64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int64"; } { sal_uInt64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt64"; } { float b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "float"; } { double b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "double"; } { sal_Unicode b = '2'; ASSERT_TRUE(!(a >>= b) && b == '2') << "sal_Unicode"; } { rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); ASSERT_TRUE(!(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))) << "rtl::OUString"; } { css::uno::Type b(getCppuType< rtl::OUString >()); ASSERT_TRUE(!(a >>= b) && b == getCppuType< rtl::OUString >()) << "css::uno::Type"; } { css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); ASSERT_TRUE((a >>= b) && b == a) << "css::uno::Any"; } { css::uno::Sequence< rtl::OUString > b(2); ASSERT_TRUE(!(a >>= b) && b.getLength() == 2) << "css::uno::Sequence"; } { Enum1 b = Enum1_M2; ASSERT_TRUE(!(a >>= b) && b == Enum1_M2) << "Enum1"; } { Struct1 b(2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct1"; } { Exception1 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception1"; } { css::uno::Reference< Interface1 > i(new Impl1); css::uno::Reference< Interface1 > b(i); ASSERT_TRUE(!(a >>= b) && b == i) << "Interface1"; } } TEST_F(Test, testByte) { css::uno::Any a(static_cast< sal_Int8 >(1)); ASSERT_TRUE(a.getValueType() == getCppuType< sal_Int8 >()); { bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "bool"; } { sal_Bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "sal_Bool"; } { sal_Int8 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_Int8"; } { sal_uInt8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt8"; } { sal_Int16 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_Int16"; } { sal_uInt16 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_uInt16"; } { sal_Int32 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_Int32"; } { sal_uInt32 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_uInt32"; } { sal_Int64 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_Int64"; } { sal_uInt64 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_uInt64"; } { float b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "float"; } { double b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "double"; } { sal_Unicode b = '2'; if (boost::is_same< sal_Unicode, sal_uInt16 >::value) { ASSERT_TRUE((a >>= b) && b == 1) << "@sal_Unicode"; } else { ASSERT_TRUE(!(a >>= b) && b == '2') << "sal_Unicode"; } } { rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); ASSERT_TRUE(!(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))) << "rtl::OUString"; } { css::uno::Type b(getCppuType< rtl::OUString >()); ASSERT_TRUE(!(a >>= b) && b == getCppuType< rtl::OUString >()) << "css::uno::Type"; } { css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); ASSERT_TRUE((a >>= b) && b == a) << "css::uno::Any"; } { css::uno::Sequence< rtl::OUString > b(2); ASSERT_TRUE(!(a >>= b) && b.getLength() == 2) << "css::uno::Sequence"; } { Enum1 b = Enum1_M2; ASSERT_TRUE(!(a >>= b) && b == Enum1_M2) << "Enum1"; } { Struct1 b(2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct1"; } { Exception1 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception1"; } { css::uno::Reference< Interface1 > i(new Impl1); css::uno::Reference< Interface1 > b(i); ASSERT_TRUE(!(a >>= b) && b == i) << "Interface1"; } } TEST_F(Test, testShort) { css::uno::Any a(static_cast< sal_Int16 >(1)); ASSERT_TRUE(a.getValueType() == getCppuType< sal_Int16 >()); { bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "bool"; } { sal_Bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "sal_Bool"; } { sal_Int8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int8"; } { sal_uInt8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt8"; } { sal_Int16 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_Int16"; } { sal_uInt16 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_uInt16"; } { sal_Int32 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_Int32"; } { sal_uInt32 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_uInt32"; } { sal_Int64 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_Int64"; } { sal_uInt64 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_uInt64"; } { float b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "float"; } { double b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "double"; } { sal_Unicode b = '2'; if (boost::is_same< sal_Unicode, sal_uInt16 >::value) { ASSERT_TRUE((a >>= b) && b == 1) << "@sal_Unicode"; } else { ASSERT_TRUE(!(a >>= b) && b == '2') << "sal_Unicode"; } } { rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); ASSERT_TRUE(!(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))) << "rtl::OUString"; } { css::uno::Type b(getCppuType< rtl::OUString >()); ASSERT_TRUE(!(a >>= b) && b == getCppuType< rtl::OUString >()) << "css::uno::Type"; } { css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); ASSERT_TRUE((a >>= b) && b == a) << "css::uno::Any"; } { css::uno::Sequence< rtl::OUString > b(2); ASSERT_TRUE(!(a >>= b) && b.getLength() == 2) << "css::uno::Sequence"; } { Enum1 b = Enum1_M2; ASSERT_TRUE(!(a >>= b) && b == Enum1_M2) << "Enum1"; } { Struct1 b(2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct1"; } { Exception1 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception1"; } { css::uno::Reference< Interface1 > i(new Impl1); css::uno::Reference< Interface1 > b(i); ASSERT_TRUE(!(a >>= b) && b == i) << "Interface1"; } } TEST_F(Test, testUnsignedShort) { sal_uInt16 n = 1; css::uno::Any a(&n, getCppuType(static_cast< sal_uInt16 const * >(0))); ASSERT_TRUE( a.getValueType() == getCppuType(static_cast< sal_uInt16 const * >(0))); { bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "bool"; } { sal_Bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "sal_Bool"; } { sal_Int8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int8"; } { sal_uInt8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt8"; } { sal_Int16 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_Int16"; } { sal_uInt16 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_uInt16"; } { sal_Int32 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_Int32"; } { sal_uInt32 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_uInt32"; } { sal_Int64 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_Int64"; } { sal_uInt64 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_uInt64"; } { float b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "float"; } { double b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "double"; } { sal_Unicode b = '2'; if (boost::is_same< sal_Unicode, sal_uInt16 >::value) { ASSERT_TRUE((a >>= b) && b == 1) << "@sal_Unicode"; } else { ASSERT_TRUE(!(a >>= b) && b == '2') << "sal_Unicode"; } } { rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); ASSERT_TRUE(!(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))) << "rtl::OUString"; } { css::uno::Type b(getCppuType< rtl::OUString >()); ASSERT_TRUE(!(a >>= b) && b == getCppuType< rtl::OUString >()) << "css::uno::Type"; } { css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); ASSERT_TRUE((a >>= b) && b == a) << "css::uno::Any"; } { css::uno::Sequence< rtl::OUString > b(2); ASSERT_TRUE(!(a >>= b) && b.getLength() == 2) << "css::uno::Sequence"; } { Enum1 b = Enum1_M2; ASSERT_TRUE(!(a >>= b) && b == Enum1_M2) << "Enum1"; } { Struct1 b(2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct1"; } { Exception1 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception1"; } { css::uno::Reference< Interface1 > i(new Impl1); css::uno::Reference< Interface1 > b(i); ASSERT_TRUE(!(a >>= b) && b == i) << "Interface1"; } } TEST_F(Test, testLong) { css::uno::Any a(static_cast< sal_Int32 >(1)); ASSERT_TRUE(a.getValueType() == getCppuType< sal_Int32 >()); { bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "bool"; } { sal_Bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "sal_Bool"; } { sal_Int8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int8"; } { sal_uInt8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt8"; } { sal_Int16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int16"; } { sal_uInt16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt16"; } { sal_Int32 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_Int32"; } { sal_uInt32 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_uInt32"; } { sal_Int64 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_Int64"; } { sal_uInt64 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_uInt64"; } { float b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "float"; } { double b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "double"; } { sal_Unicode b = '2'; ASSERT_TRUE(!(a >>= b) && b == '2') << "sal_Unicode"; } { rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); ASSERT_TRUE(!(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))) << "rtl::OUString"; } { css::uno::Type b(getCppuType< rtl::OUString >()); ASSERT_TRUE(!(a >>= b) && b == getCppuType< rtl::OUString >()) << "css::uno::Type"; } { css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); ASSERT_TRUE((a >>= b) && b == a) << "css::uno::Any"; } { css::uno::Sequence< rtl::OUString > b(2); ASSERT_TRUE(!(a >>= b) && b.getLength() == 2) << "css::uno::Sequence"; } { Enum1 b = Enum1_M2; ASSERT_TRUE(!(a >>= b) && b == Enum1_M2) << "Enum1"; } { Struct1 b(2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct1"; } { Exception1 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception1"; } { css::uno::Reference< Interface1 > i(new Impl1); css::uno::Reference< Interface1 > b(i); ASSERT_TRUE(!(a >>= b) && b == i) << "Interface1"; } } TEST_F(Test, testUnsignedLong) { css::uno::Any a(static_cast< sal_uInt32 >(1)); ASSERT_TRUE(a.getValueType() == getCppuType< sal_uInt32 >()); { bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "bool"; } { sal_Bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "sal_Bool"; } { sal_Int8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int8"; } { sal_uInt8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt8"; } { sal_Int16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int16"; } { sal_uInt16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt16"; } { sal_Int32 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_Int32"; } { sal_uInt32 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_uInt32"; } { sal_Int64 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_Int64"; } { sal_uInt64 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_uInt64"; } { float b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "float"; } { double b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "double"; } { sal_Unicode b = '2'; ASSERT_TRUE(!(a >>= b) && b == '2') << "sal_Unicode"; } { rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); ASSERT_TRUE(!(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))) << "rtl::OUString"; } { css::uno::Type b(getCppuType< rtl::OUString >()); ASSERT_TRUE(!(a >>= b) && b == getCppuType< rtl::OUString >()) << "css::uno::Type"; } { css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); ASSERT_TRUE((a >>= b) && b == a) << "css::uno::Any"; } { css::uno::Sequence< rtl::OUString > b(2); ASSERT_TRUE(!(a >>= b) && b.getLength() == 2) << "css::uno::Sequence"; } { Enum1 b = Enum1_M2; ASSERT_TRUE(!(a >>= b) && b == Enum1_M2) << "Enum1"; } { Struct1 b(2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct1"; } { Exception1 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception1"; } { css::uno::Reference< Interface1 > i(new Impl1); css::uno::Reference< Interface1 > b(i); ASSERT_TRUE(!(a >>= b) && b == i) << "Interface1"; } } TEST_F(Test, testHyper) { css::uno::Any a(static_cast< sal_Int64 >(1)); ASSERT_TRUE(a.getValueType() == getCppuType< sal_Int64 >()); { bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "bool"; } { sal_Bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "sal_Bool"; } { sal_Int8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int8"; } { sal_uInt8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt8"; } { sal_Int16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int16"; } { sal_uInt16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt16"; } { sal_Int32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int32"; } { sal_uInt32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt32"; } { sal_Int64 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_Int64"; } { sal_uInt64 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_uInt64"; } { float b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "float"; } { double b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "double"; } { sal_Unicode b = '2'; ASSERT_TRUE(!(a >>= b) && b == '2') << "sal_Unicode"; } { rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); ASSERT_TRUE(!(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))) << "rtl::OUString"; } { css::uno::Type b(getCppuType< rtl::OUString >()); ASSERT_TRUE(!(a >>= b) && b == getCppuType< rtl::OUString >()) << "css::uno::Type"; } { css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); ASSERT_TRUE((a >>= b) && b == a) << "css::uno::Any"; } { css::uno::Sequence< rtl::OUString > b(2); ASSERT_TRUE(!(a >>= b) && b.getLength() == 2) << "css::uno::Sequence"; } { Enum1 b = Enum1_M2; ASSERT_TRUE(!(a >>= b) && b == Enum1_M2) << "Enum1"; } { Struct1 b(2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct1"; } { Exception1 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception1"; } { css::uno::Reference< Interface1 > i(new Impl1); css::uno::Reference< Interface1 > b(i); ASSERT_TRUE(!(a >>= b) && b == i) << "Interface1"; } } TEST_F(Test, testUnsignedHyper) { css::uno::Any a(static_cast< sal_uInt64 >(1)); ASSERT_TRUE(a.getValueType() == getCppuType< sal_uInt64 >()); { bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "bool"; } { sal_Bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "sal_Bool"; } { sal_Int8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int8"; } { sal_uInt8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt8"; } { sal_Int16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int16"; } { sal_uInt16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt16"; } { sal_Int32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int32"; } { sal_uInt32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt32"; } { sal_Int64 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_Int64"; } { sal_uInt64 b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "sal_uInt64"; } { float b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "float"; } { double b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "double"; } { sal_Unicode b = '2'; ASSERT_TRUE(!(a >>= b) && b == '2') << "sal_Unicode"; } { rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); ASSERT_TRUE(!(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))) << "rtl::OUString"; } { css::uno::Type b(getCppuType< rtl::OUString >()); ASSERT_TRUE(!(a >>= b) && b == getCppuType< rtl::OUString >()) << "css::uno::Type"; } { css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); ASSERT_TRUE((a >>= b) && b == a) << "css::uno::Any"; } { css::uno::Sequence< rtl::OUString > b(2); ASSERT_TRUE(!(a >>= b) && b.getLength() == 2) << "css::uno::Sequence"; } { Enum1 b = Enum1_M2; ASSERT_TRUE(!(a >>= b) && b == Enum1_M2) << "Enum1"; } { Struct1 b(2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct1"; } { Exception1 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception1"; } { css::uno::Reference< Interface1 > i(new Impl1); css::uno::Reference< Interface1 > b(i); ASSERT_TRUE(!(a >>= b) && b == i) << "Interface1"; } } TEST_F(Test, testFloat) { css::uno::Any a(1.f); ASSERT_TRUE(a.getValueType() == getCppuType< float >()); { bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "bool"; } { sal_Bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "sal_Bool"; } { sal_Int8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int8"; } { sal_uInt8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt8"; } { sal_Int16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int16"; } { sal_uInt16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt16"; } { sal_Int32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int32"; } { sal_uInt32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt32"; } { sal_Int64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int64"; } { sal_uInt64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt64"; } { float b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "float"; } { double b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "double"; } { sal_Unicode b = '2'; ASSERT_TRUE(!(a >>= b) && b == '2') << "sal_Unicode"; } { rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); ASSERT_TRUE(!(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))) << "rtl::OUString"; } { css::uno::Type b(getCppuType< rtl::OUString >()); ASSERT_TRUE(!(a >>= b) && b == getCppuType< rtl::OUString >()) << "css::uno::Type"; } { css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); ASSERT_TRUE((a >>= b) && b == a) << "css::uno::Any"; } { css::uno::Sequence< rtl::OUString > b(2); ASSERT_TRUE(!(a >>= b) && b.getLength() == 2) << "css::uno::Sequence"; } { Enum1 b = Enum1_M2; ASSERT_TRUE(!(a >>= b) && b == Enum1_M2) << "Enum1"; } { Struct1 b(2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct1"; } { Exception1 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception1"; } { css::uno::Reference< Interface1 > i(new Impl1); css::uno::Reference< Interface1 > b(i); ASSERT_TRUE(!(a >>= b) && b == i) << "Interface1"; } } TEST_F(Test, testDouble) { css::uno::Any a(1.); ASSERT_TRUE(a.getValueType() == getCppuType< double >()); { bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "bool"; } { sal_Bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "sal_Bool"; } { sal_Int8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int8"; } { sal_uInt8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt8"; } { sal_Int16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int16"; } { sal_uInt16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt16"; } { sal_Int32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int32"; } { sal_uInt32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt32"; } { sal_Int64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int64"; } { sal_uInt64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt64"; } { float b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "float"; } { double b = 2; ASSERT_TRUE((a >>= b) && b == 1) << "double"; } { sal_Unicode b = '2'; ASSERT_TRUE(!(a >>= b) && b == '2') << "sal_Unicode"; } { rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); ASSERT_TRUE(!(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))) << "rtl::OUString"; } { css::uno::Type b(getCppuType< rtl::OUString >()); ASSERT_TRUE(!(a >>= b) && b == getCppuType< rtl::OUString >()) << "css::uno::Type"; } { css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); ASSERT_TRUE((a >>= b) && b == a) << "css::uno::Any"; } { css::uno::Sequence< rtl::OUString > b(2); ASSERT_TRUE(!(a >>= b) && b.getLength() == 2) << "css::uno::Sequence"; } { Enum1 b = Enum1_M2; ASSERT_TRUE(!(a >>= b) && b == Enum1_M2) << "Enum1"; } { Struct1 b(2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct1"; } { Exception1 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception1"; } { css::uno::Reference< Interface1 > i(new Impl1); css::uno::Reference< Interface1 > b(i); ASSERT_TRUE(!(a >>= b) && b == i) << "Interface1"; } } TEST_F(Test, testChar) { sal_Unicode c = '1'; css::uno::Any a(&c, getCppuType< sal_Unicode >()); ASSERT_TRUE(a.getValueType() == getCppuType< sal_Unicode >()); { bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "bool"; } { sal_Bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "sal_Bool"; } { sal_Int8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int8"; } { sal_uInt8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt8"; } { sal_Int16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int16"; } { sal_uInt16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt16"; } { sal_Int32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int32"; } { sal_uInt32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt32"; } { sal_Int64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int64"; } { sal_uInt64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt64"; } { float b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "float"; } { double b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "double"; } { sal_Unicode b = '2'; if (boost::is_same< sal_Unicode, sal_uInt16 >::value) { ASSERT_TRUE(!(a >>= b) && b == '2') << "@sal_Unicode"; } else { ASSERT_TRUE((a >>= b) && b == '1') << "sal_Unicode"; } } { rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); ASSERT_TRUE(!(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))) << "rtl::OUString"; } { css::uno::Type b(getCppuType< rtl::OUString >()); ASSERT_TRUE(!(a >>= b) && b == getCppuType< rtl::OUString >()) << "css::uno::Type"; } { css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); ASSERT_TRUE((a >>= b) && b == a) << "css::uno::Any"; } { css::uno::Sequence< rtl::OUString > b(2); ASSERT_TRUE(!(a >>= b) && b.getLength() == 2) << "css::uno::Sequence"; } { Enum1 b = Enum1_M2; ASSERT_TRUE(!(a >>= b) && b == Enum1_M2) << "Enum1"; } { Struct1 b(2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct1"; } { Exception1 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception1"; } { css::uno::Reference< Interface1 > i(new Impl1); css::uno::Reference< Interface1 > b(i); ASSERT_TRUE(!(a >>= b) && b == i) << "Interface1"; } } TEST_F(Test, testString) { css::uno::Any a(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("1"))); ASSERT_TRUE(a.getValueType() == getCppuType< rtl::OUString >()); { bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "bool"; } { sal_Bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "sal_Bool"; } { sal_Int8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int8"; } { sal_uInt8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt8"; } { sal_Int16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int16"; } { sal_uInt16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt16"; } { sal_Int32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int32"; } { sal_uInt32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt32"; } { sal_Int64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int64"; } { sal_uInt64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt64"; } { float b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "float"; } { double b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "double"; } { sal_Unicode b = '2'; ASSERT_TRUE(!(a >>= b) && b == '2') << "sal_Unicode"; } { rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); ASSERT_TRUE((a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("1"))) << "rtl::OUString"; } { css::uno::Type b(getCppuType< rtl::OUString >()); ASSERT_TRUE(!(a >>= b) && b == getCppuType< rtl::OUString >()) << "css::uno::Type"; } { css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); ASSERT_TRUE((a >>= b) && b == a) << "css::uno::Any"; } { css::uno::Sequence< rtl::OUString > b(2); ASSERT_TRUE(!(a >>= b) && b.getLength() == 2) << "css::uno::Sequence"; } { Enum1 b = Enum1_M2; ASSERT_TRUE(!(a >>= b) && b == Enum1_M2) << "Enum1"; } { Struct1 b(2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct1"; } { Exception1 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception1"; } { css::uno::Reference< Interface1 > i(new Impl1); css::uno::Reference< Interface1 > b(i); ASSERT_TRUE(!(a >>= b) && b == i) << "Interface1"; } } TEST_F(Test, testType) { css::uno::Any a(getCppuType< sal_Int32 >()); ASSERT_TRUE(a.getValueType() == getCppuType< css::uno::Type >()); { bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "bool"; } { sal_Bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "sal_Bool"; } { sal_Int8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int8"; } { sal_uInt8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt8"; } { sal_Int16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int16"; } { sal_uInt16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt16"; } { sal_Int32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int32"; } { sal_uInt32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt32"; } { sal_Int64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int64"; } { sal_uInt64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt64"; } { float b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "float"; } { double b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "double"; } { sal_Unicode b = '2'; ASSERT_TRUE(!(a >>= b) && b == '2') << "sal_Unicode"; } { rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); ASSERT_TRUE(!(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))) << "rtl::OUString"; } { css::uno::Type b(getCppuType< rtl::OUString >()); ASSERT_TRUE((a >>= b) && b == getCppuType< sal_Int32 >()) << "css::uno::Type"; } { css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); ASSERT_TRUE((a >>= b) && b == a) << "css::uno::Any"; } { css::uno::Sequence< rtl::OUString > b(2); ASSERT_TRUE(!(a >>= b) && b.getLength() == 2) << "css::uno::Sequence"; } { Enum1 b = Enum1_M2; ASSERT_TRUE(!(a >>= b) && b == Enum1_M2) << "Enum1"; } { Struct1 b(2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct1"; } { Exception1 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception1"; } { css::uno::Reference< Interface1 > i(new Impl1); css::uno::Reference< Interface1 > b(i); ASSERT_TRUE(!(a >>= b) && b == i) << "Interface1"; } } TEST_F(Test, testSequence) { sal_Int32 n = 1; css::uno::Any a(css::uno::Sequence< sal_Int32 >(&n, 1)); ASSERT_TRUE( a.getValueType() == getCppuType< css::uno::Sequence< sal_Int32 > >()); { bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "bool"; } { sal_Bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "sal_Bool"; } { sal_Int8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int8"; } { sal_uInt8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt8"; } { sal_Int16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int16"; } { sal_uInt16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt16"; } { sal_Int32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int32"; } { sal_uInt32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt32"; } { sal_Int64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int64"; } { sal_uInt64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt64"; } { float b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "float"; } { double b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "double"; } { sal_Unicode b = '2'; ASSERT_TRUE(!(a >>= b) && b == '2') << "sal_Unicode"; } { rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); ASSERT_TRUE(!(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))) << "rtl::OUString"; } { css::uno::Type b(getCppuType< rtl::OUString >()); ASSERT_TRUE(!(a >>= b) && b == getCppuType< rtl::OUString >()) << "css::uno::Type"; } { css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); ASSERT_TRUE((a >>= b) && b == a) << "css::uno::Any"; } { css::uno::Sequence< rtl::OUString > b(2); ASSERT_TRUE(!(a >>= b) && b.getLength() == 2) << "css::uno::Sequence"; } { css::uno::Sequence< sal_Int32 > b(2); ASSERT_TRUE((a >>= b) && b.getLength() == 1 && b[0] == 1) << "css::uno::Sequence"; } { Enum1 b = Enum1_M2; ASSERT_TRUE(!(a >>= b) && b == Enum1_M2) << "Enum1"; } { Struct1 b(2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct1"; } { Exception1 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception1"; } { css::uno::Reference< Interface1 > i(new Impl1); css::uno::Reference< Interface1 > b(i); ASSERT_TRUE(!(a >>= b) && b == i) << "Interface1"; } } TEST_F(Test, testEnum) { css::uno::Any a(Enum2_M1); ASSERT_TRUE(a.getValueType() == getCppuType< Enum2 >()); { bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "bool"; } { sal_Bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "sal_Bool"; } { sal_Int8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int8"; } { sal_uInt8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt8"; } { sal_Int16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int16"; } { sal_uInt16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt16"; } { sal_Int32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int32"; } { sal_uInt32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt32"; } { sal_Int64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int64"; } { sal_uInt64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt64"; } { float b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "float"; } { double b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "double"; } { sal_Unicode b = '2'; ASSERT_TRUE(!(a >>= b) && b == '2') << "sal_Unicode"; } { rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); ASSERT_TRUE(!(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))) << "rtl::OUString"; } { css::uno::Type b(getCppuType< rtl::OUString >()); ASSERT_TRUE(!(a >>= b) && b == getCppuType< rtl::OUString >()) << "css::uno::Type"; } { css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); ASSERT_TRUE((a >>= b) && b == a) << "css::uno::Any"; } { css::uno::Sequence< rtl::OUString > b(2); ASSERT_TRUE(!(a >>= b) && b.getLength() == 2) << "css::uno::Sequence"; } { Enum1 b = Enum1_M2; ASSERT_TRUE(!(a >>= b) && b == Enum1_M2) << "Enum1"; } { Enum2 b = Enum2_M2; ASSERT_TRUE((a >>= b) && b == Enum2_M1) << "Enum2"; } { Struct1 b(2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct1"; } { Exception1 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception1"; } { css::uno::Reference< Interface1 > i(new Impl1); css::uno::Reference< Interface1 > b(i); ASSERT_TRUE(!(a >>= b) && b == i) << "Interface1"; } } TEST_F(Test, testStruct) { css::uno::Any a(Struct2a(1, 3)); ASSERT_TRUE(a.getValueType() == getCppuType< Struct2a >()); { bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "bool"; } { sal_Bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "sal_Bool"; } { sal_Int8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int8"; } { sal_uInt8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt8"; } { sal_Int16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int16"; } { sal_uInt16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt16"; } { sal_Int32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int32"; } { sal_uInt32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt32"; } { sal_Int64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int64"; } { sal_uInt64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt64"; } { float b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "float"; } { double b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "double"; } { sal_Unicode b = '2'; ASSERT_TRUE(!(a >>= b) && b == '2') << "sal_Unicode"; } { rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); ASSERT_TRUE(!(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))) << "rtl::OUString"; } { css::uno::Type b(getCppuType< rtl::OUString >()); ASSERT_TRUE(!(a >>= b) && b == getCppuType< rtl::OUString >()) << "css::uno::Type"; } { css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); ASSERT_TRUE((a >>= b) && b == a) << "css::uno::Any"; } { css::uno::Sequence< rtl::OUString > b(2); ASSERT_TRUE(!(a >>= b) && b.getLength() == 2) << "css::uno::Sequence"; } { Enum1 b = Enum1_M2; ASSERT_TRUE(!(a >>= b) && b == Enum1_M2) << "Enum1"; } { Struct1 b(2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct1"; } { Struct2 b(2); ASSERT_TRUE((a >>= b) && b.member == 1) << "Struct2"; } { Struct2a b(2, 2); ASSERT_TRUE((a >>= b) && b.member == 1 && b.member2 == 3) << "Struct2a"; } { Struct2b b(2, 2, 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct2b"; } { Exception1 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception1"; } { css::uno::Reference< Interface1 > i(new Impl1); css::uno::Reference< Interface1 > b(i); ASSERT_TRUE(!(a >>= b) && b == i) << "Interface1"; } } TEST_F(Test, testPoly) { css::uno::Any a; a <<= Poly< css::uno::Sequence< ::sal_Unicode > >(); ASSERT_TRUE(a.getValueType().getTypeName().equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("Poly<[]char>"))) << "type name"; ASSERT_TRUE(a == css::uno::Any(Poly< css::uno::Sequence< ::sal_Unicode > >())) << "constructor"; } TEST_F(Test, testException) { css::uno::Any a( Exception2a( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 1, 3)); ASSERT_TRUE(a.getValueType() == getCppuType< Exception2a >()); { bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "bool"; } { sal_Bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "sal_Bool"; } { sal_Int8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int8"; } { sal_uInt8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt8"; } { sal_Int16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int16"; } { sal_uInt16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt16"; } { sal_Int32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int32"; } { sal_uInt32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt32"; } { sal_Int64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int64"; } { sal_uInt64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt64"; } { float b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "float"; } { double b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "double"; } { sal_Unicode b = '2'; ASSERT_TRUE(!(a >>= b) && b == '2') << "sal_Unicode"; } { rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); ASSERT_TRUE(!(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))) << "rtl::OUString"; } { css::uno::Type b(getCppuType< rtl::OUString >()); ASSERT_TRUE(!(a >>= b) && b == getCppuType< rtl::OUString >()) << "css::uno::Type"; } { css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); ASSERT_TRUE((a >>= b) && b == a) << "css::uno::Any"; } { css::uno::Sequence< rtl::OUString > b(2); ASSERT_TRUE(!(a >>= b) && b.getLength() == 2) << "css::uno::Sequence"; } { Enum1 b = Enum1_M2; ASSERT_TRUE(!(a >>= b) && b == Enum1_M2) << "Enum1"; } { Struct1 b(2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct1"; } { Exception1 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception1"; } { Exception2 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE((a >>= b) && b.member == 1) << "Exception2"; } { Exception2a b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2, 2); ASSERT_TRUE((a >>= b) && b.member == 1 && b.member2 == 3) << "Exception2a"; } { Exception2b b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2, 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception2b"; } { css::uno::Reference< Interface1 > i(new Impl1); css::uno::Reference< Interface1 > b(i); ASSERT_TRUE(!(a >>= b) && b == i) << "Interface1"; } } TEST_F(Test, testInterface) { css::uno::Reference< Interface2a > i2(new Impl2); css::uno::Any a(i2); ASSERT_TRUE( a.getValueType() == getCppuType< css::uno::Reference< Interface2a > >()); { bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "bool"; } { sal_Bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "sal_Bool"; } { sal_Int8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int8"; } { sal_uInt8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt8"; } { sal_Int16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int16"; } { sal_uInt16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt16"; } { sal_Int32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int32"; } { sal_uInt32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt32"; } { sal_Int64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int64"; } { sal_uInt64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt64"; } { float b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "float"; } { double b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "double"; } { sal_Unicode b = '2'; ASSERT_TRUE(!(a >>= b) && b == '2') << "sal_Unicode"; } { rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); ASSERT_TRUE(!(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))) << "rtl::OUString"; } { css::uno::Type b(getCppuType< rtl::OUString >()); ASSERT_TRUE(!(a >>= b) && b == getCppuType< rtl::OUString >()) << "css::uno::Type"; } { css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); ASSERT_TRUE((a >>= b) && b == a) << "css::uno::Any"; } { css::uno::Sequence< rtl::OUString > b(2); ASSERT_TRUE(!(a >>= b) && b.getLength() == 2) << "css::uno::Sequence"; } { Enum1 b = Enum1_M2; ASSERT_TRUE(!(a >>= b) && b == Enum1_M2) << "Enum1"; } { Struct1 b(2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct1"; } { Exception1 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception1"; } { css::uno::Reference< Interface1 > i(new Impl1); css::uno::Reference< Interface1 > b(i); ASSERT_TRUE(!(a >>= b) && b == i) << "Interface1"; } { css::uno::Reference< Interface2 > b(new Impl2); ASSERT_TRUE((a >>= b) && b == i2) << "Interface2"; } { css::uno::Reference< Interface2a > b(new Impl2); ASSERT_TRUE((a >>= b) && b == i2) << "Interface2a"; } { css::uno::Reference< Interface2b > i(new Impl2b); css::uno::Reference< Interface2b > b(i); ASSERT_TRUE(!(a >>= b) && b == i) << "Interface2b"; } { css::uno::Reference< Interface3 > b(new Impl2); ASSERT_TRUE((a >>= b) && b == i2) << "Interface3"; } } TEST_F(Test, testNull) { css::uno::Any a = css::uno::Any(css::uno::Reference< Interface2a >()); ASSERT_TRUE( a.getValueType() == getCppuType< css::uno::Reference< Interface2a > >()); { bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "bool"; } { sal_Bool b = true; ASSERT_TRUE(!(a >>= b) && b) << "sal_Bool"; } { sal_Int8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int8"; } { sal_uInt8 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt8"; } { sal_Int16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int16"; } { sal_uInt16 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt16"; } { sal_Int32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int32"; } { sal_uInt32 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt32"; } { sal_Int64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_Int64"; } { sal_uInt64 b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "sal_uInt64"; } { float b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "float"; } { double b = 2; ASSERT_TRUE(!(a >>= b) && b == 2) << "double"; } { sal_Unicode b = '2'; ASSERT_TRUE(!(a >>= b) && b == '2') << "sal_Unicode"; } { rtl::OUString b(RTL_CONSTASCII_USTRINGPARAM("2")); ASSERT_TRUE(!(a >>= b) && b.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("2"))) << "rtl::OUString"; } { css::uno::Type b(getCppuType< rtl::OUString >()); ASSERT_TRUE(!(a >>= b) && b == getCppuType< rtl::OUString >()) << "css::uno::Type"; } { css::uno::Any b(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("2"))); ASSERT_TRUE((a >>= b) && b == a) << "css::uno::Any"; } { css::uno::Sequence< rtl::OUString > b(2); ASSERT_TRUE(!(a >>= b) && b.getLength() == 2) << "css::uno::Sequence"; } { Enum1 b = Enum1_M2; ASSERT_TRUE(!(a >>= b) && b == Enum1_M2) << "Enum1"; } { Struct1 b(2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Struct1"; } { Exception1 b( rtl::OUString(), css::uno::Reference< css::uno::XInterface >(), 2); ASSERT_TRUE(!(a >>= b) && b.member == 2) << "Exception1"; } { css::uno::Reference< Interface1 > b(new Impl1); ASSERT_TRUE((a >>= b) && !b.is()) << "Interface1"; } { css::uno::Reference< Interface2 > b(new Impl2); ASSERT_TRUE((a >>= b) && !b.is()) << "Interface2"; } { css::uno::Reference< Interface2a > b(new Impl2); ASSERT_TRUE((a >>= b) && !b.is()) << "Interface2a"; } { css::uno::Reference< Interface2b > b(new Impl2b); ASSERT_TRUE((a >>= b) && !b.is()) << "Interface2b"; } { css::uno::Reference< Interface3 > b(new Impl2); ASSERT_TRUE((a >>= b) && !b.is()) << "Interface3"; } } }