[Libreoffice-commits] core.git: Branch 'aoo/trunk' - 2 commits - sal/qa

Damjan Jovanovic damjan at apache.org
Fri Sep 4 15:08:21 PDT 2015


 sal/qa/osl/module/makefile.mk        |   30 
 sal/qa/osl/module/osl_Module.cxx     |  440 ++----
 sal/qa/osl/module/osl_Module_Const.h |    1 
 sal/qa/osl/module/osl_Module_DLL.cxx |    1 
 sal/qa/osl/process/makefile.mk       |   53 
 sal/qa/osl/process/osl_Thread.cxx    | 2317 +++++++++++++++--------------------
 sal/qa/osl/process/osl_process.cxx   |  611 +++------
 7 files changed, 1533 insertions(+), 1920 deletions(-)

New commits:
commit 06474710a5810a69c3a76be15dcda1b5d8789711
Author: Damjan Jovanovic <damjan at apache.org>
Date:   Fri Sep 4 18:33:14 2015 +0000

    #i125003# migrate main/sal/qa/osl/module from cppunit to Google Test.

diff --git a/sal/qa/osl/module/makefile.mk b/sal/qa/osl/module/makefile.mk
index 609db6d..78a510e 100644
--- a/sal/qa/osl/module/makefile.mk
+++ b/sal/qa/osl/module/makefile.mk
@@ -32,6 +32,12 @@ ENABLE_EXCEPTIONS=TRUE
 
 .INCLUDE :  settings.mk
 
+.IF "$(ENABLE_UNIT_TESTS)" != "YES"
+all:
+    @echo unit tests are disabled. Nothing to do.
+
+.ELSE
+
 CFLAGS+= $(LFS_CFLAGS)
 CXXFLAGS+= $(LFS_CFLAGS)
 
@@ -48,28 +54,28 @@ SHL1VERSIONMAP = export_dll.map
 
 
 # --- main l ------------------------------------------------------
-SHL2OBJS=  $(SLO)$/osl_Module.obj
-
-SHL2TARGET= osl_Module
-SHL2STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB)
+APP2OBJS=  $(SLO)$/osl_Module.obj
+APP2TARGET= osl_Module
+APP2STDLIBS= $(SALLIB) $(GTESTLIB) $(TESTSHL2LIB)
 
 .IF "$(GUI)" == "WNT"
-SHL2STDLIBS+=i$(SHL2TARGET).lib
+APP2STDLIBS+=i$(SHL1TARGET).lib
 .ENDIF
 .IF "$(GUI)" == "UNX"
-APP3STDLIBS+=-l$(SHL2TARGET)
+APP2STDLIBS+=-l$(SHL1TARGET)
 .ENDIF
 
-SHL2DEPN= $(SHL1OBJS)
-SHL2IMPLIB= i$(SHL2TARGET)
-SHL2DEF=    $(MISC)$/$(SHL2TARGET).def
+APP2DEPN= $(SHL1OBJS)
+APP2TEST = enabled
+#SHL2IMPLIB= i$(SHL2TARGET)
+#SHL2DEF=    $(MISC)$/$(SHL2TARGET).def
 
-DEF2NAME    =$(SHL2TARGET)
-SHL2VERSIONMAP= $(PRJ)$/qa$/export.map
+#DEF2NAME    =$(SHL2TARGET)
+#SHL2VERSIONMAP= $(PRJ)$/qa$/export.map
 # END ------------------------------------------------------------------
 
 # --- Targets ------------------------------------------------------
 
 .INCLUDE :  target.mk
-.INCLUDE : _cppunit.mk
 
+.ENDIF # "$(ENABLE_UNIT_TESTS)" != "YES"
\ No newline at end of file
diff --git a/sal/qa/osl/module/osl_Module.cxx b/sal/qa/osl/module/osl_Module.cxx
index eba1ab2..97a0f3a 100644
--- a/sal/qa/osl/module/osl_Module.cxx
+++ b/sal/qa/osl/module/osl_Module.cxx
@@ -28,6 +28,7 @@
 // include files
 //------------------------------------------------------------------------
 #include <osl_Module_Const.h>
+#include "gtest/gtest.h"
 
 using namespace osl;
 using namespace rtl;
@@ -41,8 +42,8 @@ using namespace rtl;
 */
 inline void printBool( sal_Bool bOk )
 {
-    t_print("#printBool# " );
-    ( sal_True == bOk ) ? t_print("TRUE!\n" ): t_print("FALSE!\n" );
+    printf("#printBool# " );
+    ( sal_True == bOk ) ? printf("TRUE!\n" ): printf("FALSE!\n" );
 }
 
 /** print a UNI_CODE String.
@@ -51,9 +52,9 @@ inline void printUString( const ::rtl::OUString & str )
 {
     rtl::OString aString;
 
-    t_print("#printUString_u# " );
+    printf("#printUString_u# " );
     aString = ::rtl::OUStringToOString( str, RTL_TEXTENCODING_ASCII_US );
-    t_print("%s\n", aString.getStr( ) );
+    printf("%s\n", aString.getStr( ) );
 }
 
 /** get dll file URL.
@@ -68,9 +69,17 @@ inline ::rtl::OUString getDllURL( void )
 
     ::rtl::OUString dirPath, dllPath;
     osl::Module::getUrlFromAddress( ( void* ) &getDllURL, dirPath );
+    // file:///aoo/main/sal/unx/bin/osl_Module
+    dirPath = dirPath.copy( 0, dirPath.lastIndexOf('/'));
+    // file:///aoo/main/sal/unx/bin
     dirPath = dirPath.copy( 0, dirPath.lastIndexOf('/') + 1);
+    // file:///aoo/main/sal/unx/
+    dirPath = dirPath + rtl::OUString::createFromAscii( "lib/" );
+    // file:///aoo/main/sal/unx/lib/
     osl::FileBase::getAbsoluteFileURL( dirPath, libPath, dllPath );
 
+rtl::OString aOString = ::rtl::OUStringToOString (dllPath, RTL_TEXTENCODING_UTF8);
+printf("getDllURL() returning %s\n", aOString.getStr());
     return dllPath;
 }
 
@@ -80,9 +89,9 @@ inline void printFileName( const ::rtl::OUString & str )
 {
     rtl::OString aString;
 
-    t_print("#printFileName_u# " );
+    printf("#printFileName_u# " );
     aString = ::rtl::OUStringToOString( str, RTL_TEXTENCODING_ASCII_US );
-    t_print("%s\n", aString.getStr( ) );
+    printf("%s\n", aString.getStr( ) );
 }
 
 inline sal_Bool isURL( const ::rtl::OUString pathname )
@@ -101,7 +110,7 @@ inline void createTestDirectory( const ::rtl::OUString dirname )
     if ( !isURL( dirname ) )
         ::osl::FileBase::getFileURLFromSystemPath( dirname, aPathURL ); //convert if not full qualified URL
     nError = ::osl::Directory::create( aPathURL );
-    CPPUNIT_ASSERT_MESSAGE( "In createTestDirectory Function: creation: ", ( ::osl::FileBase::E_None == nError ) || ( nError == ::osl::FileBase::E_EXIST ) );
+    ASSERT_TRUE(( ::osl::FileBase::E_None == nError ) || ( nError == ::osl::FileBase::E_EXIST )) << "In createTestDirectory Function: creation: ";
 }
 
 /** delete a temp test directory using OUString name of full qualified URL or system path.
@@ -120,7 +129,7 @@ inline void deleteTestDirectory( const ::rtl::OUString dirname )
         }
 
     nError = ::osl::Directory::remove( aPathURL );
-     CPPUNIT_ASSERT_MESSAGE( "In deleteTestDirectory function: remove ", ( ::osl::FileBase::E_None == nError ) || ( nError == ::osl::FileBase::E_NOENT ) );
+     ASSERT_TRUE(( ::osl::FileBase::E_None == nError ) || ( nError == ::osl::FileBase::E_NOENT )) << "In deleteTestDirectory function: remove ";
 }
 
 //check if the file exist
@@ -153,10 +162,10 @@ inline void deleteTestFile( const ::rtl::OUString filename )
         ::osl::FileBase::getFileURLFromSystemPath( filename, aPathURL ); //convert if not full qualified URL
 
     nError = ::osl::File::setAttributes( aPathURL, Attribute_GrpWrite| Attribute_OwnWrite| Attribute_OthWrite ); // if readonly, make writtenable.
-    CPPUNIT_ASSERT_MESSAGE( "In deleteTestFile Function: set writtenable ", ( ::osl::FileBase::E_None == nError ) || ( ::osl::FileBase::E_NOENT == nError ) );
+    ASSERT_TRUE(( ::osl::FileBase::E_None == nError ) || ( ::osl::FileBase::E_NOENT == nError )) << "In deleteTestFile Function: set writtenable ";
 
     nError = ::osl::File::remove( aPathURL );
-    CPPUNIT_ASSERT_MESSAGE( "In deleteTestFile Function: remove ", ( ::osl::FileBase::E_None == nError ) || ( nError == ::osl::FileBase::E_NOENT ) );
+    ASSERT_TRUE(( ::osl::FileBase::E_None == nError ) || ( nError == ::osl::FileBase::E_NOENT )) << "In deleteTestFile Function: remove ";
 }
 
 
@@ -175,7 +184,7 @@ namespace osl_Module
     public:
         static void myFunc()
         {
-            t_print("#Sun Microsystem\n");
+            printf("#Sun Microsystem\n");
         };
     };
 
@@ -184,335 +193,260 @@ namespace osl_Module
         Module();
         Module( const ::rtl::OUString& strModuleName, sal_Int32 nRtldMode = SAL_LOADMODULE_DEFAULT);
     */
-    class ctors : public CppUnit::TestFixture
+    class ctors : public ::testing::Test
     {
     public:
         sal_Bool bRes, bRes1;
+    }; // class ctors
 
-        void ctors_none( )
-        {
-            ::osl::Module aMod;
-            bRes = aMod.is();
-
-            CPPUNIT_ASSERT_MESSAGE( "#test comment#: test constructor without parameter.",
-                                    sal_False == bRes  );
-        }
-
-        void ctors_name_mode( )
-        {
-            OUString aFileURL;
-            bRes = osl::Module::getUrlFromAddress( ( void* ) &::osl_Module::testClass::myFunc, aFileURL );
-
-            if ( !( bRes ) )
-            {
-                CPPUNIT_ASSERT_MESSAGE("Cannot locate current module.",  sal_False  );
-            }
 
-            ::osl::Module aMod( aFileURL );
-            bRes = aMod.is( );
-            aMod.unload( );
+    TEST_F(ctors, ctors_none)
+    {
+        ::osl::Module aMod;
+        bRes = aMod.is();
 
-            CPPUNIT_ASSERT_MESSAGE( "#test comment#: test constructor with load action.",
-                                    sal_True == bRes  );
-        }
+        ASSERT_TRUE( sal_False == bRes ) << "#test comment#: test constructor without parameter.";
+    }
 
-        CPPUNIT_TEST_SUITE( ctors );
-        CPPUNIT_TEST( ctors_none );
-        CPPUNIT_TEST( ctors_name_mode );
-        CPPUNIT_TEST_SUITE_END( );
-    }; // class ctors
+    TEST_F(ctors, ctors_name_mode)
+    {
+        ::osl::Module aMod( getDllURL( ) );
+        bRes = aMod.is( );
+        aMod.unload( );
 
+        ASSERT_TRUE( sal_True == bRes ) << "#test comment#: test constructor with load action.";
+    }
 
     /** testing the methods:
         static sal_Bool getUrlFromAddress(void * addr, ::rtl::OUString & libraryUrl)
     */
-    class getUrlFromAddress : public CppUnit::TestFixture
+    class getUrlFromAddress : public ::testing::Test
     {
     public:
         sal_Bool bRes, bRes1;
+    }; // class getUrlFromAddress
 
-        void getUrlFromAddress_001( )
-        {
-            OUString aFileURL;
-            bRes = osl::Module::getUrlFromAddress( ( void* ) &::osl_Module::testClass::myFunc, aFileURL ) ;
-            if ( !( bRes ) )
-            {
-                CPPUNIT_ASSERT_MESSAGE("Cannot locate current module.",  sal_False  );
-            }
-
-            CPPUNIT_ASSERT_MESSAGE( "#test comment#: test get Module URL from address.",
-                                    sal_True == bRes && 0 < aFileURL.lastIndexOf('/')  );
-        }
+    /* tester comments: another case is getFunctionSymbol_001*/
 
-        void getUrlFromAddress_002( )
+    TEST_F(getUrlFromAddress, getUrlFromAddress_001 )
+    {
+        OUString aFileURL;
+        bRes = osl::Module::getUrlFromAddress( ( void* ) &::osl_Module::testClass::myFunc, aFileURL ) ;
+        if ( !( bRes ) )
         {
-            ::osl::Module aMod( getDllURL( ) );
-            FuncPtr pFunc = ( FuncPtr ) aMod.getSymbol( rtl::OUString::createFromAscii( "firstfunc" ) );
-
-            OUString aFileURL;
-            bRes = osl::Module::getUrlFromAddress( ( void* )pFunc, aFileURL );
-            if ( !( bRes  ) )
-            {
-                CPPUNIT_ASSERT_MESSAGE("Cannot locate current module.",  sal_False  );
-            }
-            aMod.unload( );
-
-            CPPUNIT_ASSERT_MESSAGE( "#test comment#: load an external library, get its function address and get its URL.",
-                                    sal_True == bRes && 0 < aFileURL.lastIndexOf('/') && aFileURL.equalsIgnoreAsciiCase( getDllURL( ) ) );
+            ASSERT_TRUE(sal_False) << "Cannot locate current module.";
         }
 
-        /* tester comments: another case is getFunctionSymbol_001*/
+        ASSERT_TRUE(sal_True == bRes && 0 < aFileURL.lastIndexOf('/')) << "#test comment#: test get Module URL from address.";
+    }
 
-        CPPUNIT_TEST_SUITE( getUrlFromAddress );
-        CPPUNIT_TEST( getUrlFromAddress_001 );
-        CPPUNIT_TEST( getUrlFromAddress_002 );
-        CPPUNIT_TEST_SUITE_END( );
-    }; // class getUrlFromAddress
+    TEST_F(getUrlFromAddress, getUrlFromAddress_002 )
+    {
+        ::osl::Module aMod( getDllURL( ) );
+        FuncPtr pFunc = ( FuncPtr ) aMod.getSymbol( rtl::OUString::createFromAscii( "firstfunc" ) );
 
+        OUString aFileURL;
+        bRes = osl::Module::getUrlFromAddress( ( void* )pFunc, aFileURL );
+        if ( !( bRes  ) )
+        {
+            ASSERT_TRUE(sal_False) << "Cannot locate current module.";
+        }
+        aMod.unload( );
+
+        ASSERT_TRUE( sal_True == bRes && 0 < aFileURL.lastIndexOf('/') && aFileURL.equalsIgnoreAsciiCase( getDllURL( ) ) )
+            << "#test comment#: load an external library, get its function address and get its URL.";
+    }
 
     /** testing the method:
         sal_Bool SAL_CALL load( const ::rtl::OUString& strModuleName,
                                                  sal_Int32 nRtldMode = SAL_LOADMODULE_DEFAULT)
     */
-    class load : public CppUnit::TestFixture
+    class load : public ::testing::Test
     {
     public:
         sal_Bool bRes, bRes1;
+    }; // class load
 
-        void load_001( )
-        {
-            ::osl::Module aMod( getDllURL( ) );
-            ::osl::Module aMod1;
+    TEST_F(load, load_001 )
+    {
+        ::osl::Module aMod( getDllURL( ) );
+        ::osl::Module aMod1;
 
-            aMod1.load( getDllURL( ) );
-            bRes = oslModule(aMod) == oslModule(aMod1);
-            aMod.unload( );
-            aMod1.unload( );
+        aMod1.load( getDllURL( ) );
+        bRes = oslModule(aMod) == oslModule(aMod1);
+        aMod.unload( );
+        aMod1.unload( );
 
-            CPPUNIT_ASSERT_MESSAGE( "#test comment#: load function should do the same thing as constructor with library name.",
-                                    sal_True == bRes  );
-        }
-        // load lib which is under a CJK directory
-        void load_002( )
-        {
+        ASSERT_TRUE(sal_True == bRes) << "#test comment#: load function should do the same thing as constructor with library name.";
+    }
+    // load lib which is under a CJK directory
+    TEST_F(load, load_002 )
+    {
 #ifdef UNX
-            //Can not get a CJK directory already exist, so here create one. Perhaps reason is encoding problem.
-            ::rtl::OUString aPidDirURL = rtl::OUString::createFromAscii( "file:///tmp/" ) + ::rtl::OUString::valueOf( ( long )getpid( ) );
-            ::rtl::OUString aMyDirURL = aPidDirURL + aKname;
-            createTestDirectory( aPidDirURL );
-            createTestDirectory( aMyDirURL );
-
-            ::rtl::OUString aDLLURL = aMyDirURL + rtl::OUString::createFromAscii( "/libModule_DLL.so" );
-            //check if the lib exist.
-            //FIXME: if assert condition is false, the case will return, so the directory will not be clean-up
-            CPPUNIT_ASSERT_MESSAGE( "#Source file is not exist. please manually clean-up directory and file under /tmp", ifFileExist( getDllURL( ) ) == sal_True );
-            ::osl::FileBase::RC nError = ::osl::File::copy( getDllURL( ), aDLLURL );
-            CPPUNIT_ASSERT_MESSAGE( "#copy failed. please manually clean-up directory and file under /tmp", nError == ::osl::FileBase::E_None );
-            //ifFileExist returned false but the file exist
-            CPPUNIT_ASSERT_MESSAGE( "#This file is not exist, copy failed. please manually clean-up directory and file under /tmp", ifFileExist( aDLLURL ) == sal_True );
-
-            //test if can create a normal file
-            ::rtl::OUString aFileURL = aMyDirURL + rtl::OUString::createFromAscii( "/test_file" );
-            ::osl::File testFile( aFileURL );
-            nError = testFile.open( OpenFlag_Create );
-            CPPUNIT_ASSERT_MESSAGE( "#create failed. please manually clean-up directory and file under /tmp", nError == ::osl::FileBase::E_None );
-            CPPUNIT_ASSERT_MESSAGE( "#This file is not exist, create failed. please manually clean-up directory and file under /tmp", ifFileExist( aFileURL ) == sal_True );
-
-            //load the copied dll
-            ::osl::Module aMod( aDLLURL );
-            ::osl::Module aMod1;
-
-            sal_Bool bOK = aMod1.load( aDLLURL );
-            bRes = oslModule(aMod) == oslModule(aMod1);
-            aMod.unload( );
-            aMod1.unload( );
-            deleteTestFile( aFileURL );
-            deleteTestFile( aDLLURL );
-            deleteTestDirectory( aMyDirURL );
-            deleteTestDirectory( aPidDirURL );
-
-            CPPUNIT_ASSERT_MESSAGE( "#test comment#: load lib which is under a CJK directory.",
-                                    sal_True == bRes && bOK == sal_True );
+        //Can not get a CJK directory already exist, so here create one. Perhaps reason is encoding problem.
+        ::rtl::OUString aPidDirURL = rtl::OUString::createFromAscii( "file:///tmp/" ) + ::rtl::OUString::valueOf( ( long )getpid( ) );
+        ::rtl::OUString aMyDirURL = aPidDirURL + aKname;
+        createTestDirectory( aPidDirURL );
+        createTestDirectory( aMyDirURL );
+
+        ::rtl::OUString aDLLURL = aMyDirURL + rtl::OUString::createFromAscii( "/libModule_DLL.so" );
+        //check if the lib exist.
+        //FIXME: if assert condition is false, the case will return, so the directory will not be clean-up
+        ASSERT_TRUE(ifFileExist( getDllURL( ) ) == sal_True) << "#Source file is not exist. please manually clean-up directory and file under /tmp";
+        ::osl::FileBase::RC nError = ::osl::File::copy( getDllURL( ), aDLLURL );
+        ASSERT_TRUE(nError == ::osl::FileBase::E_None) << "#copy failed. please manually clean-up directory and file under /tmp";
+        //ifFileExist returned false but the file exist
+        ASSERT_TRUE( ifFileExist( aDLLURL ) == sal_True )
+            << "#This file is not exist, copy failed. please manually clean-up directory and file under /tmp";
+
+        //test if can create a normal file
+        ::rtl::OUString aFileURL = aMyDirURL + rtl::OUString::createFromAscii( "/test_file" );
+        ::osl::File testFile( aFileURL );
+        nError = testFile.open( OpenFlag_Create );
+        ASSERT_TRUE(nError == ::osl::FileBase::E_None) << "#create failed. please manually clean-up directory and file under /tmp";
+        ASSERT_TRUE( ifFileExist( aFileURL ) == sal_True )
+            << "#This file is not exist, create failed. please manually clean-up directory and file under /tmp";
+
+        //load the copied dll
+        ::osl::Module aMod( aDLLURL );
+        ::osl::Module aMod1;
+
+        sal_Bool bOK = aMod1.load( aDLLURL );
+        bRes = oslModule(aMod) == oslModule(aMod1);
+        aMod.unload( );
+        aMod1.unload( );
+        deleteTestFile( aFileURL );
+        deleteTestFile( aDLLURL );
+        deleteTestDirectory( aMyDirURL );
+        deleteTestDirectory( aPidDirURL );
+
+        ASSERT_TRUE(sal_True == bRes && bOK == sal_True) << "#test comment#: load lib which is under a CJK directory.";
 #endif
-        }
-
-        CPPUNIT_TEST_SUITE( load );
-        CPPUNIT_TEST( load_001 );
-        CPPUNIT_TEST( load_002 );
-        CPPUNIT_TEST_SUITE_END( );
-    }; // class load
-
+    }
 
     /** testing the method:
         void SAL_CALL unload()
     */
-    class unload : public CppUnit::TestFixture
+    class unload : public ::testing::Test
     {
     public:
         sal_Bool bRes, bRes1;
+    }; // class unload
 
-        void unload_001( )
-        {
-            ::osl::Module aMod( getDllURL( ) );
-
-            aMod.unload( );
-            bRes = oslModule(aMod) ==NULL;
-
-            CPPUNIT_ASSERT_MESSAGE( "#test comment#: unload function should do the same thing as destructor.",
-                                    sal_True == bRes  );
-        }
+    TEST_F(unload, unload_001)
+    {
+        ::osl::Module aMod( getDllURL( ) );
 
-        CPPUNIT_TEST_SUITE( unload );
-        CPPUNIT_TEST( unload_001 );
-        CPPUNIT_TEST_SUITE_END( );
-    }; // class unload
+        aMod.unload( );
+        bRes = oslModule(aMod) ==NULL;
 
+        ASSERT_TRUE(sal_True == bRes) << "#test comment#: unload function should do the same thing as destructor.";
+    }
 
     /** testing the methods:
         sal_Bool SAL_CALL is() const
     */
-    class is : public CppUnit::TestFixture
+    class is : public ::testing::Test
     {
     public:
         sal_Bool bRes, bRes1;
-
-        void is_001( )
-        {
-            OUString aFileURL;
-            bRes = osl::Module::getUrlFromAddress( ( void* ) &::osl_Module::testClass::myFunc, aFileURL );
-            if ( !( bRes  ) )
-            {
-                CPPUNIT_ASSERT_MESSAGE("Cannot locate current module - using executable instead",  sal_False  );
-            }
-
-            ::osl::Module aMod;
-            bRes = aMod.is( );
-            aMod.load( aFileURL );
-            bRes1 = aMod.is( );
-            aMod.unload( );
-
-            CPPUNIT_ASSERT_MESSAGE( "#test comment#: test if a module is a loaded module.",
-                                     sal_False == bRes && sal_True == bRes1);
-        }
-        CPPUNIT_TEST_SUITE( is );
-        CPPUNIT_TEST( is_001 );
-        CPPUNIT_TEST_SUITE_END( );
     }; // class is
 
+    TEST_F(is, is_001)
+    {
+        ::osl::Module aMod;
+        bRes = aMod.is( );
+        aMod.load( getDllURL( ) );
+        bRes1 = aMod.is( );
+        aMod.unload( );
+
+        ASSERT_TRUE(sal_False == bRes && sal_True == bRes1) << "#test comment#: test if a module is a loaded module.";
+    }
 
     /** testing the methods:
         void* SAL_CALL getSymbol( const ::rtl::OUString& strSymbolName)
     */
-    class getSymbol : public CppUnit::TestFixture
+    class getSymbol : public ::testing::Test
     {
     public:
         sal_Bool bRes;
-
-        void getSymbol_001( )
-        {
-            ::osl::Module aMod( getDllURL( ) );
-            FuncPtr pFunc = ( FuncPtr ) aMod.getSymbol( rtl::OUString::createFromAscii( "firstfunc" ) );
-            bRes = sal_False;
-            if ( pFunc )
-                bRes = pFunc( bRes );
-            aMod.unload();
-
-            CPPUNIT_ASSERT_MESSAGE( "#test comment#: load a dll and call one function in it.",
-                                     sal_True == bRes );
-        }
-
-        CPPUNIT_TEST_SUITE( getSymbol );
-        CPPUNIT_TEST( getSymbol_001 );
-        CPPUNIT_TEST_SUITE_END( );
     }; // class getSymbol
 
+    TEST_F(getSymbol, getSymbol_001)
+    {
+        ::osl::Module aMod( getDllURL( ) );
+        FuncPtr pFunc = ( FuncPtr ) aMod.getSymbol( rtl::OUString::createFromAscii( "firstfunc" ) );
+        bRes = sal_False;
+        if ( pFunc )
+            bRes = pFunc( bRes );
+        aMod.unload();
+
+        ASSERT_TRUE(sal_True == bRes) << "#test comment#: load a dll and call one function in it.";
+    }
 
     /** testing the methods:
         operator oslModule() const
     */
-    class optr_oslModule : public CppUnit::TestFixture
+    class optr_oslModule : public ::testing::Test
     {
     public:
         sal_Bool bRes, bRes1;
+    }; // class optr_oslModule
 
-        void optr_oslModule_001( )
-        {
-            ::osl::Module aMod;
-            bRes = ( (oslModule)aMod == NULL );
-
-            aMod.load( getDllURL( ) );
-            bRes1 = (oslModule)aMod != NULL;
+    TEST_F(optr_oslModule, optr_oslModule_001 )
+    {
+        ::osl::Module aMod;
+        bRes = ( (oslModule)aMod == NULL );
 
-            aMod.unload( );
+        aMod.load( getDllURL( ) );
+        bRes1 = (oslModule)aMod != NULL;
 
-            CPPUNIT_ASSERT_MESSAGE( "#test comment#: the m_Module of a Module instance will be NULL when is not loaded, it will not be NULL after loaded.",
-                                     sal_True == bRes && sal_True == bRes1);
-        }
+        aMod.unload( );
 
-        void optr_oslModule_002( )
-        {
-            ::osl::Module aMod( getDllURL( ) );
-            ::rtl::OUString funcName(::rtl::OUString::createFromAscii( "firstfunc" ) );
+        ASSERT_TRUE(sal_True == bRes && sal_True == bRes1)
+            << "#test comment#: the m_Module of a Module instance will be NULL when is not loaded, it will not be NULL after loaded.";
+    }
 
-            FuncPtr pFunc = ( FuncPtr ) osl_getSymbol( (oslModule)aMod, funcName.pData );
-            bRes = sal_False;
-            if ( pFunc )
-                bRes = pFunc( bRes );
+    TEST_F(optr_oslModule, optr_oslModule_002 )
+    {
+        ::osl::Module aMod( getDllURL( ) );
+        ::rtl::OUString funcName(::rtl::OUString::createFromAscii( "firstfunc" ) );
 
-            aMod.unload();
+        FuncPtr pFunc = ( FuncPtr ) osl_getSymbol( (oslModule)aMod, funcName.pData );
+        bRes = sal_False;
+        if ( pFunc )
+            bRes = pFunc( bRes );
 
-            CPPUNIT_ASSERT_MESSAGE( "#test comment#: use m_Module to call osl_getSymbol() function.",
-                                     sal_True == bRes  );
-        }
+        aMod.unload();
 
-        CPPUNIT_TEST_SUITE( optr_oslModule );
-        CPPUNIT_TEST( optr_oslModule_001 );
-        CPPUNIT_TEST( optr_oslModule_002 );
-        CPPUNIT_TEST_SUITE_END( );
-    }; // class optr_oslModule
+        ASSERT_TRUE(sal_True == bRes) << "#test comment#: use m_Module to call osl_getSymbol() function.";
+    }
 
     /** testing the methods:
         oslGenericFunction SAL_CALL getFunctionSymbol( const ::rtl::OUString& ustrFunctionSymbolName )
     */
-    class getFunctionSymbol : public CppUnit::TestFixture
+    class getFunctionSymbol : public ::testing::Test
     {
     public:
         sal_Bool bRes, bRes1;
-
-        void getFunctionSymbol_001( )
-        {
-            ::osl::Module aMod( getDllURL( ) );
-            oslGenericFunction oslFunc = aMod.getFunctionSymbol( rtl::OUString::createFromAscii( "firstfunc" ) );
-            ::rtl::OUString aLibraryURL;
-            bRes = ::osl::Module::getUrlFromAddress( oslFunc, aLibraryURL);
-            aMod.unload();
-            printFileName( aLibraryURL );
-
-            CPPUNIT_ASSERT_MESSAGE( "#test comment#: load a dll and get its function addr and get its URL.",
-                 sal_True == bRes && aLibraryURL.equalsIgnoreAsciiCase( getDllURL() ) );
-        }
-
-        CPPUNIT_TEST_SUITE( getFunctionSymbol );
-        CPPUNIT_TEST( getFunctionSymbol_001 );
-        //CPPUNIT_TEST( getFunctionSymbol_002 );
-        CPPUNIT_TEST_SUITE_END( );
     }; // class getFunctionSymbol
 
-// -----------------------------------------------------------------------------
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(osl_Module::ctors, "osl_Module");
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(osl_Module::getUrlFromAddress, "osl_Module");
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(osl_Module::load, "osl_Module");
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(osl_Module::unload, "osl_Module");
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(osl_Module::is, "osl_Module");
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(osl_Module::getSymbol, "osl_Module");
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(osl_Module::optr_oslModule, "osl_Module");
-CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(osl_Module::getFunctionSymbol, "osl_Module");
-// -----------------------------------------------------------------------------
+    TEST_F(getFunctionSymbol, getFunctionSymbol_001)
+    {
+        ::osl::Module aMod( getDllURL( ) );
+        oslGenericFunction oslFunc = aMod.getFunctionSymbol( rtl::OUString::createFromAscii( "firstfunc" ) );
+        ::rtl::OUString aLibraryURL;
+        bRes = ::osl::Module::getUrlFromAddress( oslFunc, aLibraryURL);
+        aMod.unload();
+        printFileName( aLibraryURL );
+
+        ASSERT_TRUE(sal_True == bRes && aLibraryURL.equalsIgnoreAsciiCase( getDllURL() )) << "#test comment#: load a dll and get its function addr and get its URL.";
+    }
 
 } // namespace osl_Module
 
-// -----------------------------------------------------------------------------
-
-// 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;
+int main(int argc, char **argv)
+{
+    ::testing::InitGoogleTest(&argc, argv);
+    return RUN_ALL_TESTS();
+}
diff --git a/sal/qa/osl/module/osl_Module_Const.h b/sal/qa/osl/module/osl_Module_Const.h
index d3268ee..3eb90e7 100644
--- a/sal/qa/osl/module/osl_Module_Const.h
+++ b/sal/qa/osl/module/osl_Module_Const.h
@@ -30,7 +30,6 @@
 #include <osl/module.hxx>
 #include <osl/file.hxx>
 
-#include <testshl/simpleheader.hxx>
 
 #if ( defined UNX ) || ( defined OS2 )  //Unix
 #   include <unistd.h>
diff --git a/sal/qa/osl/module/osl_Module_DLL.cxx b/sal/qa/osl/module/osl_Module_DLL.cxx
index a4a18de..f640558 100644
--- a/sal/qa/osl/module/osl_Module_DLL.cxx
+++ b/sal/qa/osl/module/osl_Module_DLL.cxx
@@ -26,7 +26,6 @@
 
 #include <stdio.h>
 #include <sal/types.h>
-#include <testshl/simpleheader.hxx>
 
 extern "C" sal_Bool SAL_CALL firstfunc( sal_Bool bRes )
 {
commit 43fbebfbe5d14054c72486aed92f9702367406f8
Author: Damjan Jovanovic <damjan at apache.org>
Date:   Fri Sep 4 16:32:10 2015 +0000

    #i125003# migrate main/sal/qa/osl/process from cppunit to Google Test.

diff --git a/sal/qa/osl/process/makefile.mk b/sal/qa/osl/process/makefile.mk
index 72e0e00..c45f014 100644
--- a/sal/qa/osl/process/makefile.mk
+++ b/sal/qa/osl/process/makefile.mk
@@ -31,6 +31,13 @@ ENABLE_EXCEPTIONS=TRUE
 
 .INCLUDE :  settings.mk
 
+.IF "$(ENABLE_UNIT_TESTS)" != "YES"
+all:
+    @echo unit tests are disabled. Nothing to do.
+
+.ELSE
+
+
 CFLAGS+= $(LFS_CFLAGS)
 CXXFLAGS+= $(LFS_CFLAGS)
 
@@ -41,33 +48,23 @@ CXXFLAGS+= $(LFS_CFLAGS)
     CFLAGS+=/Ob1
 .ENDIF
 
-SHL1OBJS=  \
+APP1OBJS=  \
     $(SLO)$/osl_Thread.obj
 
-SHL1TARGET= osl_Thread
-SHL1STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB)
-
-SHL1IMPLIB= i$(SHL1TARGET)
-
-# SHL1DEF=    $(MISC)$/$(SHL1TARGET).def
-
-DEF1NAME    =$(SHL1TARGET)
-
-# DEF1EXPORTFILE= export.exp
-SHL1VERSIONMAP = $(PRJ)$/qa$/export.map
+APP1TARGET= osl_Thread
+APP1STDLIBS= $(SALLIB) $(GTESTLIB) $(TESTSHL2LIB)
+APP1RPATH = NONE
+APP1TEST = enabled
 
 # END ------------------------------------------------------------------
 
 #.IF "$(GUI)" == "WNT"
 
-SHL2OBJS=$(SLO)$/osl_process.obj
-SHL2TARGET=osl_process
-SHL2STDLIBS= $(SALLIB) $(CPPUNITLIB) $(TESTSHL2LIB)
-
-SHL2IMPLIB=i$(SHL2TARGET)
-SHL2DEF=$(MISC)$/$(SHL2TARGET).def
-DEF2NAME=$(SHL2TARGET)
-DEF2EXPORTFILE=export.exp
+APP2OBJS=$(SLO)$/osl_process.obj
+APP2TARGET=osl_process
+APP2STDLIBS= $(SALLIB) $(GTESTLIB) $(TESTSHL2LIB)
+APP2RPATH = NONE
+APP2TEST = enabled
 
 # END ------------------------------------------------------------------
 
@@ -85,20 +82,8 @@ APP3STDLIBS=$(SALLIB)
 
 #.ENDIF # "$(GUI)" == "WNT"
 
-#------------------------------- All object files -------------------------------
-# do this here, so we get right dependencies
-
-.IF "$(GUI)" == "OS2"
-
-SLOFILES=$(SHL2OBJS)
-
-.ELSE
-
-SLOFILES=$(SHL1OBJS) $(SHL2OBJS)
-
-.ENDIF
-
 # --- Targets ------------------------------------------------------
 
 .INCLUDE :  target.mk
-.INCLUDE : _cppunit.mk
+
+.ENDIF # "$(ENABLE_UNIT_TESTS)" != "YES"
diff --git a/sal/qa/osl/process/osl_Thread.cxx b/sal/qa/osl/process/osl_Thread.cxx
index 36bf0cc..01cbe00 100644
--- a/sal/qa/osl/process/osl_Thread.cxx
+++ b/sal/qa/osl/process/osl_Thread.cxx
@@ -45,7 +45,7 @@
 #endif
 #include <osl/time.h>
 
-#include <testshl/simpleheader.hxx>
+#include "gtest/gtest.h"
 
 using namespace osl;
 using namespace rtl;
@@ -92,7 +92,7 @@ void StopWatch::start()
     m_bIsValid = false;
     m_bIsRunning = true;
     osl_getSystemTime( &t1 );
-    t_print("# %d %d nsecs\n", t1.Seconds, t1.Nanosec);
+    printf("# %d %d nsecs\n", t1.Seconds, t1.Nanosec);
     // gettimeofday(&t1, 0);
 }
 
@@ -103,7 +103,7 @@ void StopWatch::stop()
 
     // gettimeofday(&t2, 0);                         // Timer ausfragen
     osl_getSystemTime( &t2 );
-    t_print("# %d %d nsecs\n", t2.Seconds, t2.Nanosec);
+    printf("# %d %d nsecs\n", t2.Seconds, t2.Nanosec);
 
     if (m_bIsRunning)
     {                                // check ob gestartet.
@@ -123,7 +123,7 @@ void StopWatch::stop()
         m_nNanoSec = 1000000000 + static_cast<sal_Int32>(t2.Nanosec) - static_cast<sal_Int32>(t1.Nanosec);
                 m_nSeconds -= 1;
     }
-    t_print("# %d %d nsecs\n", m_nSeconds, m_nNanoSec );
+    printf("# %d %d nsecs\n", m_nSeconds, m_nNanoSec );
         //if (m_nNanoSec < 0)
         //{
             //m_nNanoSec += 1000000000;
@@ -193,7 +193,7 @@ namespace ThreadHelper
     {
         // if (nVerbose == VERBOSE)
         // {
-        //     t_print("wait %d tenth seconds. ", _nTenthSec );
+        //     printf("wait %d tenth seconds. ", _nTenthSec );
         //     fflush(stdout);
         // }
 #ifdef WNT      //Windows
@@ -207,7 +207,7 @@ namespace ThreadHelper
 #endif
         // if (nVerbose == VERBOSE)
         // {
-        //     t_print("done\n");
+        //     printf("done\n");
         // }
     }
 
@@ -216,27 +216,27 @@ namespace ThreadHelper
         // LLA: output the priority
         if (_aPriority == osl_Thread_PriorityHighest)
         {
-            t_print("Prio is High\n");
+            printf("Prio is High\n");
         }
         else if (_aPriority == osl_Thread_PriorityAboveNormal)
         {
-            t_print("Prio is above normal\n");
+            printf("Prio is above normal\n");
         }
         else if (_aPriority == osl_Thread_PriorityNormal)
         {
-            t_print("Prio is normal\n");
+            printf("Prio is normal\n");
         }
         else if (_aPriority == osl_Thread_PriorityBelowNormal)
         {
-            t_print("Prio is below normal\n");
+            printf("Prio is below normal\n");
         }
         else if (_aPriority == osl_Thread_PriorityLowest)
         {
-            t_print("Prio is lowest\n");
+            printf("Prio is lowest\n");
         }
         else
         {
-            t_print("Prio is unknown\n");
+            printf("Prio is unknown\n");
         }
     }
 }
@@ -277,7 +277,7 @@ public:
         {
             if (isRunning())
             {
-                t_print("error: not terminated.\n");
+                printf("error: not terminated.\n");
             }
         }
 
@@ -293,7 +293,7 @@ public:
     OCountThread()
         {
             m_nWaitSec = 0;
-            t_print("new OCountThread thread %d!\n", getIdentifier());
+            printf("new OCountThread thread %d!\n", getIdentifier());
         }
     sal_Int32 getValue() { return m_aFlag.getValue(); }
 
@@ -339,7 +339,7 @@ protected:
         }
     void SAL_CALL onTerminated()
         {
-            t_print("normally terminate this thread %d!\n", getIdentifier());
+            printf("normally terminate this thread %d!\n", getIdentifier());
         }
 public:
 
@@ -347,7 +347,7 @@ public:
         {
             if (isRunning())
             {
-                t_print("error: not terminated.\n");
+                printf("error: not terminated.\n");
             }
         }
 
@@ -399,7 +399,7 @@ public:
         {
             if (isRunning())
             {
-                t_print("error: not terminated.\n");
+                printf("error: not terminated.\n");
             }
         }
 
@@ -434,18 +434,18 @@ protected:
         }
     void SAL_CALL onTerminated()
         {
-            t_print("normally terminate this thread %d!\n", getIdentifier());
+            printf("normally terminate this thread %d!\n", getIdentifier());
         }
 public:
     ONoScheduleThread()
         {
-                t_print("new thread id %d!\n", getIdentifier());
+                printf("new thread id %d!\n", getIdentifier());
         }
     ~ONoScheduleThread()
         {
             if (isRunning())
             {
-                t_print("error: not terminated.\n");
+                printf("error: not terminated.\n");
             }
         }
 
@@ -478,7 +478,7 @@ protected:
         }
     void SAL_CALL onTerminated()
         {
-            // t_print("normally terminate this thread %d!\n", getIdentifier());
+            // printf("normally terminate this thread %d!\n", getIdentifier());
         }
 public:
 
@@ -486,7 +486,7 @@ public:
         {
             if (isRunning())
             {
-                // t_print("error: not terminated.\n");
+                // printf("error: not terminated.\n");
             }
         }
 
@@ -504,7 +504,7 @@ namespace osl_Thread
         // while on Windows, after createSuspended, the thread can not terminate, wait endlessly,
         // so here call resume at first, then call terminate.
 #ifdef WNT
-        t_print("resumeAndWaitThread\n");
+        printf("resumeAndWaitThread\n");
         _pThread->resume();
         ThreadHelper::thread_sleep_tenth_sec(1);
 #else
@@ -525,145 +525,123 @@ namespace osl_Thread
         _pThread->resume();
         ThreadHelper::thread_sleep_tenth_sec(1);
 #endif
-        t_print("#wait for join.\n");
+        printf("#wait for join.\n");
         _pThread->join();
     }
 /** Test of the osl::Thread::create method
  */
 
-    class create : public CppUnit::TestFixture
+    class create : public ::testing::Test
     {
     public:
 
         // initialise your test code values here.
-        void setUp()
+        void SetUp()
             {
             }
 
-        void tearDown()
+        void TearDown()
             {
             }
+    }; // class create
 
-        /** Simple create a thread.
 
-            Create a simple thread, it just does add 1 to value(which initialized 0),
-            if the thread run, the value should be 1.
-        */
-        void create_001()
-            {
-                myThread* newthread = new myThread();
-                sal_Bool bRes = newthread->create();
-                CPPUNIT_ASSERT_MESSAGE("Can not creates a new thread!\n", bRes == sal_True );
-
-                ThreadHelper::thread_sleep_tenth_sec(1);        // wait short
-                sal_Bool isRunning = newthread->isRunning();    // check if thread is running
-                /// wait for the new thread to assure it has run
-                ThreadHelper::thread_sleep_tenth_sec(3);
-                sal_Int32 nValue = newthread->getValue();
-                /// to assure the new thread has terminated
-                termAndJoinThread(newthread);
-                delete newthread;
-
-                t_print("   nValue = %d\n", nValue);
-                t_print("isRunning = %d\n", isRunning);
-
-                CPPUNIT_ASSERT_MESSAGE(
-                    "Creates a new thread",
-                    nValue >= 1 && isRunning == sal_True
-                    );
+    /** Simple create a thread.
 
-            }
+        Create a simple thread, it just does add 1 to value(which initialized 0),
+        if the thread run, the value should be 1.
+    */
+    TEST_F(create, create_001)
+        {
+            myThread* newthread = new myThread();
+            sal_Bool bRes = newthread->create();
+            ASSERT_TRUE(bRes == sal_True) << "Can not creates a new thread!\n";
 
-        /** only one running thread per instance, return false if create secondly
-         */
-        void create_002()
-            {
-                myThread* newthread = new myThread();
-                sal_Bool res1 = newthread->create();
-                sal_Bool res2 = newthread->create();
-                t_print("In non pro, an assertion should occurred. This behaviour is right.\n");
-                termAndJoinThread(newthread);
-                delete newthread;
-
-                CPPUNIT_ASSERT_MESSAGE(
-                    "Creates a new thread: can not create two threads per instance",
-                    res1 && !res2
-                    );
+            ThreadHelper::thread_sleep_tenth_sec(1);        // wait short
+            sal_Bool isRunning = newthread->isRunning();    // check if thread is running
+            /// wait for the new thread to assure it has run
+            ThreadHelper::thread_sleep_tenth_sec(3);
+            sal_Int32 nValue = newthread->getValue();
+            /// to assure the new thread has terminated
+            termAndJoinThread(newthread);
+            delete newthread;
 
-            }
+            printf("   nValue = %d\n", nValue);
+            printf("isRunning = %d\n", isRunning);
 
-        CPPUNIT_TEST_SUITE(create);
-        CPPUNIT_TEST(create_001);
-        CPPUNIT_TEST(create_002);
-        CPPUNIT_TEST_SUITE_END();
-    }; // class create
+            ASSERT_TRUE(nValue >= 1 && isRunning == sal_True) << "Creates a new thread";
 
+        }
+
+    /** only one running thread per instance, return false if create secondly
+     */
+    TEST_F(create, create_002)
+        {
+            myThread* newthread = new myThread();
+            sal_Bool res1 = newthread->create();
+            sal_Bool res2 = newthread->create();
+            printf("In non pro, an assertion should occured. This behaviour is right.\n");
+            termAndJoinThread(newthread);
+            delete newthread;
+
+            ASSERT_TRUE(res1 && !res2) << "Creates a new thread: can not create two threads per instance";
+
+        }
 
 
     /** Test of the osl::Thread::createSuspended method
     */
-    class createSuspended : public CppUnit::TestFixture
+    class createSuspended : public ::testing::Test
     {
     public:
         // initialise your test code values here.
-        void setUp()
+        void SetUp()
             {
             }
 
-        void tearDown()
+        void TearDown()
             {
             }
+    }; // class createSuspended
 
-        /** Create a suspended thread, use the same class as create_001
+    /** Create a suspended thread, use the same class as create_001
 
-            after create, wait enough time, check the value, if it's still the initial value, pass
-        */
-        void createSuspended_001()
-            {
-                myThread* newthread = new myThread();
-                sal_Bool bRes = newthread->createSuspended();
-                CPPUNIT_ASSERT_MESSAGE("Can not creates a new thread!", bRes == sal_True );
-
-                ThreadHelper::thread_sleep_tenth_sec(1);
-                sal_Bool isRunning = newthread->isRunning();
-                ThreadHelper::thread_sleep_tenth_sec(3);
-                sal_Int32 nValue = newthread->getValue();
+        after create, wait enough time, check the value, if it's still the initial value, pass
+    */
+    TEST_F(createSuspended, createSuspended_001)
+        {
+            myThread* newthread = new myThread();
+            sal_Bool bRes = newthread->createSuspended();
+            ASSERT_TRUE(bRes == sal_True) << "Can not creates a new thread!";
 
-                resumeAndWaitThread(newthread);
+            ThreadHelper::thread_sleep_tenth_sec(1);
+            sal_Bool isRunning = newthread->isRunning();
+            ThreadHelper::thread_sleep_tenth_sec(3);
+            sal_Int32 nValue = newthread->getValue();
 
-                termAndJoinThread(newthread);
-                delete newthread;
+            resumeAndWaitThread(newthread);
 
-                CPPUNIT_ASSERT_MESSAGE(
-                    "Creates a new suspended thread",
-                    nValue == 0 && isRunning
-                    );
-            }
+            termAndJoinThread(newthread);
+            delete newthread;
 
-        void createSuspended_002()
-            {
-                myThread* newthread = new myThread();
-                sal_Bool res1 = newthread->createSuspended();
-                sal_Bool res2 = newthread->createSuspended();
+            ASSERT_TRUE(nValue == 0 && isRunning) << "Creates a new suspended thread";
+        }
+    // LLA: Deadlocked!!!
+    TEST_F(createSuspended, createSuspended_002)
+        {
+            myThread* newthread = new myThread();
+            sal_Bool res1 = newthread->createSuspended();
+            sal_Bool res2 = newthread->createSuspended();
 
-                resumeAndWaitThread(newthread);
+            resumeAndWaitThread(newthread);
 
-                termAndJoinThread(newthread);
+            termAndJoinThread(newthread);
 
-                delete newthread;
+            delete newthread;
 
-                CPPUNIT_ASSERT_MESSAGE(
-                    "Creates a new thread: can not create two threads per instance",
-                    res1 && !res2
-                    );
-            }
+            ASSERT_TRUE(res1 && !res2) << "Creates a new thread: can not create two threads per instance";
+        }
 
-        CPPUNIT_TEST_SUITE(createSuspended);
-        CPPUNIT_TEST(createSuspended_001);
-        // LLA: Deadlocked!!!
-        CPPUNIT_TEST(createSuspended_002);
-        CPPUNIT_TEST_SUITE_END();
-    }; // class createSuspended
 
     /** when the count value equal to or more than 3, suspend the thread.
     */
@@ -683,436 +661,384 @@ namespace osl_Thread
 
     /** Test of the osl::Thread::suspend method
     */
-    class suspend : public CppUnit::TestFixture
+    class suspend : public ::testing::Test
     {
     public:
         // initialise your test code values here.
-        void setUp()
+        void SetUp()
             {
             }
 
-        void tearDown()
+        void TearDown()
             {
             }
+    }; // class suspend
 
-        /** Use a thread which has a flag added 1 every second
+    /** Use a thread which has a flag added 1 every second
 
-            ALGORITHM:
-            create the thread, after running special time, record value of flag, then suspend it,
-            wait a long time, check the flag, if it remains unchanged during suspending
-        */
-        void suspend_001()
-            {
-                OCountThread* aCountThread = new OCountThread();
-                sal_Bool bRes = aCountThread->create();
-                CPPUNIT_ASSERT_MESSAGE ( "Can't start thread!", bRes == sal_True );
-                // the thread run for some seconds, but not terminate
-                suspendCountThread( aCountThread );
+        ALGORITHM:
+        create the thread, after running special time, record value of flag, then suspend it,
+        wait a long time, check the flag, if it remains unchanged during suspending
+    */
+    TEST_F(suspend, suspend_001)
+        {
+            OCountThread* aCountThread = new OCountThread();
+            sal_Bool bRes = aCountThread->create();
+            ASSERT_TRUE(bRes == sal_True) << "Can't start thread!";
+            // the thread run for some seconds, but not terminate
+            suspendCountThread( aCountThread );
 
-                // the value just after calling suspend
-                sal_Int32 nValue = aCountThread->getValue();       // (2)
+            // the value just after calling suspend
+            sal_Int32 nValue = aCountThread->getValue();       // (2)
 
-                ThreadHelper::thread_sleep_tenth_sec(3);
+            ThreadHelper::thread_sleep_tenth_sec(3);
 
-                // the value after waiting 3 seconds
-                sal_Int32 nLaterValue = aCountThread->getValue();    // (3)
+            // the value after waiting 3 seconds
+            sal_Int32 nLaterValue = aCountThread->getValue();    // (3)
 
-                resumeAndWaitThread(aCountThread);
-                termAndJoinThread(aCountThread);
-                delete aCountThread;
+            resumeAndWaitThread(aCountThread);
+            termAndJoinThread(aCountThread);
+            delete aCountThread;
 
-                CPPUNIT_ASSERT_MESSAGE(
-                    "Suspend the thread",
-                    bRes == sal_True && nValue == nLaterValue
-                    );
+            ASSERT_TRUE(bRes == sal_True && nValue == nLaterValue) << "Suspend the thread";
 
-            }
-        /** suspend a thread in it's worker-function, the ALGORITHM is same as suspend_001
-             reason of deadlocked I think: no schedule can schedule other threads to go on excuting
-         */
-        void suspend_002()
+        }
+    /** suspend a thread in it's worker-function, the ALGORITHM is same as suspend_001
+         reason of deadlocked I think: no schedule can schedule other threads to go on excuting
+     */
+    TEST_F(suspend, suspend_002)
+        {
+#if 0
+            OSuspendThread* aThread = new OSuspendThread();
+            sal_Bool bRes = aThread->create();
+            ASSERT_TRUE(bRes == sal_True) << "Can't start thread!";
+            // first the thread run for some seconds, but not terminate
+            sal_Int32 nValue = 0;
+            //while (1)
+            //{
+            ThreadHelper::thread_sleep_tenth_sec(3);
+            nValue = aThread->getValue();    // (1)
+            printf(" getValue is %d !", nValue );
+            if (nValue >= 2)
             {
-                OSuspendThread* aThread = new OSuspendThread();
-                sal_Bool bRes = aThread->create();
-                CPPUNIT_ASSERT_MESSAGE ( "Can't start thread!", bRes == sal_True );
-                // first the thread run for some seconds, but not terminate
-                sal_Int32 nValue = 0;
-                //while (1)
-                //{
-                ThreadHelper::thread_sleep_tenth_sec(3);
-                nValue = aThread->getValue();    // (1)
-                t_print(" getValue is %d !", nValue );
-                if (nValue >= 2)
-                {
-                        aThread->setSuspend();
-                        //break;
-                }
-                //}
-                t_print(" after while!");
-                // the value just after calling suspend
-                nValue = aThread->getValue();       // (2)
-
-                ThreadHelper::thread_sleep_tenth_sec(3);
-                t_print(" after sleep!");
-                // the value after waiting 3 seconds
-                sal_Int32 nLaterValue = aThread->getValue();        // (3)
-
-                //resumeAndWaitThread(aThread);
-                aThread->resume();
-                termAndJoinThread(aThread);
-                delete aThread;
-
-                CPPUNIT_ASSERT_MESSAGE(
-                    "Suspend the thread",
-                    bRes == sal_True && nValue == nLaterValue
-                    );
+                    aThread->setSuspend();
+                    //break;
             }
+            //}
+            printf(" after while!");
+            // the value just after calling suspend
+            nValue = aThread->getValue();       // (2)
+
+            ThreadHelper::thread_sleep_tenth_sec(3);
+            printf(" after sleep!");
+            // the value after waiting 3 seconds
+            sal_Int32 nLaterValue = aThread->getValue();        // (3)
+
+            //resumeAndWaitThread(aThread);
+            aThread->resume();
+            termAndJoinThread(aThread);
+            delete aThread;
+
+            ASSERT_TRUE(bRes == sal_True && nValue == nLaterValue) << "Suspend the thread";
+#endif
+        }
 
-        CPPUNIT_TEST_SUITE(suspend);
-        CPPUNIT_TEST(suspend_001);
-        // LLA: Deadlocked!!!
-        // CPPUNIT_TEST(createSuspended_002);
-        CPPUNIT_TEST_SUITE_END();
-    }; // class suspend
 
     /** Test of the osl::Thread::resume method
     */
-    class resume : public CppUnit::TestFixture
+    class resume : public ::testing::Test
     {
     public:
         // initialise your test code values here.
-        void setUp()
+        void SetUp()
             {
             }
 
-        void tearDown()
+        void TearDown()
             {
             }
+    }; // class resume
 
-        /** check if the thread run samely as usual after suspend and resume
-
-            ALGORITHM:
-            compare the values before and after suspend, they should be same,
-            then compare values before and after resume, the difference should be same as the sleep seconds number
-        */
-        void resume_001()
-            {
-                OCountThread* pCountThread = new OCountThread();
-                sal_Bool bRes = pCountThread->create();
-                CPPUNIT_ASSERT_MESSAGE ( "Can't start thread!", bRes == sal_True );
+    /** check if the thread run samely as usual after suspend and resume
 
-                suspendCountThread(pCountThread);
+        ALGORITHM:
+        compare the values before and after suspend, they should be same,
+        then compare values before and after resume, the difference should be same as the sleep seconds number
+    */
+    TEST_F(resume, resume_001)
+        {
+            OCountThread* pCountThread = new OCountThread();
+            sal_Bool bRes = pCountThread->create();
+            ASSERT_TRUE(bRes == sal_True) << "Can't start thread!";
 
-                sal_Int32 nSuspendValue = pCountThread->getValue();  // (2)
-                // suspend for 3 seconds
-                ThreadHelper::thread_sleep_tenth_sec(3);
-                pCountThread->resume();
+            suspendCountThread(pCountThread);
 
-                ThreadHelper::thread_sleep_tenth_sec(3);
-                sal_Int32 nResumeValue = pCountThread->getValue();
+            sal_Int32 nSuspendValue = pCountThread->getValue();  // (2)
+            // suspend for 3 seconds
+            ThreadHelper::thread_sleep_tenth_sec(3);
+            pCountThread->resume();
 
-                ThreadHelper::thread_sleep_tenth_sec(3);
-                sal_Int32 nLaterValue = pCountThread->getValue();
+            ThreadHelper::thread_sleep_tenth_sec(3);
+            sal_Int32 nResumeValue = pCountThread->getValue();
 
-                termAndJoinThread(pCountThread);
-                delete pCountThread;
+            ThreadHelper::thread_sleep_tenth_sec(3);
+            sal_Int32 nLaterValue = pCountThread->getValue();
 
-                t_print("SuspendValue: %d\n", nSuspendValue);
-                t_print("ResumeValue:  %d\n", nResumeValue);
-                t_print("LaterValue:   %d\n", nLaterValue);
+            termAndJoinThread(pCountThread);
+            delete pCountThread;
 
-                /* LLA: this assumption is no longer relevant: nResumeValue ==  nSuspendValue && */
-                CPPUNIT_ASSERT_MESSAGE(
-                    "Suspend then resume the thread",
-                    nLaterValue >= 9 &&
-                    nResumeValue > nSuspendValue &&
-                    nLaterValue > nResumeValue
-                    );
+            printf("SuspendValue: %d\n", nSuspendValue);
+            printf("ResumeValue:  %d\n", nResumeValue);
+            printf("LaterValue:   %d\n", nLaterValue);
 
-            }
+            /* LLA: this assumption is no longer relevant: nResumeValue ==  nSuspendValue && */
+            ASSERT_TRUE(nLaterValue >= 9 &&
+                nResumeValue > nSuspendValue &&
+                nLaterValue > nResumeValue) << "Suspend then resume the thread";
 
-        /** Create a suspended thread then resume, check if the thread has run
-         */
-        void resume_002()
-            {
-                myThread* newthread = new myThread();
-                sal_Bool bRes = newthread->createSuspended();
-                CPPUNIT_ASSERT_MESSAGE ( "Can't create thread!", bRes == sal_True );
+        }
 
-                newthread->resume();
-                ThreadHelper::thread_sleep_tenth_sec(2);
-                sal_Int32 nValue = newthread->getValue();
+    /** Create a suspended thread then resume, check if the thread has run
+     */
+    TEST_F(resume, resume_002)
+        {
+            myThread* newthread = new myThread();
+            sal_Bool bRes = newthread->createSuspended();
+            ASSERT_TRUE(bRes == sal_True) << "Can't create thread!";
 
-                termAndJoinThread(newthread);
-                delete newthread;
+            newthread->resume();
+            ThreadHelper::thread_sleep_tenth_sec(2);
+            sal_Int32 nValue = newthread->getValue();
 
-                t_print("   nValue = %d\n", nValue);
+            termAndJoinThread(newthread);
+            delete newthread;
 
-                CPPUNIT_ASSERT_MESSAGE(
-                    "Creates a suspended thread, then resume",
-                    nValue >= 1
-                    );
-            }
+            printf("   nValue = %d\n", nValue);
 
-        CPPUNIT_TEST_SUITE(resume);
-        CPPUNIT_TEST(resume_001);
-        CPPUNIT_TEST(resume_002);
-        CPPUNIT_TEST_SUITE_END();
-    }; // class resume
+            ASSERT_TRUE(nValue >= 1) << "Creates a suspended thread, then resume";
+        }
 
     /** Test of the osl::Thread::terminate method
     */
-    class terminate : public CppUnit::TestFixture
+    class terminate : public ::testing::Test
     {
     public:
         // initialise your test code values here.
-        void setUp()
+        void SetUp()
             {
             }
 
-        void tearDown()
+        void TearDown()
             {
             }
+    }; // class terminate
 
-        /** Check after call terminate if the running thread running go on executing
+    /** Check after call terminate if the running thread running go on executing
 
-            ALGORITHM:
-            before and after call terminate, the values should be the same
-        */
-        void terminate_001()
-            {
-                OCountThread* aCountThread = new OCountThread();
-                sal_Bool bRes = aCountThread->create();
-                CPPUNIT_ASSERT_MESSAGE ( "Can't start thread!", bRes == sal_True );
-
-                ThreadHelper::thread_sleep_tenth_sec(2);
-                sal_Int32 nValue = aCountThread->getValue();
-                aCountThread->terminate();
-                ThreadHelper::thread_sleep_tenth_sec(2);
-                sal_Int32 nLaterValue = aCountThread->getValue();
-
-                // isRunning should be false after terminate
-                sal_Bool isRunning = aCountThread->isRunning();
-                aCountThread->join();
-                delete aCountThread;
-
-                t_print("     nValue = %d\n", nValue);
-                t_print("nLaterValue = %d\n", nLaterValue);
-
-                CPPUNIT_ASSERT_MESSAGE(
-                    "Terminate the thread",
-                    isRunning == sal_False && nLaterValue >= nValue
-                    );
-            }
-        /** Check if a suspended thread will terminate after call terminate, different on w32 and on UNX
-         */
-        void terminate_002()
-            {
-                OCountThread* aCountThread = new OCountThread();
-                sal_Bool bRes = aCountThread->create();
-                CPPUNIT_ASSERT_MESSAGE ( "Can't start thread!", bRes == sal_True );
+        ALGORITHM:
+        before and after call terminate, the values should be the same
+    */
+    TEST_F(terminate, terminate_001)
+        {
+            OCountThread* aCountThread = new OCountThread();
+            sal_Bool bRes = aCountThread->create();
+            ASSERT_TRUE(bRes == sal_True) << "Can't start thread!";
 
-                ThreadHelper::thread_sleep_tenth_sec(1);
-                suspendCountThread(aCountThread);
-                sal_Int32 nValue = aCountThread->getValue();
+            ThreadHelper::thread_sleep_tenth_sec(2);
+            sal_Int32 nValue = aCountThread->getValue();
+            aCountThread->terminate();
+            ThreadHelper::thread_sleep_tenth_sec(2);
+            sal_Int32 nLaterValue = aCountThread->getValue();
+
+            // isRunning should be false after terminate
+            sal_Bool isRunning = aCountThread->isRunning();
+            aCountThread->join();
+            delete aCountThread;
 
-                // seems a suspended thread can not be terminated on W32, while on Solaris can
-                resumeAndWaitThread(aCountThread);
+            printf("     nValue = %d\n", nValue);
+            printf("nLaterValue = %d\n", nLaterValue);
 
-                ThreadHelper::thread_sleep_tenth_sec(2);
+            ASSERT_TRUE(isRunning == sal_False && nLaterValue >= nValue) << "Terminate the thread";
+        }
+    /** Check if a suspended thread will terminate after call terminate, different on w32 and on UNX
+     */
+    TEST_F(terminate, terminate_002)
+        {
+            OCountThread* aCountThread = new OCountThread();
+            sal_Bool bRes = aCountThread->create();
+            ASSERT_TRUE(bRes == sal_True) << "Can't start thread!";
 
-                termAndJoinThread(aCountThread);
-                sal_Int32 nLaterValue = aCountThread->getValue();
-                delete aCountThread;
+            ThreadHelper::thread_sleep_tenth_sec(1);
+            suspendCountThread(aCountThread);
+            sal_Int32 nValue = aCountThread->getValue();
 
-                t_print("     nValue = %d\n", nValue);
-                t_print("nLaterValue = %d\n", nLaterValue);
+            // seems a suspended thread can not be terminated on W32, while on Solaris can
+            resumeAndWaitThread(aCountThread);
 
-                CPPUNIT_ASSERT_MESSAGE(
-                    "Suspend then resume the thread",
-                    nLaterValue > nValue );
-            }
+            ThreadHelper::thread_sleep_tenth_sec(2);
+
+            termAndJoinThread(aCountThread);
+            sal_Int32 nLaterValue = aCountThread->getValue();
+            delete aCountThread;
+
+            printf("     nValue = %d\n", nValue);
+            printf("nLaterValue = %d\n", nLaterValue);
+
+            ASSERT_TRUE(nLaterValue > nValue) << "Suspend then resume the thread";
+        }
 
-        CPPUNIT_TEST_SUITE(terminate);
-        CPPUNIT_TEST(terminate_001);
-        CPPUNIT_TEST(terminate_002);
-        CPPUNIT_TEST_SUITE_END();
-    }; // class terminate
 
     /** Test of the osl::Thread::join method
     */
-    class join : public CppUnit::TestFixture
+    class join : public ::testing::Test
     {
     public:
         // initialise your test code values here.
-        void setUp()
+        void SetUp()
             {
             }
 
-        void tearDown()
+        void TearDown()
             {
             }
+    }; // class join
 
-        /** Check after call terminate if the thread running function will not go on executing
+    /** Check after call terminate if the thread running function will not go on executing
 
-            the next statement after join will not exec before the thread terminate
-            ALGORITHM:
-            recode system time at the beginning of the thread run, call join, then record system time again,
-            the difference of the two time should be equal or more than 20 seconds, the CountThead normally terminate
-        */
-        void join_001()
-            {
-                OCountThread *aCountThread = new OCountThread();
-                sal_Bool bRes = aCountThread->create();
-                CPPUNIT_ASSERT_MESSAGE ( "Can't start thread!", bRes == sal_True );
-
-                StopWatch aStopWatch;
-                aStopWatch.start();
-                // TimeValue aTimeVal_befor;
-                // osl_getSystemTime( &aTimeVal_befor );
-                //t_print("#join:the system time is %d,%d\n", pTimeVal_befor->Seconds,pTimeVal_befor->Nanosec);
-
-                aCountThread->join();
-
-                //the below line will be executed after aCountThread terminate
-                // TimeValue aTimeVal_after;
-                // osl_getSystemTime( &aTimeVal_after );
-                aStopWatch.stop();
-                // sal_uInt32 nSec  = aTimeVal_after.Seconds - aTimeVal_befor.Seconds;
-                double nSec = aStopWatch.getSeconds();
-                t_print("join_001 nSec=%f\n", nSec);
-                delete aCountThread;
-
-                CPPUNIT_ASSERT_MESSAGE(
-                    "Join the thread: after the thread terminate",
-                    nSec >= 2
-                    );
+        the next statement after join will not exec before the thread terminate
+        ALGORITHM:
+        recode system time at the beginning of the thread run, call join, then record system time again,
+        the difference of the two time should be equal or more than 20 seconds, the CountThead normally terminate
+    */
+    TEST_F(join, join_001)
+        {
+            OCountThread *aCountThread = new OCountThread();
+            sal_Bool bRes = aCountThread->create();
+            ASSERT_TRUE(bRes == sal_True) << "Can't start thread!";
 
-            }
-        /** after terminated by another thread, join exited immediately
+            StopWatch aStopWatch;
+            aStopWatch.start();
+            // TimeValue aTimeVal_befor;
+            // osl_getSystemTime( &aTimeVal_befor );
+            //printf("#join:the system time is %d,%d\n", pTimeVal_befor->Seconds,pTimeVal_befor->Nanosec);
 
-            ALGORITHM:
-            terminate the thread when value>=3, call join, check the beginning time and time after join,
-            the difference should be 3 seconds, join costs little time
-        */
-        void join_002()
-            {
-                OCountThread *aCountThread = new OCountThread();
-                sal_Bool bRes = aCountThread->create();
-                CPPUNIT_ASSERT_MESSAGE ( "Can't start thread!", bRes == sal_True );
-
-                //record the time when the running begin
-                // TimeValue aTimeVal_befor;
-                // osl_getSystemTime( &aTimeVal_befor );
-                StopWatch aStopWatch;
-                aStopWatch.start();
-
-                ThreadHelper::thread_sleep_tenth_sec(10);
-                termAndJoinThread(aCountThread);
-
-                //the below line will be executed after aCountThread terminate
-                // TimeValue aTimeVal_after;
-                // osl_getSystemTime( &aTimeVal_after );
-                // sal_uInt32 nSec  = aTimeVal_after.Seconds - aTimeVal_befor.Seconds;
-                aStopWatch.stop();
-                double nSec = aStopWatch.getSeconds();
-                t_print("join_002 nSec=%f\n", nSec);
-
-                delete aCountThread;
-                CPPUNIT_ASSERT_MESSAGE(
-                    "Join the thread: after thread terminate by another thread",
-                    nSec >= 1
-                    );
-            }
+            aCountThread->join();
 
-        CPPUNIT_TEST_SUITE(join);
-        CPPUNIT_TEST(join_001);
-        CPPUNIT_TEST(join_002);
-        CPPUNIT_TEST_SUITE_END();
-    }; // class join
+            //the below line will be executed after aCountThread terminate
+            // TimeValue aTimeVal_after;
+            // osl_getSystemTime( &aTimeVal_after );
+            aStopWatch.stop();
+            // sal_uInt32 nSec  = aTimeVal_after.Seconds - aTimeVal_befor.Seconds;
+            double nSec = aStopWatch.getSeconds();
+            printf("join_001 nSec=%f\n", nSec);
+            delete aCountThread;
+
+            ASSERT_TRUE(nSec >= 2) << "Join the thread: after the thread terminate";
+
+        }
+    /** after terminated by another thread, join exited immediately
+
+        ALGORITHM:
+        terminate the thread when value>=3, call join, check the beginning time and time after join,
+        the difference should be 3 seconds, join costs little time
+    */
+    TEST_F(join, join_002)
+        {
+            OCountThread *aCountThread = new OCountThread();
+            sal_Bool bRes = aCountThread->create();
+            ASSERT_TRUE(bRes == sal_True) << "Can't start thread!";
+
+            //record the time when the running begin
+            // TimeValue aTimeVal_befor;
+            // osl_getSystemTime( &aTimeVal_befor );
+            StopWatch aStopWatch;
+            aStopWatch.start();
+
+            ThreadHelper::thread_sleep_tenth_sec(10);
+            termAndJoinThread(aCountThread);
+
+            //the below line will be executed after aCountThread terminate
+            // TimeValue aTimeVal_after;
+            // osl_getSystemTime( &aTimeVal_after );
+            // sal_uInt32 nSec  = aTimeVal_after.Seconds - aTimeVal_befor.Seconds;
+            aStopWatch.stop();
+            double nSec = aStopWatch.getSeconds();
+            printf("join_002 nSec=%f\n", nSec);
+
+            delete aCountThread;
+            ASSERT_TRUE(nSec >= 1) << "Join the thread: after thread terminate by another thread";
+        }
 
     /** Test of the osl::Thread::isRunning method
     */
-    class isRunning : public CppUnit::TestFixture
+    class isRunning : public ::testing::Test
     {
     public:
         // initialise your test code values here.
-        void setUp()
+        void SetUp()
             {
             }
 
-        void tearDown()
+        void TearDown()
             {
             }
+    }; // class isRunning
 
-        /**
-         */
-        void isRunning_001()
-            {
-                OCountThread *aCountThread = new OCountThread();
-                sal_Bool bRes = aCountThread->create();
-                CPPUNIT_ASSERT_MESSAGE ( "Can't start thread!", bRes == sal_True );
-
-                sal_Bool bRun = aCountThread->isRunning();
-
-                ThreadHelper::thread_sleep_tenth_sec(2);
-                termAndJoinThread(aCountThread);
-                sal_Bool bTer = aCountThread->isRunning();
-                delete aCountThread;
+    /**
+     */
+    TEST_F(isRunning, isRunning_001)
+        {
+            OCountThread *aCountThread = new OCountThread();
+            sal_Bool bRes = aCountThread->create();
+            ASSERT_TRUE(bRes == sal_True) << "Can't start thread!";
 
-                CPPUNIT_ASSERT_MESSAGE(
-                    "Test isRunning",
-                    bRun == sal_True && bTer == sal_False
-                    );
-            }
-        /** check the value of isRunning when suspending and after resume
-         */
-        void isRunning_002()
-            {
-                OCountThread *aCountThread = new OCountThread();
-                sal_Bool bRes = aCountThread->create();
-                CPPUNIT_ASSERT_MESSAGE ( "Can't start thread!", bRes == sal_True );
-
-                // sal_Bool bRunning = aCountThread->isRunning();
-                // sal_Int32 nValue = 0;
-                suspendCountThread(aCountThread);
-
-                sal_Bool bRunning_sup = aCountThread->isRunning();
-                ThreadHelper::thread_sleep_tenth_sec(2);
-                aCountThread->resume();
-                ThreadHelper::thread_sleep_tenth_sec(2);
-                sal_Bool bRunning_res = aCountThread->isRunning();
-                termAndJoinThread(aCountThread);
-                sal_Bool bRunning_ter = aCountThread->isRunning();
-                delete aCountThread;
-
-                CPPUNIT_ASSERT_MESSAGE(
-                    "Test isRunning",
-                    bRes == sal_True &&
-                    bRunning_sup == sal_True &&
-                    bRunning_res == sal_True &&
-                    bRunning_ter == sal_False
-                    );
+            sal_Bool bRun = aCountThread->isRunning();
 
-            }
+            ThreadHelper::thread_sleep_tenth_sec(2);
+            termAndJoinThread(aCountThread);
+            sal_Bool bTer = aCountThread->isRunning();
+            delete aCountThread;
 
-        CPPUNIT_TEST_SUITE(isRunning);
-        CPPUNIT_TEST(isRunning_001);
-        CPPUNIT_TEST(isRunning_002);
-        CPPUNIT_TEST_SUITE_END();
-    }; // class isRunning
+            ASSERT_TRUE(bRun == sal_True && bTer == sal_False) << "Test isRunning";
+        }
+    /** check the value of isRunning when suspending and after resume
+     */
+    TEST_F(isRunning, isRunning_002)
+        {
+            OCountThread *aCountThread = new OCountThread();
+            sal_Bool bRes = aCountThread->create();
+            ASSERT_TRUE(bRes == sal_True) << "Can't start thread!";
+
+            // sal_Bool bRunning = aCountThread->isRunning();
+            // sal_Int32 nValue = 0;
+            suspendCountThread(aCountThread);
+
+            sal_Bool bRunning_sup = aCountThread->isRunning();
+            ThreadHelper::thread_sleep_tenth_sec(2);
+            aCountThread->resume();
+            ThreadHelper::thread_sleep_tenth_sec(2);
+            sal_Bool bRunning_res = aCountThread->isRunning();
+            termAndJoinThread(aCountThread);
+            sal_Bool bRunning_ter = aCountThread->isRunning();
+            delete aCountThread;
+
+            ASSERT_TRUE(bRes == sal_True &&
+                bRunning_sup == sal_True &&
+                bRunning_res == sal_True &&
+                bRunning_ter == sal_False) << "Test isRunning";
 
+        }
 
     /// check osl::Thread::setPriority
-    class setPriority : public CppUnit::TestFixture
+    class setPriority : public ::testing::Test
     {
     public:
         // initialise your test code values here.
-        void setUp()
+        void SetUp()
             {
             }
 
-        void tearDown()
+        void TearDown()
             {
             }
 
@@ -1179,10 +1105,10 @@ namespace osl_Thread
                 nValueNormal2 = p2Thread->getValue();
 
                 rtl::OString sPrio = getPrioName(_aPriority);
-                t_print("After 10 tenth seconds\n");
+                printf("After 10 tenth seconds\n");
 
-                t_print("nValue in %s Prio Thread is  %d\n",sPrio.getStr(), nValueNormal);
-                t_print("nValue in %s Prio Thread is %d\n", sPrio.getStr(), nValueNormal2);
+                printf("nValue in %s Prio Thread is  %d\n",sPrio.getStr(), nValueNormal);
+                printf("nValue in %s Prio Thread is %d\n", sPrio.getStr(), nValueNormal2);
 
                 // ThreadHelper::thread_sleep_tenth_sec(1);
                 pThread->join();
@@ -1193,618 +1119,556 @@ namespace osl_Thread
 
                 sal_Int32 nDelta = abs(nValueNormal - nValueNormal2);
                 double nQuotient = std::max(nValueNormal, nValueNormal2);
-                CPPUNIT_ASSERT_MESSAGE(
-                    "Quotient is zero, which means, there exist no right values.",
-                    nQuotient != 0
-                    );
+                ASSERT_TRUE(nQuotient != 0) << "Quotient is zero, which means, there exist no right values.";
                 double nDeltaPercent = nDelta / nQuotient * 100;
 
-                t_print("Delta value %d, percent %f\n",nDelta, nDeltaPercent);
+                printf("Delta value %d, percent %f\n",nDelta, nDeltaPercent);
 
                 // LLA: it's not a bug if the current OS is not able to handle thread scheduling right and good.
                 // like Windows XP
-                // LLA: CPPUNIT_ASSERT_MESSAGE(
-                // LLA:     "Run 2 normal threads, the count diff more than 5 percent.",
-                // LLA:     nDeltaPercent <= 5
-                // LLA:     );
-            }
-
-        void setPriority_001_1()
-            {
-                check2Threads(osl_Thread_PriorityHighest);
-            }
-        void setPriority_001_2()
-            {
-                check2Threads(osl_Thread_PriorityAboveNormal);
+                // LLA: ASSERT_TRUE(// LLA:     nDeltaPercent <= 5
+                // LLA:) << // LLA:     "Run 2 normal threads, the count diff more than 5 percent.";
             }
-        void setPriority_001_3()
-            {
-                check2Threads(osl_Thread_PriorityNormal);
-            }
-        void setPriority_001_4()
-            {
-                check2Threads(osl_Thread_PriorityBelowNormal);
-            }
-        void setPriority_001_5()
-            {
-                check2Threads(osl_Thread_PriorityLowest);
-            }
-
-        void setPriority_002()
-            {
-                // initial 5 threads with different priorities
-
-                OAddThread aHighestThread;
-                OAddThread aAboveNormalThread;
-                OAddThread aNormalThread;
-                //OAddThread *aBelowNormalThread = new OAddThread();
-                //OAddThread *aLowestThread = new OAddThread();
-
-                //Create them and start running at the same time
-                aHighestThread.createSuspended();
-                aHighestThread.setPriority(osl_Thread_PriorityHighest);
-
-                aAboveNormalThread.createSuspended();
-                aAboveNormalThread.setPriority(osl_Thread_PriorityAboveNormal);
-
-                aNormalThread.createSuspended();
-                aNormalThread.setPriority(osl_Thread_PriorityNormal);
-                /*aBelowNormalThread->create();
-                  aBelowNormalThread->setPriority(osl_Thread_PriorityBelowNormal);
-                  aLowestThread->create();
-                  aLowestThread->setPriority(osl_Thread_PriorityLowest);
-                */
-
-                aHighestThread.resume();
-                aAboveNormalThread.resume();
-                aNormalThread.resume();
-
-                ThreadHelper::thread_sleep_tenth_sec(5);
-
-                aHighestThread.suspend();
-                aAboveNormalThread.suspend();
-                aNormalThread.suspend();
-
-                termAndJoinThread(&aNormalThread);
-                termAndJoinThread(&aAboveNormalThread);
-                termAndJoinThread(&aHighestThread);
-                //aBelowNormalThread->terminate();
-                //aLowestThread->terminate();
-
-                sal_Int32 nValueHighest = 0;
-                nValueHighest = aHighestThread.getValue();
+    }; // class setPriority
 
-                sal_Int32 nValueAboveNormal = 0;
-                nValueAboveNormal = aAboveNormalThread.getValue();
+    TEST_F(setPriority, setPriority_001_1)
+        {
+            check2Threads(osl_Thread_PriorityHighest);
+        }
+    TEST_F(setPriority, setPriority_001_2)
+        {
+            check2Threads(osl_Thread_PriorityAboveNormal);
+        }
+    TEST_F(setPriority, setPriority_001_3)
+        {
+            check2Threads(osl_Thread_PriorityNormal);
+        }
+    TEST_F(setPriority, setPriority_001_4)
+        {
+            check2Threads(osl_Thread_PriorityBelowNormal);
+        }
+    TEST_F(setPriority, setPriority_001_5)
+        {
+            check2Threads(osl_Thread_PriorityLowest);
+        }
 
-                sal_Int32 nValueNormal = 0;
-                nValueNormal = aNormalThread.getValue();
-
-                // sal_Int32 nValueBelowNormal = 0;
-                //nValueBelowNormal = aBelowNormalThread->getValue();
-                // sal_Int32 nValueLowest = 0;
-                //nValueLowest = aLowestThread->getValue();
-                t_print("After 10 tenth seconds\n");
-                t_print("nValue in Highest Prio Thread is %d\n",nValueHighest);
-                t_print("nValue in AboveNormal Prio Thread is %d\n",nValueAboveNormal);
-                t_print("nValue in Normal Prio Thread is %d\n",nValueNormal);
-
-                // LLA: this is not a save test, so we only check if all values not zero
-                // LLA: CPPUNIT_ASSERT_MESSAGE(
-                // LLA:     "SetPriority",
-                // LLA:     nValueHighest >= nValueAboveNormal &&
-                // LLA:     nValueAboveNormal >= nValueNormal &&
-                // LLA:     nValueNormal > 0
-                // LLA:     );
+#ifndef SOLARIS
+    TEST_F(setPriority, setPriority_002)
+        {
+            // initial 5 threads with different priorities
+
+            OAddThread aHighestThread;
+            OAddThread aAboveNormalThread;
+            OAddThread aNormalThread;
+            //OAddThread *aBelowNormalThread = new OAddThread();
+            //OAddThread *aLowestThread = new OAddThread();
+
+            //Create them and start running at the same time
+            aHighestThread.createSuspended();
+            aHighestThread.setPriority(osl_Thread_PriorityHighest);
+
+            aAboveNormalThread.createSuspended();
+            aAboveNormalThread.setPriority(osl_Thread_PriorityAboveNormal);
+
+            aNormalThread.createSuspended();
+            aNormalThread.setPriority(osl_Thread_PriorityNormal);
+            /*aBelowNormalThread->create();
+              aBelowNormalThread->setPriority(osl_Thread_PriorityBelowNormal);
+              aLowestThread->create();
+              aLowestThread->setPriority(osl_Thread_PriorityLowest);
+            */
+
+            aHighestThread.resume();
+            aAboveNormalThread.resume();
+            aNormalThread.resume();
+
+            ThreadHelper::thread_sleep_tenth_sec(5);
+
+            aHighestThread.suspend();
+            aAboveNormalThread.suspend();
+            aNormalThread.suspend();
+
+            termAndJoinThread(&aNormalThread);
+            termAndJoinThread(&aAboveNormalThread);
+            termAndJoinThread(&aHighestThread);
+            //aBelowNormalThread->terminate();
+            //aLowestThread->terminate();
+
+            sal_Int32 nValueHighest = 0;
+            nValueHighest = aHighestThread.getValue();
+
+            sal_Int32 nValueAboveNormal = 0;
+            nValueAboveNormal = aAboveNormalThread.getValue();
+
+            sal_Int32 nValueNormal = 0;
+            nValueNormal = aNormalThread.getValue();
+
+            // sal_Int32 nValueBelowNormal = 0;
+            //nValueBelowNormal = aBelowNormalThread->getValue();
+            // sal_Int32 nValueLowest = 0;
+            //nValueLowest = aLowestThread->getValue();
+            printf("After 10 tenth seconds\n");
+            printf("nValue in Highest Prio Thread is %d\n",nValueHighest);
+            printf("nValue in AboveNormal Prio Thread is %d\n",nValueAboveNormal);
+            printf("nValue in Normal Prio Thread is %d\n",nValueNormal);
+
+            // LLA: this is not a save test, so we only check if all values not zero
+            // LLA: ASSERT_TRUE(// LLA:     nValueHighest >= nValueAboveNormal &&
+            // LLA:     nValueAboveNormal >= nValueNormal &&
+            // LLA:     nValueNormal > 0
+            // LLA:) << // LLA:     "SetPriority";
 
 // LLA: windows let starve threads with lower priority
 #ifndef WNT
-                CPPUNIT_ASSERT_MESSAGE(
-                    "SetPriority",
-                    nValueHighest     > 0 &&
-                    nValueAboveNormal > 0 &&
-                    nValueNormal > 0
-                    );
+            ASSERT_TRUE(nValueHighest     > 0 &&
+                nValueAboveNormal > 0 &&
+                nValueNormal > 0) << "SetPriority";
 #endif
-            }
-
-        void setPriority_003()
-            {
-                // initial 5 threads with different priorities
-                OAddThread *pHighestThread = new OAddThread();
-                OAddThread *pAboveNormalThread = new OAddThread();
-                OAddThread *pNormalThread = new OAddThread();
-                OAddThread *pBelowNormalThread = new OAddThread();
-                OAddThread *pLowestThread = new OAddThread();
-
-                //Create them and start running at the same time
-                pHighestThread->createSuspended();
-                pHighestThread->setPriority(osl_Thread_PriorityHighest);
-
-                pAboveNormalThread->createSuspended();
-                pAboveNormalThread->setPriority(osl_Thread_PriorityAboveNormal);
-
-                pNormalThread->createSuspended();
-                pNormalThread->setPriority(osl_Thread_PriorityNormal);
-
-                pBelowNormalThread->createSuspended();
-                pBelowNormalThread->setPriority(osl_Thread_PriorityBelowNormal);
-
-                pLowestThread->createSuspended();
-                pLowestThread->setPriority(osl_Thread_PriorityLowest);
-
-                pHighestThread->resume();
-                pAboveNormalThread->resume();
-                pNormalThread->resume();
-                pBelowNormalThread->resume();
-                pLowestThread->resume();
-
-                ThreadHelper::thread_sleep_tenth_sec(5);
-
-                pHighestThread->suspend();
-                pAboveNormalThread->suspend();
-                pNormalThread->suspend();
-                pBelowNormalThread->suspend();
-                pLowestThread->suspend();
-
-                termAndJoinThread(pHighestThread);
-                termAndJoinThread(pAboveNormalThread);
-                termAndJoinThread(pNormalThread);
-                termAndJoinThread(pBelowNormalThread);
-                termAndJoinThread(pLowestThread);
-
-                sal_Int32 nValueHighest = 0;
-                nValueHighest = pHighestThread->getValue();
-
-                sal_Int32 nValueAboveNormal = 0;
-                nValueAboveNormal = pAboveNormalThread->getValue();
+        }
 
-                sal_Int32 nValueNormal = 0;
-                nValueNormal = pNormalThread->getValue();
-
-                sal_Int32 nValueBelowNormal = 0;
-                nValueBelowNormal = pBelowNormalThread->getValue();
-
-                sal_Int32 nValueLowest = 0;
-                nValueLowest = pLowestThread->getValue();
-
-                t_print("After 10 tenth seconds\n");
-                t_print("nValue in Highest Prio Thread is     %d\n",nValueHighest);
-                t_print("nValue in AboveNormal Prio Thread is %d\n",nValueAboveNormal);
-                t_print("nValue in Normal Prio Thread is      %d\n",nValueNormal);
-                t_print("nValue in BelowNormal Prio Thread is %d\n",nValueBelowNormal);
-                t_print("nValue in Lowest Prio Thread is      %d\n",nValueLowest);
-
-                delete pHighestThread;
-                delete pAboveNormalThread;
-                delete pNormalThread;
-                delete pBelowNormalThread;
-                delete pLowestThread;
-
-                // LLA: this is not a save test, so we only check if all values not zero
-                // LLA: CPPUNIT_ASSERT_MESSAGE(
-                // LLA:     "SetPriority",
-                // LLA:     nValueHighest > nValueAboveNormal &&
-                // LLA:     nValueAboveNormal > nValueNormal &&
-                // LLA:     nValueNormal > nValueBelowNormal &&
-                // LLA:     nValueBelowNormal > nValueLowest &&
-                // LLA:     nValueLowest > 0
-                // LLA:     );
+    TEST_F(setPriority, setPriority_003)
+        {
+            // initial 5 threads with different priorities
+            OAddThread *pHighestThread = new OAddThread();
+            OAddThread *pAboveNormalThread = new OAddThread();
+            OAddThread *pNormalThread = new OAddThread();
+            OAddThread *pBelowNormalThread = new OAddThread();
+            OAddThread *pLowestThread = new OAddThread();
+
+            //Create them and start running at the same time
+            pHighestThread->createSuspended();
+            pHighestThread->setPriority(osl_Thread_PriorityHighest);
+
+            pAboveNormalThread->createSuspended();
+            pAboveNormalThread->setPriority(osl_Thread_PriorityAboveNormal);
+
+            pNormalThread->createSuspended();
+            pNormalThread->setPriority(osl_Thread_PriorityNormal);
+
+            pBelowNormalThread->createSuspended();
+            pBelowNormalThread->setPriority(osl_Thread_PriorityBelowNormal);
+
+            pLowestThread->createSuspended();
+            pLowestThread->setPriority(osl_Thread_PriorityLowest);
+
+            pHighestThread->resume();
+            pAboveNormalThread->resume();
+            pNormalThread->resume();
+            pBelowNormalThread->resume();
+            pLowestThread->resume();
+
+            ThreadHelper::thread_sleep_tenth_sec(5);
+
+            pHighestThread->suspend();
+            pAboveNormalThread->suspend();
+            pNormalThread->suspend();
+            pBelowNormalThread->suspend();
+            pLowestThread->suspend();
+
+            termAndJoinThread(pHighestThread);
+            termAndJoinThread(pAboveNormalThread);
+            termAndJoinThread(pNormalThread);
+            termAndJoinThread(pBelowNormalThread);
+            termAndJoinThread(pLowestThread);
+
+            sal_Int32 nValueHighest = 0;
+            nValueHighest = pHighestThread->getValue();
+
+            sal_Int32 nValueAboveNormal = 0;
+            nValueAboveNormal = pAboveNormalThread->getValue();
+
+            sal_Int32 nValueNormal = 0;
+            nValueNormal = pNormalThread->getValue();
+
+            sal_Int32 nValueBelowNormal = 0;
+            nValueBelowNormal = pBelowNormalThread->getValue();
+
+            sal_Int32 nValueLowest = 0;
+            nValueLowest = pLowestThread->getValue();
+
+            printf("After 10 tenth seconds\n");
+            printf("nValue in Highest Prio Thread is     %d\n",nValueHighest);
+            printf("nValue in AboveNormal Prio Thread is %d\n",nValueAboveNormal);
+            printf("nValue in Normal Prio Thread is      %d\n",nValueNormal);
+            printf("nValue in BelowNormal Prio Thread is %d\n",nValueBelowNormal);
+            printf("nValue in Lowest Prio Thread is      %d\n",nValueLowest);
+
+            delete pHighestThread;
+            delete pAboveNormalThread;
+            delete pNormalThread;
+            delete pBelowNormalThread;
+            delete pLowestThread;
+
+            // LLA: this is not a save test, so we only check if all values not zero
+            // LLA: ASSERT_TRUE(// LLA:     nValueHighest > nValueAboveNormal &&
+            // LLA:     nValueAboveNormal > nValueNormal &&
+            // LLA:     nValueNormal > nValueBelowNormal &&
+            // LLA:     nValueBelowNormal > nValueLowest &&
+            // LLA:     nValueLowest > 0
+            // LLA:) << // LLA:     "SetPriority";
 
 // LLA: windows let starve threads with lower priority
 #ifndef WNT
-                CPPUNIT_ASSERT_MESSAGE(
-                    "SetPriority",
-                    nValueHighest     > 0 &&
-                    nValueAboveNormal > 0 &&
-                    nValueNormal      > 0 &&
-                    nValueBelowNormal > 0 &&
-                    nValueLowest      > 0
-                    );
+            ASSERT_TRUE(nValueHighest     > 0 &&
+                nValueAboveNormal > 0 &&
+                nValueNormal      > 0 &&
+                nValueBelowNormal > 0 &&
+                nValueLowest      > 0) << "SetPriority";
 #endif
-            }
-
-        void setPriority_004()
-            {
-                // initial 5 threads with different priorities
-                // OAddThread *pHighestThread = new OAddThread();
-                OAddThread *pAboveNormalThread = new OAddThread();
-                OAddThread *pNormalThread = new OAddThread();
-                OAddThread *pBelowNormalThread = new OAddThread();
-                OAddThread *pLowestThread = new OAddThread();
-
-                //Create them and start running at the same time
-                // pHighestThread->createSuspended();
-                // pHighestThread->setPriority(osl_Thread_PriorityHighest);
-
-                pAboveNormalThread->createSuspended();
-                pAboveNormalThread->setPriority(osl_Thread_PriorityAboveNormal);
-
-                pNormalThread->createSuspended();
-                pNormalThread->setPriority(osl_Thread_PriorityNormal);
-
-                pBelowNormalThread->createSuspended();
-                pBelowNormalThread->setPriority(osl_Thread_PriorityBelowNormal);
-
-                pLowestThread->createSuspended();
-                pLowestThread->setPriority(osl_Thread_PriorityLowest);
-
-                // pHighestThread->resume();
-                pAboveNormalThread->resume();
-                pNormalThread->resume();
-                pBelowNormalThread->resume();
-                pLowestThread->resume();
-
-                ThreadHelper::thread_sleep_tenth_sec(5);
-
-                // pHighestThread->suspend();
-                pAboveNormalThread->suspend();
-                pNormalThread->suspend();
-                pBelowNormalThread->suspend();
-                pLowestThread->suspend();
-
-                // termAndJoinThread(pHighestThread);
-                termAndJoinThread(pAboveNormalThread);
-                termAndJoinThread(pNormalThread);
-                termAndJoinThread(pBelowNormalThread);
-                termAndJoinThread(pLowestThread);
-
-                // sal_Int32 nValueHighest  = 0;
-                // nValueHighest =  pHighestThread->getValue();
-
-                sal_Int32 nValueAboveNormal = 0;
-                nValueAboveNormal = pAboveNormalThread->getValue();
+        }
 
-                sal_Int32 nValueNormal = 0;
-                nValueNormal = pNormalThread->getValue();
-
-                sal_Int32 nValueBelowNormal = 0;
-                nValueBelowNormal = pBelowNormalThread->getValue();
-
-                sal_Int32 nValueLowest = 0;
-                nValueLowest = pLowestThread->getValue();
-
-                t_print("After 5 tenth seconds\n");
-                // t_print("nValue in Highest Prio Thread  is     %d\n",nValueHighest);
-                t_print("nValue in AboveNormal Prio Thread is %d\n",nValueAboveNormal);
-                t_print("nValue in Normal Prio Thread is      %d\n",nValueNormal);
-                t_print("nValue in BelowNormal Prio Thread is %d\n",nValueBelowNormal);
-                t_print("nValue in Lowest Prio Thread is      %d\n",nValueLowest);
-
-                // delete pHighestThread;
-                delete pAboveNormalThread;
-                delete pNormalThread;
-                delete pBelowNormalThread;
-                delete pLowestThread;
-
-                // LLA: this is not a save test, so we only check if all values not zero
-                // LLA: CPPUNIT_ASSERT_MESSAGE(
-                // LLA:     "SetPriority",
-                // LLA:     nValueHighest > nValueAboveNormal &&
-                // LLA:     nValueAboveNormal > nValueNormal &&
-                // LLA:     nValueNormal > nValueBelowNormal &&
-                // LLA:     nValueBelowNormal > nValueLowest &&
-                // LLA:     nValueLowest > 0
-                // LLA:     );
+    TEST_F(setPriority, setPriority_004)
+        {
+            // initial 5 threads with different priorities
+            // OAddThread *pHighestThread = new OAddThread();
+            OAddThread *pAboveNormalThread = new OAddThread();
+            OAddThread *pNormalThread = new OAddThread();
+            OAddThread *pBelowNormalThread = new OAddThread();
+            OAddThread *pLowestThread = new OAddThread();
+
+            //Create them and start running at the same time
+            // pHighestThread->createSuspended();
+            // pHighestThread->setPriority(osl_Thread_PriorityHighest);
+
+            pAboveNormalThread->createSuspended();
+            pAboveNormalThread->setPriority(osl_Thread_PriorityAboveNormal);
+
+            pNormalThread->createSuspended();
+            pNormalThread->setPriority(osl_Thread_PriorityNormal);
+
+            pBelowNormalThread->createSuspended();
+            pBelowNormalThread->setPriority(osl_Thread_PriorityBelowNormal);
+
+            pLowestThread->createSuspended();
+            pLowestThread->setPriority(osl_Thread_PriorityLowest);
+
+            // pHighestThread->resume();
+            pAboveNormalThread->resume();
+            pNormalThread->resume();
+            pBelowNormalThread->resume();
+            pLowestThread->resume();
+
+            ThreadHelper::thread_sleep_tenth_sec(5);
+
+            // pHighestThread->suspend();
+            pAboveNormalThread->suspend();
+            pNormalThread->suspend();
+            pBelowNormalThread->suspend();
+            pLowestThread->suspend();
+
+            // termAndJoinThread(pHighestThread);
+            termAndJoinThread(pAboveNormalThread);
+            termAndJoinThread(pNormalThread);
+            termAndJoinThread(pBelowNormalThread);
+            termAndJoinThread(pLowestThread);
+
+            // sal_Int32 nValueHighest  = 0;
+            // nValueHighest =  pHighestThread->getValue();
+
+            sal_Int32 nValueAboveNormal = 0;
+            nValueAboveNormal = pAboveNormalThread->getValue();
+
+            sal_Int32 nValueNormal = 0;
+            nValueNormal = pNormalThread->getValue();
+
+            sal_Int32 nValueBelowNormal = 0;
+            nValueBelowNormal = pBelowNormalThread->getValue();
+
+            sal_Int32 nValueLowest = 0;
+            nValueLowest = pLowestThread->getValue();
+
+            printf("After 5 tenth seconds\n");
+            // printf("nValue in Highest Prio Thread  is     %d\n",nValueHighest);
+            printf("nValue in AboveNormal Prio Thread is %d\n",nValueAboveNormal);
+            printf("nValue in Normal Prio Thread is      %d\n",nValueNormal);
+            printf("nValue in BelowNormal Prio Thread is %d\n",nValueBelowNormal);
+            printf("nValue in Lowest Prio Thread is      %d\n",nValueLowest);
+
+            // delete pHighestThread;
+            delete pAboveNormalThread;
+            delete pNormalThread;
+            delete pBelowNormalThread;
+            delete pLowestThread;
+
+            // LLA: this is not a save test, so we only check if all values not zero
+            // LLA: ASSERT_TRUE(// LLA:     nValueHighest > nValueAboveNormal &&
+            // LLA:     nValueAboveNormal > nValueNormal &&
+            // LLA:     nValueNormal > nValueBelowNormal &&
+            // LLA:     nValueBelowNormal > nValueLowest &&
+            // LLA:     nValueLowest > 0
+            // LLA:) << // LLA:     "SetPriority";
 
 // LLA: windows let starve threads with lower priority
 #ifndef WNT
-                CPPUNIT_ASSERT_MESSAGE(
-                    "SetPriority",
-                    /* nValueHighest     > 0 &&  */
-                    nValueAboveNormal > 0 &&
-                    nValueNormal      > 0 &&
-                    nValueBelowNormal > 0 &&
-                    nValueLowest      > 0
-                    );
+            ASSERT_TRUE(/* nValueHighest     > 0 &&  */
+                nValueAboveNormal > 0 &&
+                nValueNormal      > 0 &&
+                nValueBelowNormal > 0 &&
+                nValueLowest      > 0) << "SetPriority";
 #endif
-            }
-        void setPriority_005()
-            {
-                // initial 5 threads with different priorities
-                // OAddThread *pHighestThread = new OAddThread();
-                // OAddThread *pAboveNormalThread = new OAddThread();
-                OAddThread *pNormalThread = new OAddThread();
-                OAddThread *pBelowNormalThread = new OAddThread();
-                OAddThread *pLowestThread = new OAddThread();
-
-                //Create them and start running at the same time
-                // pHighestThread->createSuspended();
-                // pHighestThread->setPriority(osl_Thread_PriorityHighest);
-
-                // pAboveNormalThread->createSuspended();
-                // pAboveNormalThread->setPriority(osl_Thread_PriorityAboveNormal);
-
-                pNormalThread->createSuspended();
-                pNormalThread->setPriority(osl_Thread_PriorityNormal);
-
-                pBelowNormalThread->createSuspended();
-                pBelowNormalThread->setPriority(osl_Thread_PriorityBelowNormal);
-
-                pLowestThread->createSuspended();
-                pLowestThread->setPriority(osl_Thread_PriorityLowest);
-
-                // pHighestThread->resume();
-                // pAboveNormalThread->resume();
-                pNormalThread->resume();
-                pBelowNormalThread->resume();
-                pLowestThread->resume();
-
-                ThreadHelper::thread_sleep_tenth_sec(5);
-
-                // pHighestThread->suspend();
-                // pAboveNormalThread->suspend();
-                pNormalThread->suspend();
-                pBelowNormalThread->suspend();
-                pLowestThread->suspend();
-
-                // termAndJoinThread(pHighestThread);
-                // termAndJoinThread(pAboveNormalThread);
-                termAndJoinThread(pNormalThread);
-                termAndJoinThread(pBelowNormalThread);
-                termAndJoinThread(pLowestThread);
-
-                // sal_Int32 nValueHighest  = 0;
-                // nValueHighest =  pHighestThread->getValue();
-
-                // sal_Int32 nValueAboveNormal = 0;
-                // nValueAboveNormal = pAboveNormalThread->getValue();
-
-                sal_Int32 nValueNormal = 0;
-                nValueNormal = pNormalThread->getValue();
-
-                sal_Int32 nValueBelowNormal = 0;
-                nValueBelowNormal = pBelowNormalThread->getValue();
-
-                sal_Int32 nValueLowest = 0;
-                nValueLowest = pLowestThread->getValue();
-
-                t_print("After 5 tenth seconds\n");
-                // t_print("nValue in Highest Prio Thread  is     %d\n",nValueHighest);
-                // t_print("nValue in AboveNormal  Prio Thread is %d\n",nValueAboveNormal);
-                t_print("nValue in Normal Prio Thread is      %d\n",nValueNormal);
-                t_print("nValue in BelowNormal Prio Thread is %d\n",nValueBelowNormal);
-                t_print("nValue in Lowest Prio Thread is      %d\n",nValueLowest);
-
-                // delete pHighestThread;
-                // delete pAboveNormalThread;
-                delete pNormalThread;
-                delete pBelowNormalThread;

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list