diff options
Diffstat (limited to 'sal/qa/systools/test_comtools.cxx')
-rw-r--r-- | sal/qa/systools/test_comtools.cxx | 252 |
1 files changed, 0 insertions, 252 deletions
diff --git a/sal/qa/systools/test_comtools.cxx b/sal/qa/systools/test_comtools.cxx deleted file mode 100644 index e14debabd..000000000 --- a/sal/qa/systools/test_comtools.cxx +++ /dev/null @@ -1,252 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sal.hxx" -// autogenerated file with codegen.pl - -#include <testshl/simpleheader.hxx> -#include <systools/win32/comtools.hxx> - -class COMObject : public IUnknown -{ -public: - COMObject() : ref_count_(0) - { - } - - ~COMObject() - { - } - - ULONG __stdcall AddRef() - { - ref_count_++; - return ref_count_; - } - - ULONG __stdcall Release() - { - ULONG cnt = --ref_count_; - if (cnt == 0) - delete this; - return cnt; - } - - HRESULT __stdcall QueryInterface(REFIID riid, LPVOID* ppv) - { - if (riid == IID_IUnknown) - { - AddRef(); - *ppv = this; - return S_OK; - } - return E_NOINTERFACE; - } - - ULONG GetRefCount() const - { - return ref_count_; - } - -private: - ULONG ref_count_; -}; - -sal::systools::COMReference<IUnknown> comObjectSource() -{ - return sal::systools::COMReference<IUnknown>(new COMObject); -} - -bool comObjectSink(sal::systools::COMReference<IUnknown> r, ULONG expectedRefCountOnReturn) -{ - r = sal::systools::COMReference<IUnknown>(); - COMObject* p = reinterpret_cast<COMObject*>(r.get()); - if (p) - return (p->GetRefCount() == expectedRefCountOnReturn); - else - return (0 == expectedRefCountOnReturn); -} - -void comObjectSource2(LPVOID* ppv) -{ - COMObject* p = new COMObject; - p->AddRef(); - *ppv = p; -} - -namespace test_comtools -{ - - class test_COMReference : public CppUnit::TestFixture - { - - public: - /// test of COMReference<IUnknown> r; - void default_ctor() - { - sal::systools::COMReference<IUnknown> r; - CPPUNIT_ASSERT_MESSAGE("COMReference should be empty", r.get() == NULL); - } - - void test_ctor_manual_AddRef() - { - COMObject* p = new COMObject; - p->AddRef(); - sal::systools::COMReference<IUnknown> r(p, false); - CPPUNIT_ASSERT_MESSAGE("Wrong reference count 1 is expected", reinterpret_cast<COMObject*>(r.get())->GetRefCount() == 1); - } - - void test_copy_ctor() - { - sal::systools::COMReference<IUnknown> r(comObjectSource()); - CPPUNIT_ASSERT_MESSAGE("Wrong reference count 1 is expected", reinterpret_cast<COMObject*>(r.get())->GetRefCount() == 1); - } - - void test_copy_assignment() - { - sal::systools::COMReference<IUnknown> r; - CPPUNIT_ASSERT_MESSAGE("COMReference should be empty", r.get() == NULL); - - r = comObjectSource(); - CPPUNIT_ASSERT_MESSAGE("COMReference should be empty", r.get() != NULL); - CPPUNIT_ASSERT_MESSAGE("Wrong reference count 1 is expected", reinterpret_cast<COMObject*>(r.get())->GetRefCount() == 1); - } - - void test_ref_to_ref_assignment() - { - sal::systools::COMReference<IUnknown> r1 = comObjectSource(); - sal::systools::COMReference<IUnknown> r2 = r1; - CPPUNIT_ASSERT_MESSAGE("Wrong reference count 2 is expected", reinterpret_cast<COMObject*>(r2.get())->GetRefCount() == 2); - } - - void test_pointer_to_ref_assignment() - { - sal::systools::COMReference<IUnknown> r; - r = new COMObject; - CPPUNIT_ASSERT_MESSAGE("Wrong reference count 1 is expected", reinterpret_cast<COMObject*>(r.get())->GetRefCount() == 1); - } - - void test_pointer_to_ref_assignment2() - { - sal::systools::COMReference<IUnknown> r = comObjectSource(); - r = new COMObject; - CPPUNIT_ASSERT_MESSAGE("Wrong reference count 1 is expected", reinterpret_cast<COMObject*>(r.get())->GetRefCount() == 1); - } - - void test_source_sink() - { - CPPUNIT_ASSERT_MESSAGE("Wrong reference count, 0 is expected", comObjectSink(comObjectSource(), 0)); - } - - void test_address_operator() - { - sal::systools::COMReference<IUnknown> r; - comObjectSource2(reinterpret_cast<LPVOID*>(&r)); - CPPUNIT_ASSERT_MESSAGE("Wrong reference count, 1 is expected", reinterpret_cast<COMObject*>(r.get())->GetRefCount() == 1); - } - - void test_address_operator2() - { - sal::systools::COMReference<IUnknown> r1 = comObjectSource(); - sal::systools::COMReference<IUnknown> r2 = r1; - CPPUNIT_ASSERT_MESSAGE("Wrong reference count 2 is expected", reinterpret_cast<COMObject*>(r2.get())->GetRefCount() == 2); - comObjectSource2(reinterpret_cast<LPVOID*>(&r1)); - CPPUNIT_ASSERT_MESSAGE("Wrong reference count 1 is expected", reinterpret_cast<COMObject*>(r1.get())->GetRefCount() == 1); - CPPUNIT_ASSERT_MESSAGE("Wrong reference count 1 is expected", reinterpret_cast<COMObject*>(r2.get())->GetRefCount() == 1); - } - - void test_clear() - { - sal::systools::COMReference<IUnknown> r = comObjectSource(); - CPPUNIT_ASSERT_MESSAGE("Wrong reference count 1 is expected", reinterpret_cast<COMObject*>(r.get())->GetRefCount() == 1); - r.clear(); - CPPUNIT_ASSERT_MESSAGE("Expect reference to be empty", !r.is()); - } - - void test_query_interface() - { - try - { - sal::systools::COMReference<IUnknown> r1 = comObjectSource(); - sal::systools::COMReference<IUnknown> r2 = r1.QueryInterface<IUnknown>(IID_IUnknown); - CPPUNIT_ASSERT_MESSAGE("Wrong reference count, 2 is expected", reinterpret_cast<COMObject*>(r2.get())->GetRefCount() == 2); - } - catch(const sal::systools::ComError& ex) - { - CPPUNIT_ASSERT_MESSAGE("Exception should not have been thrown", false); - } - } - - void test_query_interface_throw() - { - try - { - sal::systools::COMReference<IUnknown> r1 = comObjectSource(); - sal::systools::COMReference<IPersistFile> r2 = r1.QueryInterface<IPersistFile>(IID_IPersistFile); - } - catch(const sal::systools::ComError& ex) - { - return; - } - CPPUNIT_ASSERT_MESSAGE("Exception should have been thrown", false); - } - - // Change the following lines only, if you add, remove or rename - // member functions of the current class, - // because these macros are need by auto register mechanism. - - CPPUNIT_TEST_SUITE(test_COMReference); - CPPUNIT_TEST(default_ctor); - CPPUNIT_TEST(test_ctor_manual_AddRef); - CPPUNIT_TEST(test_copy_ctor); - CPPUNIT_TEST(test_copy_assignment); - CPPUNIT_TEST(test_ref_to_ref_assignment); - CPPUNIT_TEST(test_pointer_to_ref_assignment); - CPPUNIT_TEST(test_pointer_to_ref_assignment2); - CPPUNIT_TEST(test_source_sink); - CPPUNIT_TEST(test_address_operator); - CPPUNIT_TEST(test_address_operator2); - CPPUNIT_TEST(test_clear); - CPPUNIT_TEST(test_query_interface); - CPPUNIT_TEST(test_query_interface_throw); - CPPUNIT_TEST_SUITE_END(); - }; - -// ----------------------------------------------------------------------------- -CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(test_comtools::test_COMReference, "test_comtools"); - -} // namespace rtl_OUString - - -// this macro creates an empty function, which will called by the RegisterAllFunctions() -// to let the user the possibility to also register some functions by hand. -NOADDITIONAL; - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |