basic/qa/cppunit/basic_coverage.cxx | 40 +----- basic/qa/cppunit/basictest.hxx | 120 +++++++++++++++++++- basic/qa/cppunit/test_append.cxx | 40 ++---- basic/qa/cppunit/test_nested_struct.cxx | 192 +++++++++----------------------- 4 files changed, 192 insertions(+), 200 deletions(-)
New commits: commit fea9b3a99a24366b4dea22ed1b79f34046f7f521 Author: Noel Power <noel.po...@suse.com> Date: Thu Mar 7 10:53:42 2013 +0000 finally remove no long needed BasicTestBase Change-Id: Ic1522b0c3a292af061f5777e06e796dd82884fbf diff --git a/basic/qa/cppunit/basictest.hxx b/basic/qa/cppunit/basictest.hxx index 7e74a2a..c828f25 100644 --- a/basic/qa/cppunit/basictest.hxx +++ b/basic/qa/cppunit/basictest.hxx @@ -22,35 +22,6 @@ #include "basic/sbuno.hxx" #include <osl/file.hxx> -class BasicTestBase : public test::BootstrapFixture -{ - private: - bool mbError; - public: - BasicTestBase() : BootstrapFixture(true, false), mbError(false) {}; - - - DECL_LINK( BasicErrorHdl, StarBASIC * ); - bool HasError() { return mbError; } - void ResetError() - { - StarBASIC::SetGlobalErrorHdl( Link() ); - mbError = false; - } - BasicDLL& basicDLL() - { - static BasicDLL maDll; // we need a dll instance for resouce manager etc. - return maDll; - } -}; - -IMPL_LINK( BasicTestBase, BasicErrorHdl, StarBASIC *, /*pBasic*/) -{ - fprintf(stderr,"Got error: \n\t%s!!!\n", rtl::OUStringToOString( StarBASIC::GetErrorText(), RTL_TEXTENCODING_UTF8 ).getStr() ); - mbError = true; - return 0; -} - class MacroSnippet { private: commit 20f12a1d7ad5f9694f901a85e1fa22f46c3953a2 Author: Noel Power <noel.po...@suse.com> Date: Thu Mar 7 10:52:51 2013 +0000 Nested_Struct should really inherit from test::BootstrapFixture Change-Id: I06255940f41c32493187d1ec847f7238fef4e9f8 diff --git a/basic/qa/cppunit/test_nested_struct.cxx b/basic/qa/cppunit/test_nested_struct.cxx index 266d11f..8c7fabc 100644 --- a/basic/qa/cppunit/test_nested_struct.cxx +++ b/basic/qa/cppunit/test_nested_struct.cxx @@ -19,10 +19,10 @@ namespace { using namespace com::sun::star; - class Nested_Struct : public BasicTestBase + class Nested_Struct : public test::BootstrapFixture { public: - Nested_Struct() {}; + Nested_Struct(): BootstrapFixture(true, false) {}; void testAssign1(); void testAssign1Alt(); // result is uno-ised and tested void testOldAssign(); commit 8534787f95dfbfff24167b2160cfe07a1b70bcc6 Author: Noel Power <noel.po...@suse.com> Date: Thu Mar 7 10:49:28 2013 +0000 adapt existing tests to use MacroSnipper helper class Change-Id: I50980d9510b82277a5da04cc4f6c1d3ec8e7c756 diff --git a/basic/qa/cppunit/basic_coverage.cxx b/basic/qa/cppunit/basic_coverage.cxx index fefdd4e..b406122 100644 --- a/basic/qa/cppunit/basic_coverage.cxx +++ b/basic/qa/cppunit/basic_coverage.cxx @@ -16,7 +16,7 @@ namespace { -class Coverage : public BasicTestBase +class Coverage : public test::BootstrapFixture { private: bool m_bError; @@ -32,8 +32,6 @@ private: void test_success(void); void print_summary() {}; - DECL_LINK( CoverageErrorHdl, StarBASIC * ); - public: Coverage(); ~Coverage(); @@ -50,18 +48,9 @@ public: CPPUNIT_TEST_SUITE_END(); }; -IMPL_LINK( Coverage, CoverageErrorHdl, StarBASIC *, /*pBasic*/) -{ - fprintf(stderr,"%s:(%d:%d)\n", - rtl::OUStringToOString( m_sCurrentTest, RTL_TEXTENCODING_UTF8 ).getStr(), - StarBASIC::GetLine(), StarBASIC::GetCol1()); - fprintf(stderr,"Basic error: %s\n", rtl::OUStringToOString( StarBASIC::GetErrorText(), RTL_TEXTENCODING_UTF8 ).getStr() ); - m_bError = true; - return 0; -} - Coverage::Coverage() - : m_bError(false) + : BootstrapFixture(true, false) + , m_bError(false) , m_nb_tests(0) , m_nb_tests_ok(0) , m_nb_tests_skipped(0) @@ -94,25 +83,14 @@ void Coverage::test_success() void Coverage::run_test(OUString /*sFileName*/, OUString sCode) { bool result = false; - CPPUNIT_ASSERT_MESSAGE( "No resource manager", basicDLL().GetBasResMgr() != NULL ); - StarBASICRef pBasic = new StarBASIC(); - ResetError(); - StarBASIC::SetGlobalErrorHdl( LINK( this, Coverage, CoverageErrorHdl ) ); - - SbModule* pMod = pBasic->MakeModule( rtl::OUString( "TestModule" ), sCode ); - pMod->Compile(); - if(!m_bError) + MacroSnippet testMacro( sCode ); + testMacro.Compile(); + if( !testMacro.HasError() ) { - SbMethod* pMeth = static_cast<SbMethod*>(pMod->Find( rtl::OUString("doUnitTest"), SbxCLASS_METHOD )); - if(pMeth) + SbxVariableRef pResult = testMacro.Run(); + if( pResult && pResult->GetInteger() == 1 ) { - SbxVariableRef refTemp = pMeth; - // forces a broadcast - SbxVariableRef pNew = new SbxMethod( *((SbxMethod*)pMeth)); - if(pNew->GetInteger() == 1 ) - { - result = true; - } + result = true; } } if(result) diff --git a/basic/qa/cppunit/test_append.cxx b/basic/qa/cppunit/test_append.cxx index 7e7990f..e3d9f6b 100644 --- a/basic/qa/cppunit/test_append.cxx +++ b/basic/qa/cppunit/test_append.cxx @@ -15,10 +15,10 @@ #include "basic/sbmeth.hxx" namespace { - class EnableTest : public BasicTestBase + class EnableTest : public test::BootstrapFixture { public: - EnableTest() {}; + EnableTest() : BootstrapFixture(true, false) {}; void testDimEnable(); void testEnableRuntime(); // Adds code needed to register the test suite @@ -33,50 +33,34 @@ namespace }; rtl::OUString sTestEnableRuntime( - "Function Test as Integer\n" + "Function doUnitTest as Integer\n" "Dim Enable as Integer\n" "Enable = 1\n" "Enable = Enable + 2\n" - "Test = Enable\n" + "doUnitTest = Enable\n" "End Function\n" ); rtl::OUString sTestDimEnable( - "Sub Test\n" + "Sub doUnitTest\n" "Dim Enable as String\n" "End Sub\n" ); void EnableTest::testEnableRuntime() { - CPPUNIT_ASSERT_MESSAGE( "No resource manager", basicDLL().GetBasResMgr() != NULL ); - StarBASICRef pBasic = new StarBASIC(); - ResetError(); - StarBASIC::SetGlobalErrorHdl( LINK( this, EnableTest, BasicErrorHdl ) ); - - SbModule* pMod = pBasic->MakeModule( rtl::OUString( "TestModule" ), sTestEnableRuntime ); - pMod->Compile(); - CPPUNIT_ASSERT_MESSAGE("testEnableRuntime fails with compile error",!HasError() ); - SbMethod* pMeth = static_cast<SbMethod*>(pMod->Find( rtl::OUString("Test"), SbxCLASS_METHOD )); - CPPUNIT_ASSERT_MESSAGE("testEnableRuntime no method found", pMeth ); - SbxVariableRef refTemp = pMeth; - // forces a broadcast - SbxVariableRef pNew = new SbxMethod( *((SbxMethod*)pMeth)); + MacroSnippet myMacro(sTestEnableRuntime); + myMacro.Compile(); + CPPUNIT_ASSERT_MESSAGE("testEnableRuntime fails with compile error",!myMacro.HasError() ); + SbxVariableRef pNew = myMacro.Run(); CPPUNIT_ASSERT(pNew->GetInteger() == 3 ); } void EnableTest::testDimEnable() { - CPPUNIT_ASSERT_MESSAGE( "No resource manager", basicDLL().GetBasResMgr() != NULL ); - StarBASICRef pBasic = new StarBASIC(); - StarBASIC::SetGlobalErrorHdl( LINK( this, EnableTest, BasicErrorHdl ) ); - - ResetError(); - - SbModule* pMod = pBasic->MakeModule( rtl::OUString( "TestModule" ), sTestDimEnable ); - pMod->Compile(); - - CPPUNIT_ASSERT_MESSAGE("Dim causes compile error", !HasError() ); + MacroSnippet myMacro(sTestDimEnable); + myMacro.Compile(); + CPPUNIT_ASSERT_MESSAGE("Dim causes compile error", !myMacro.HasError() ); } // Put the test suite in the registry diff --git a/basic/qa/cppunit/test_nested_struct.cxx b/basic/qa/cppunit/test_nested_struct.cxx index c55f4b3..266d11f 100644 --- a/basic/qa/cppunit/test_nested_struct.cxx +++ b/basic/qa/cppunit/test_nested_struct.cxx @@ -54,18 +54,18 @@ namespace // tests the new behaviour, we should be able to // directly modify the value of the nested 'HorizontalLine' struct rtl::OUString sTestSource1( - "Function simpleNestStructAccess() as Integer\n" + "Function doUnitTest() as Integer\n" "Dim b0 as new \"com.sun.star.table.TableBorder\"\n" "b0.HorizontalLine.OuterLineWidth = 9\n" - "simpleNestStructAccess = b0.HorizontalLine.OuterLineWidth\n" + "doUnitTest = b0.HorizontalLine.OuterLineWidth\n" "End Function\n" ); rtl::OUString sTestSource1Alt( - "Function simpleNestStructAccess() as Object\n" + "Function doUnitTest() as Object\n" "Dim b0 as new \"com.sun.star.table.TableBorder\"\n" "b0.HorizontalLine.OuterLineWidth = 9\n" - "simpleNestStructAccess = b0\n" + "doUnitTest = b0\n" "End Function\n" ); @@ -76,22 +76,22 @@ rtl::OUString sTestSource1Alt( // c) modifying the new instance // d) setting b0.HorizontalLine with the value of the new instance rtl::OUString sTestSource2( - "Function simpleRegressionTestOld()\n" + "Function doUnitTest()\n" "Dim b0 as new \"com.sun.star.table.TableBorder\", l as new \"com.sun.star.table.BorderLine\"\n" "l = b0.HorizontalLine\n" "l.OuterLineWidth = 9\n" "b0.HorizontalLine = l\n" - "simpleRegressionTestOld = b0.HorizontalLine.OuterLineWidth\n" + "doUnitTest = b0.HorizontalLine.OuterLineWidth\n" "End Function\n" ); rtl::OUString sTestSource2Alt( - "Function simpleRegressionTestOld()\n" + "Function doUnitTest()\n" "Dim b0 as new \"com.sun.star.table.TableBorder\", l as new \"com.sun.star.table.BorderLine\"\n" "l = b0.HorizontalLine\n" "l.OuterLineWidth = 9\n" "b0.HorizontalLine = l\n" - "simpleRegressionTestOld = b0\n" + "doUnitTest = b0\n" "End Function\n" ); // it should be legal to assign a variant to a struct ( and copy by val ) @@ -100,18 +100,18 @@ rtl::OUString sTestSource2Alt( // OuterLineWidth of 4 & 9 respectively and we should be returning // 13 the sum of the two ( hopefully unique values if we haven't copied by reference ) rtl::OUString sTestSource3( - "Function testUnfixedVarAssign()\n" + "Function doUnitTest()\n" "Dim b0 as new \"com.sun.star.table.TableBorder\"\n" "l = b0.HorizontalLine\n" "l.OuterLineWidth = 9\n" "b0.HorizontalLine = l\n" "l.OuterLineWidth = 4\n" - "testUnfixedVarAssign = b0.HorizontalLine.OuterLineWidth + l.OuterLineWidth\n" + "doUnitTest = b0.HorizontalLine.OuterLineWidth + l.OuterLineWidth\n" "End Function\n" ); rtl::OUString sTestSource3Alt( - "Function testUnfixedVarAssign()\n" + "Function doUnitTest()\n" "Dim b0 as new \"com.sun.star.table.TableBorder\"\n" "l = b0.HorizontalLine\n" "l.OuterLineWidth = 9\n" @@ -120,25 +120,25 @@ rtl::OUString sTestSource3Alt( "Dim result(1)\n" "result(0) = b0\n" "result(1) = l\n" - "testUnfixedVarAssign = result\n" + "doUnitTest = result\n" "End Function\n" ); // nearly the same as above but this time for a fixed type // variable rtl::OUString sTestSource4( - "Function testFixedVarAssign()\n" + "Function doUnitTest()\n" "Dim b0 as new \"com.sun.star.table.TableBorder\", l as new \"com.sun.star.table.BorderLine\"\n" "l = b0.HorizontalLine\n" "l.OuterLineWidth = 9\n" "b0.HorizontalLine = l\n" "l.OuterLineWidth = 4\n" - "testFixedVarAssign = b0.HorizontalLine.OuterLineWidth + l.OuterLineWidth\n" + "doUnitTest = b0.HorizontalLine.OuterLineWidth + l.OuterLineWidth\n" "End Function\n" ); rtl::OUString sTestSource4Alt( - "Function testFixedVarAssign()\n" + "Function doUnitTest()\n" "Dim b0 as new \"com.sun.star.table.TableBorder\", l as new \"com.sun.star.table.BorderLine\"\n" "l = b0.HorizontalLine\n" "l.OuterLineWidth = 9\n" @@ -147,7 +147,7 @@ rtl::OUString sTestSource4Alt( "Dim result(1)\n" "result(0) = b0\n" "result(1) = l\n" - "testFixedVarAssign = result\n" + "doUnitTest = result\n" "End Function\n" ); @@ -157,49 +157,31 @@ rtl::OUString sTestSource4Alt( // We need to additionally check the actual uno struct to see if the // changes made are *really* reflected in the object rtl::OUString sTestSource5( - "Function testUnoAccess() as Object\n" + "Function doUnitTest() as Object\n" "Dim aWinDesc as new \"com.sun.star.awt.WindowDescriptor\"\n" "Dim aRect as new \"com.sun.star.awt.Rectangle\"\n" "aRect.X = 200\n" "aWinDesc.Bounds = aRect\n" - "testUnoAccess = aWinDesc\n" + "doUnitTest = aWinDesc\n" "End Function\n" ); void Nested_Struct::testAssign1() { - CPPUNIT_ASSERT_MESSAGE( "No resource manager", basicDLL().GetBasResMgr() != NULL ); - StarBASICRef pBasic = new StarBASIC(); - ResetError(); - StarBASIC::SetGlobalErrorHdl( LINK( this, Nested_Struct, BasicErrorHdl ) ); - - SbModule* pMod = pBasic->MakeModule( rtl::OUString( "TestModule" ), sTestSource1 ); - pMod->Compile(); - CPPUNIT_ASSERT_MESSAGE("testAssign1 fails with compile error",!HasError() ); - SbMethod* pMeth = static_cast<SbMethod*>(pMod->Find( rtl::OUString("simpleNestStructAccess"), SbxCLASS_METHOD )); - CPPUNIT_ASSERT_MESSAGE("testAssign1 no method found", pMeth ); - SbxVariableRef refTemp = pMeth; - // forces a broadcast - SbxVariableRef pNew = new SbxMethod( *((SbxMethod*)pMeth)); + MacroSnippet myMacro( sTestSource1 ); + myMacro.Compile(); + CPPUNIT_ASSERT_MESSAGE("testAssign1 fails with compile error",!myMacro.HasError() ); + SbxVariableRef pNew = myMacro.Run(); CPPUNIT_ASSERT(pNew->GetInteger() == 9 ); } void Nested_Struct::testAssign1Alt() { - CPPUNIT_ASSERT_MESSAGE( "No resource manager", basicDLL().GetBasResMgr() != NULL ); - StarBASICRef pBasic = new StarBASIC(); - ResetError(); - StarBASIC::SetGlobalErrorHdl( LINK( this, Nested_Struct, BasicErrorHdl ) ); - - SbModule* pMod = pBasic->MakeModule( rtl::OUString( "TestModule" ), sTestSource1Alt ); - pMod->Compile(); - CPPUNIT_ASSERT_MESSAGE("testAssign1Alt fails with compile error",!HasError() ); - SbMethod* pMeth = static_cast<SbMethod*>(pMod->Find( rtl::OUString("simpleNestStructAccess"), SbxCLASS_METHOD )); - CPPUNIT_ASSERT_MESSAGE("testAssign1Alt no method found", pMeth ); - SbxVariableRef refTemp = pMeth; - // forces a broadcast - SbxVariableRef pNew = new SbxMethod( *((SbxMethod*)pMeth)); + MacroSnippet myMacro( sTestSource1Alt ); + myMacro.Compile(); + CPPUNIT_ASSERT_MESSAGE("testAssign1Alt fails with compile error",!myMacro.HasError() ); + SbxVariableRef pNew = myMacro.Run(); uno::Any aRet = sbxToUnoValue( pNew ); table::TableBorder aBorder; aRet >>= aBorder; @@ -210,37 +192,19 @@ void Nested_Struct::testAssign1Alt() void Nested_Struct::testOldAssign() { - CPPUNIT_ASSERT_MESSAGE( "No resource manager", basicDLL().GetBasResMgr() != NULL ); - StarBASICRef pBasic = new StarBASIC(); - ResetError(); - StarBASIC::SetGlobalErrorHdl( LINK( this, Nested_Struct, BasicErrorHdl ) ); - - SbModule* pMod = pBasic->MakeModule( rtl::OUString( "TestModule" ), sTestSource2 ); - pMod->Compile(); - CPPUNIT_ASSERT_MESSAGE("testOldAssign fails with compile error",!HasError() ); - SbMethod* pMeth = static_cast<SbMethod*>(pMod->Find( rtl::OUString("simpleRegressionTestOld"), SbxCLASS_METHOD )); - CPPUNIT_ASSERT_MESSAGE("testOldAssign no method found", pMeth ); - SbxVariableRef refTemp = pMeth; - // forces a broadcast - SbxVariableRef pNew = new SbxMethod( *((SbxMethod*)pMeth)); + MacroSnippet myMacro( sTestSource2 ); + myMacro.Compile(); + CPPUNIT_ASSERT_MESSAGE("testOldAssign fails with compile error",!myMacro.HasError() ); + SbxVariableRef pNew = myMacro.Run(); CPPUNIT_ASSERT(pNew->GetInteger() == 9 ); } void Nested_Struct::testOldAssignAlt() { - CPPUNIT_ASSERT_MESSAGE( "No resource manager", basicDLL().GetBasResMgr() != NULL ); - StarBASICRef pBasic = new StarBASIC(); - ResetError(); - StarBASIC::SetGlobalErrorHdl( LINK( this, Nested_Struct, BasicErrorHdl ) ); - - SbModule* pMod = pBasic->MakeModule( rtl::OUString( "TestModule" ), sTestSource2Alt ); - pMod->Compile(); - CPPUNIT_ASSERT_MESSAGE("testOldAssign fails with compile error",!HasError() ); - SbMethod* pMeth = static_cast<SbMethod*>(pMod->Find( rtl::OUString("simpleRegressionTestOld"), SbxCLASS_METHOD )); - CPPUNIT_ASSERT_MESSAGE("testOldAssign no method found", pMeth ); - SbxVariableRef refTemp = pMeth; - // forces a broadcast - SbxVariableRef pNew = new SbxMethod( *((SbxMethod*)pMeth)); + MacroSnippet myMacro( sTestSource2Alt ); + myMacro.Compile(); + CPPUNIT_ASSERT_MESSAGE("testOldAssign fails with compile error",!myMacro.HasError() ); + SbxVariableRef pNew = myMacro.Run(); uno::Any aRet = sbxToUnoValue( pNew ); table::TableBorder aBorder; aRet >>= aBorder; @@ -251,37 +215,20 @@ void Nested_Struct::testOldAssignAlt() void Nested_Struct::testUnfixedVarAssign() { - CPPUNIT_ASSERT_MESSAGE( "No resource manager", basicDLL().GetBasResMgr() != NULL ); - StarBASICRef pBasic = new StarBASIC(); - ResetError(); - StarBASIC::SetGlobalErrorHdl( LINK( this, Nested_Struct, BasicErrorHdl ) ); - - SbModule* pMod = pBasic->MakeModule( rtl::OUString( "TestModule" ), sTestSource3 ); - pMod->Compile(); - CPPUNIT_ASSERT_MESSAGE("testUnfixedVarAssign fails with compile error",!HasError() ); - SbMethod* pMeth = static_cast<SbMethod*>(pMod->Find( rtl::OUString("testUnfixedVarAssign"), SbxCLASS_METHOD )); - CPPUNIT_ASSERT_MESSAGE("testUnfixedVarAssign no method found", pMeth ); - SbxVariableRef refTemp = pMeth; + MacroSnippet myMacro( sTestSource3 ); + myMacro.Compile(); + CPPUNIT_ASSERT_MESSAGE("testUnfixedVarAssign fails with compile error",!myMacro.HasError() ); // forces a broadcast - SbxVariableRef pNew = new SbxMethod( *((SbxMethod*)pMeth)); + SbxVariableRef pNew = myMacro.Run(); CPPUNIT_ASSERT(pNew->GetInteger() == 13 ); } void Nested_Struct::testUnfixedVarAssignAlt() { - CPPUNIT_ASSERT_MESSAGE( "No resource manager", basicDLL().GetBasResMgr() != NULL ); - StarBASICRef pBasic = new StarBASIC(); - ResetError(); - StarBASIC::SetGlobalErrorHdl( LINK( this, Nested_Struct, BasicErrorHdl ) ); - - SbModule* pMod = pBasic->MakeModule( rtl::OUString( "TestModule" ), sTestSource3Alt ); - pMod->Compile(); - CPPUNIT_ASSERT_MESSAGE("testUnfixedVarAssignAlt fails with compile error",!HasError() ); - SbMethod* pMeth = static_cast<SbMethod*>(pMod->Find( rtl::OUString("testUnfixedVarAssign"), SbxCLASS_METHOD )); - CPPUNIT_ASSERT_MESSAGE("testUnfixedVarAssignAlt no method found", pMeth ); - SbxVariableRef refTemp = pMeth; - // forces a broadcast - SbxVariableRef pNew = new SbxMethod( *((SbxMethod*)pMeth)); + MacroSnippet myMacro( sTestSource3Alt ); + myMacro.Compile(); + CPPUNIT_ASSERT_MESSAGE("testUnfixedVarAssignAlt fails with compile error",!myMacro.HasError() ); + SbxVariableRef pNew = myMacro.Run(); uno::Any aRet = sbxToUnoValue( pNew ); uno::Sequence< uno::Any > aResult; @@ -305,37 +252,19 @@ void Nested_Struct::testUnfixedVarAssignAlt() void Nested_Struct::testFixedVarAssign() { - CPPUNIT_ASSERT_MESSAGE( "No resource manager", basicDLL().GetBasResMgr() != NULL ); - StarBASICRef pBasic = new StarBASIC(); - ResetError(); - StarBASIC::SetGlobalErrorHdl( LINK( this, Nested_Struct, BasicErrorHdl ) ); - - SbModule* pMod = pBasic->MakeModule( rtl::OUString( "TestModule" ), sTestSource4 ); - pMod->Compile(); - CPPUNIT_ASSERT_MESSAGE("testFixedVarAssign fails with compile error",!HasError() ); - SbMethod* pMeth = static_cast<SbMethod*>(pMod->Find( rtl::OUString("testFixedVarAssign"), SbxCLASS_METHOD )); - CPPUNIT_ASSERT_MESSAGE("testFixedVarAssign no method found", pMeth ); - SbxVariableRef refTemp = pMeth; - // forces a broadcast - SbxVariableRef pNew = new SbxMethod( *((SbxMethod*)pMeth)); + MacroSnippet myMacro( sTestSource4 ); + myMacro.Compile(); + CPPUNIT_ASSERT_MESSAGE("testFixedVarAssign fails with compile error",!myMacro.HasError() ); + SbxVariableRef pNew = myMacro.Run(); CPPUNIT_ASSERT(pNew->GetInteger() == 13 ); } void Nested_Struct::testFixedVarAssignAlt() { - CPPUNIT_ASSERT_MESSAGE( "No resource manager", basicDLL().GetBasResMgr() != NULL ); - StarBASICRef pBasic = new StarBASIC(); - ResetError(); - StarBASIC::SetGlobalErrorHdl( LINK( this, Nested_Struct, BasicErrorHdl ) ); - - SbModule* pMod = pBasic->MakeModule( rtl::OUString( "TestModule" ), sTestSource4Alt ); - pMod->Compile(); - CPPUNIT_ASSERT_MESSAGE("testFixedVarAssignAlt fails with compile error",!HasError() ); - SbMethod* pMeth = static_cast<SbMethod*>(pMod->Find( rtl::OUString("testFixedVarAssign"), SbxCLASS_METHOD )); - CPPUNIT_ASSERT_MESSAGE("testFixedVarAssignAlt no method found", pMeth ); - SbxVariableRef refTemp = pMeth; - // forces a broadcast - SbxVariableRef pNew = new SbxMethod( *((SbxMethod*)pMeth)); + MacroSnippet myMacro( sTestSource4Alt ); + myMacro.Compile(); + CPPUNIT_ASSERT_MESSAGE("testFixedVarAssignAlt fails with compile error",!myMacro.HasError() ); + SbxVariableRef pNew = myMacro.Run(); uno::Any aRet = sbxToUnoValue( pNew ); uno::Sequence< uno::Any > aResult; @@ -359,19 +288,10 @@ void Nested_Struct::testFixedVarAssignAlt() void Nested_Struct::testUnoAccess() { - CPPUNIT_ASSERT_MESSAGE( "No resource manager", basicDLL().GetBasResMgr() != NULL ); - StarBASICRef pBasic = new StarBASIC(); - ResetError(); - StarBASIC::SetGlobalErrorHdl( LINK( this, Nested_Struct, BasicErrorHdl ) ); - - SbModule* pMod = pBasic->MakeModule( rtl::OUString( "TestModule" ), sTestSource5 ); - pMod->Compile(); - CPPUNIT_ASSERT_MESSAGE("testUnoAccess fails with compile error",!HasError() ); - SbMethod* pMeth = static_cast<SbMethod*>(pMod->Find( rtl::OUString("testUnoAccess"), SbxCLASS_METHOD )); - CPPUNIT_ASSERT_MESSAGE("testUnoAccess no method found", pMeth ); - SbxVariableRef refTemp = pMeth; - // forces a broadcast - SbxVariableRef pNew = new SbxMethod( *((SbxMethod*)pMeth)); + MacroSnippet myMacro( sTestSource5 ); + myMacro.Compile(); + CPPUNIT_ASSERT_MESSAGE("testUnoAccess fails with compile error",!myMacro.HasError() ); + SbxVariableRef pNew = myMacro.Run(); uno::Any aRet = sbxToUnoValue( pNew ); awt::WindowDescriptor aWinDesc; aRet >>= aWinDesc; commit 49417b0b68e8c9743bd6f664a5f8b4a0f3c19723 Author: Noel Power <noel.po...@suse.com> Date: Thu Mar 7 10:48:50 2013 +0000 use "doUnitTest" as the method to search for, tweak error reporting Change-Id: I0c0f4ce1304b561bf94af5444c83d8920062568b diff --git a/basic/qa/cppunit/basictest.hxx b/basic/qa/cppunit/basictest.hxx index d94abbf..7e74a2a 100644 --- a/basic/qa/cppunit/basictest.hxx +++ b/basic/qa/cppunit/basictest.hxx @@ -89,7 +89,7 @@ class MacroSnippet void LoadSourceFromFile( const OUString& sMacroFileURL ) { OUString sSource; - printf("loadSource opening macro file %s\n", OUStringToOString( sMacroFileURL, RTL_TEXTENCODING_UTF8 ).getStr() ); + fprintf(stderr,"loadSource opening macro file %s\n", OUStringToOString( sMacroFileURL, RTL_TEXTENCODING_UTF8 ).getStr() ); osl::File aFile(sMacroFileURL); if(osl::FileBase::E_None == aFile.open(osl_File_OpenFlag_Read)) @@ -119,7 +119,7 @@ class MacroSnippet SbxVariableRef pReturn = NULL; if ( !Compile() ) return pReturn; - SbMethod* pMeth = mpMod ? static_cast<SbMethod*>(mpMod->Find( OUString("test"), SbxCLASS_METHOD )) : NULL; + SbMethod* pMeth = mpMod ? static_cast<SbMethod*>(mpMod->Find( OUString("doUnitTest"), SbxCLASS_METHOD )) : NULL; if ( pMeth ) { if ( rArgs.getLength() ) @@ -179,7 +179,9 @@ class MacroSnippet IMPL_LINK( MacroSnippet, BasicErrorHdl, StarBASIC *, /*pBasic*/) { - fprintf(stderr,"Got error: \n\t%s!!!\n", OUStringToOString( StarBASIC::GetErrorText(), RTL_TEXTENCODING_UTF8 ).getStr() ); + fprintf(stderr,"(%d:%d)\n", + StarBASIC::GetLine(), StarBASIC::GetCol1()); + fprintf(stderr,"Basic error: %s\n", rtl::OUStringToOString( StarBASIC::GetErrorText(), RTL_TEXTENCODING_UTF8 ).getStr() ); mbError = true; return 0; } commit a9fc6ee7dc640f016728bf524d684696a376e989 Author: Noel Power <noel.po...@suse.com> Date: Wed Mar 6 21:14:08 2013 +0000 Create new Macro helper class to help invoking macros for unittests Change-Id: Icc3cbfc3eae6ade037960497e7fe2addf1912897 diff --git a/basic/qa/cppunit/basictest.hxx b/basic/qa/cppunit/basictest.hxx index bb26a23..d94abbf 100644 --- a/basic/qa/cppunit/basictest.hxx +++ b/basic/qa/cppunit/basictest.hxx @@ -16,6 +16,11 @@ #include <test/bootstrapfixture.hxx> #include "basic/sbstar.hxx" #include "basic/basrdll.hxx" +#include "basic/sbmod.hxx" +#include "basic/sbmeth.hxx" +#include "basic/basrdll.hxx" +#include "basic/sbuno.hxx" +#include <osl/file.hxx> class BasicTestBase : public test::BootstrapFixture { @@ -46,6 +51,138 @@ IMPL_LINK( BasicTestBase, BasicErrorHdl, StarBASIC *, /*pBasic*/) return 0; } +class MacroSnippet +{ + private: + bool mbError; + SbModuleRef mpMod; + StarBASICRef mpBasic; + + void InitSnippet() + { + CPPUNIT_ASSERT_MESSAGE( "No resource manager", basicDLL().GetBasResMgr() != NULL ); + mpBasic = new StarBASIC(); + StarBASIC::SetGlobalErrorHdl( LINK( this, MacroSnippet, BasicErrorHdl ) ); + } + void MakeModule( const OUString& sSource ) + { + mpMod = mpBasic->MakeModule( OUString( "TestModule" ), sSource ); + } + public: + struct ErrorDetail + { + OUString sErrorText; + int nLine; + int nCol; + ErrorDetail() : nLine(0), nCol(0) {} + }; + + MacroSnippet( const OUString& sSource ) : mbError(false) + { + InitSnippet(); + MakeModule( sSource ); + }; + MacroSnippet() : mbError(false) + { + InitSnippet(); + }; + void LoadSourceFromFile( const OUString& sMacroFileURL ) + { + OUString sSource; + printf("loadSource opening macro file %s\n", OUStringToOString( sMacroFileURL, RTL_TEXTENCODING_UTF8 ).getStr() ); + + osl::File aFile(sMacroFileURL); + if(osl::FileBase::E_None == aFile.open(osl_File_OpenFlag_Read)) + { + sal_uInt64 size; + sal_uInt64 size_read; + if(osl::FileBase::E_None == aFile.getSize(size)) + { + void* buffer = calloc(1, size+1); + CPPUNIT_ASSERT(buffer); + if(osl::FileBase::E_None == aFile.read( buffer, size, size_read)) + { + if(size == size_read) + { + OUString sCode((sal_Char*)buffer, size, RTL_TEXTENCODING_UTF8); + sSource = sCode; + } + } + } + } + CPPUNIT_ASSERT_MESSAGE( "Source is empty", ( sSource.getLength() > 0 ) ); + MakeModule( sSource ); + } + + SbxVariableRef Run( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& rArgs ) + { + SbxVariableRef pReturn = NULL; + if ( !Compile() ) + return pReturn; + SbMethod* pMeth = mpMod ? static_cast<SbMethod*>(mpMod->Find( OUString("test"), SbxCLASS_METHOD )) : NULL; + if ( pMeth ) + { + if ( rArgs.getLength() ) + { + SbxArrayRef aArgs = new SbxArray; + for ( int i=0; i < rArgs.getLength(); ++i ) + { + SbxVariable* pVar = new SbxVariable(); + unoToSbxValue( pVar, rArgs[ i ] ); + aArgs->Put( pVar, i + 1 ); + } + pMeth->SetParameters( aArgs ); + } + pReturn = new SbxMethod( *((SbxMethod*)pMeth)); + } + return pReturn; + } + + SbxVariableRef Run() + { + ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > aArgs; + return Run( aArgs ); + } + + bool Compile() + { + CPPUNIT_ASSERT_MESSAGE("module is NULL", mpMod != NULL ); + mpMod->Compile(); + return !mbError; + } + + DECL_LINK( BasicErrorHdl, StarBASIC * ); + + ErrorDetail GetError() + { + ErrorDetail aErr; + aErr.sErrorText = StarBASIC::GetErrorText(); + aErr.nLine = StarBASIC::GetLine(); + aErr.nCol = StarBASIC::GetCol1(); + return aErr; + } + + bool HasError() { return mbError; } + + void ResetError() + { + StarBASIC::SetGlobalErrorHdl( Link() ); + mbError = false; + } + + BasicDLL& basicDLL() + { + static BasicDLL maDll; // we need a dll instance for resouce manager etc. + return maDll; + } +}; + +IMPL_LINK( MacroSnippet, BasicErrorHdl, StarBASIC *, /*pBasic*/) +{ + fprintf(stderr,"Got error: \n\t%s!!!\n", OUStringToOString( StarBASIC::GetErrorText(), RTL_TEXTENCODING_UTF8 ).getStr() ); + mbError = true; + return 0; +} #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits