Kaydet (Commit) 8534787f authored tarafından Noel Power's avatar Noel Power

adapt existing tests to use MacroSnipper helper class

Change-Id: I50980d9510b82277a5da04cc4f6c1d3ec8e7c756
üst 49417b0b
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
namespace namespace
{ {
class Coverage : public BasicTestBase class Coverage : public test::BootstrapFixture
{ {
private: private:
bool m_bError; bool m_bError;
...@@ -32,8 +32,6 @@ private: ...@@ -32,8 +32,6 @@ private:
void test_success(void); void test_success(void);
void print_summary() {}; void print_summary() {};
DECL_LINK( CoverageErrorHdl, StarBASIC * );
public: public:
Coverage(); Coverage();
~Coverage(); ~Coverage();
...@@ -50,18 +48,9 @@ public: ...@@ -50,18 +48,9 @@ public:
CPPUNIT_TEST_SUITE_END(); 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() Coverage::Coverage()
: m_bError(false) : BootstrapFixture(true, false)
, m_bError(false)
, m_nb_tests(0) , m_nb_tests(0)
, m_nb_tests_ok(0) , m_nb_tests_ok(0)
, m_nb_tests_skipped(0) , m_nb_tests_skipped(0)
...@@ -94,27 +83,16 @@ void Coverage::test_success() ...@@ -94,27 +83,16 @@ void Coverage::test_success()
void Coverage::run_test(OUString /*sFileName*/, OUString sCode) void Coverage::run_test(OUString /*sFileName*/, OUString sCode)
{ {
bool result = false; bool result = false;
CPPUNIT_ASSERT_MESSAGE( "No resource manager", basicDLL().GetBasResMgr() != NULL ); MacroSnippet testMacro( sCode );
StarBASICRef pBasic = new StarBASIC(); testMacro.Compile();
ResetError(); if( !testMacro.HasError() )
StarBASIC::SetGlobalErrorHdl( LINK( this, Coverage, CoverageErrorHdl ) );
SbModule* pMod = pBasic->MakeModule( rtl::OUString( "TestModule" ), sCode );
pMod->Compile();
if(!m_bError)
{
SbMethod* pMeth = static_cast<SbMethod*>(pMod->Find( rtl::OUString("doUnitTest"), SbxCLASS_METHOD ));
if(pMeth)
{ {
SbxVariableRef refTemp = pMeth; SbxVariableRef pResult = testMacro.Run();
// forces a broadcast if( pResult && pResult->GetInteger() == 1 )
SbxVariableRef pNew = new SbxMethod( *((SbxMethod*)pMeth));
if(pNew->GetInteger() == 1 )
{ {
result = true; result = true;
} }
} }
}
if(result) if(result)
{ {
test_success(); test_success();
......
...@@ -15,10 +15,10 @@ ...@@ -15,10 +15,10 @@
#include "basic/sbmeth.hxx" #include "basic/sbmeth.hxx"
namespace namespace
{ {
class EnableTest : public BasicTestBase class EnableTest : public test::BootstrapFixture
{ {
public: public:
EnableTest() {}; EnableTest() : BootstrapFixture(true, false) {};
void testDimEnable(); void testDimEnable();
void testEnableRuntime(); void testEnableRuntime();
// Adds code needed to register the test suite // Adds code needed to register the test suite
...@@ -33,50 +33,34 @@ namespace ...@@ -33,50 +33,34 @@ namespace
}; };
rtl::OUString sTestEnableRuntime( rtl::OUString sTestEnableRuntime(
"Function Test as Integer\n" "Function doUnitTest as Integer\n"
"Dim Enable as Integer\n" "Dim Enable as Integer\n"
"Enable = 1\n" "Enable = 1\n"
"Enable = Enable + 2\n" "Enable = Enable + 2\n"
"Test = Enable\n" "doUnitTest = Enable\n"
"End Function\n" "End Function\n"
); );
rtl::OUString sTestDimEnable( rtl::OUString sTestDimEnable(
"Sub Test\n" "Sub doUnitTest\n"
"Dim Enable as String\n" "Dim Enable as String\n"
"End Sub\n" "End Sub\n"
); );
void EnableTest::testEnableRuntime() void EnableTest::testEnableRuntime()
{ {
CPPUNIT_ASSERT_MESSAGE( "No resource manager", basicDLL().GetBasResMgr() != NULL ); MacroSnippet myMacro(sTestEnableRuntime);
StarBASICRef pBasic = new StarBASIC(); myMacro.Compile();
ResetError(); CPPUNIT_ASSERT_MESSAGE("testEnableRuntime fails with compile error",!myMacro.HasError() );
StarBASIC::SetGlobalErrorHdl( LINK( this, EnableTest, BasicErrorHdl ) ); SbxVariableRef pNew = myMacro.Run();
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));
CPPUNIT_ASSERT(pNew->GetInteger() == 3 ); CPPUNIT_ASSERT(pNew->GetInteger() == 3 );
} }
void EnableTest::testDimEnable() void EnableTest::testDimEnable()
{ {
CPPUNIT_ASSERT_MESSAGE( "No resource manager", basicDLL().GetBasResMgr() != NULL ); MacroSnippet myMacro(sTestDimEnable);
StarBASICRef pBasic = new StarBASIC(); myMacro.Compile();
StarBASIC::SetGlobalErrorHdl( LINK( this, EnableTest, BasicErrorHdl ) ); CPPUNIT_ASSERT_MESSAGE("Dim causes compile error", !myMacro.HasError() );
ResetError();
SbModule* pMod = pBasic->MakeModule( rtl::OUString( "TestModule" ), sTestDimEnable );
pMod->Compile();
CPPUNIT_ASSERT_MESSAGE("Dim causes compile error", !HasError() );
} }
// Put the test suite in the registry // Put the test suite in the registry
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment