diff options
author | Noel Power <noel.power@novell.com> | 2012-07-05 15:02:06 +0100 |
---|---|---|
committer | Noel Power <noel.power@novell.com> | 2012-07-05 15:03:11 +0100 |
commit | 8e9e166d35191eaacfe2001fa0d50fb8c29394f4 (patch) | |
tree | d2d9ad27ca3950ae475420473947cada15308b93 /basic/qa | |
parent | 4a9c5b336a95fd10261e8e24b22137eec2257a3f (diff) |
fix missing makefile, also add a further test to test_nested_struct.cxx
Change-Id: I7da88595fd3024f72b260267e34200375358e401
Diffstat (limited to 'basic/qa')
-rw-r--r-- | basic/qa/cppunit/test_nested_struct.cxx | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/basic/qa/cppunit/test_nested_struct.cxx b/basic/qa/cppunit/test_nested_struct.cxx index f0684bf7c0e4..defcaf1b2fe3 100644 --- a/basic/qa/cppunit/test_nested_struct.cxx +++ b/basic/qa/cppunit/test_nested_struct.cxx @@ -19,16 +19,20 @@ namespace public: Nested_Struct() {}; void testAssign1(); + void testOldAssign(); // Adds code needed to register the test suite CPPUNIT_TEST_SUITE(Nested_Struct); // Declares the method as a test to call CPPUNIT_TEST(testAssign1); + CPPUNIT_TEST(testOldAssign); // End of test suite definition CPPUNIT_TEST_SUITE_END(); }; +// 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" "Dim b0 as new \"com.sun.star.table.TableBorder\"\n" @@ -37,6 +41,22 @@ rtl::OUString sTestSource1( "End Function\n" ); +// tests the old behaviour, we should still be able +// to use the old workaround of +// a) creating a new instance BorderLine, +// b) cloning the new instance with the value of b0.HorizontalLine +// c) modifying the new instance +// d) setting b0.HorizontalLine with the value of the new instance +rtl::OUString sTestSource2( + "Function simpleRegressionTestOld()\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" +"End Function\n" +); + void Nested_Struct::testAssign1() { CPPUNIT_ASSERT_MESSAGE( "No resource manager", basicDLL().GetBasResMgr() != NULL ); @@ -55,6 +75,24 @@ void Nested_Struct::testAssign1() CPPUNIT_ASSERT(pNew->GetInteger() == 9 ); } +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)); + CPPUNIT_ASSERT(pNew->GetInteger() == 9 ); +} + // Put the test suite in the registry CPPUNIT_TEST_SUITE_REGISTRATION(Nested_Struct); } // namespace |