#include "sal/config.h" #include "sal/precppunit.hxx" #include "cppunit/TestAssert.h" #include "cppunit/TestFixture.h" #include "cppunit/extensions/HelperMacros.h" #include "cppunit/plugin/TestPlugIn.h" #include "osl/file.hxx" #include "osl/process.h" #include "scanner.hxx" namespace { struct Symbol { sal_uInt16 line; sal_uInt16 col1; sal_uInt16 col2; rtl::OUString text; double number; SbxDataType type; }; /** * Perform tests on Scanner. */ class ScannerTest : public CppUnit::TestFixture { private: void testBlankLines(); void testOperators(); void testAlphanum(); void testComments(); void testGoto(); void testExclamation(); void testNumbers(); // Adds code needed to register the test suite CPPUNIT_TEST_SUITE(ScannerTest); // Declares the method as a test to call CPPUNIT_TEST(testBlankLines); CPPUNIT_TEST(testOperators); CPPUNIT_TEST(testAlphanum); CPPUNIT_TEST(testComments); CPPUNIT_TEST(testGoto); CPPUNIT_TEST(testExclamation); CPPUNIT_TEST(testNumbers); // End of test suite definition CPPUNIT_TEST_SUITE_END(); }; const static rtl::OUString cr(RTL_CONSTASCII_USTRINGPARAM("\n")); const static rtl::OUString rem(RTL_CONSTASCII_USTRINGPARAM("REM")); const static rtl::OUString asdf(RTL_CONSTASCII_USTRINGPARAM("asdf")); const static rtl::OUString dot(RTL_CONSTASCII_USTRINGPARAM(".")); const static rtl::OUString goto_(RTL_CONSTASCII_USTRINGPARAM("goto")); const static rtl::OUString excl(RTL_CONSTASCII_USTRINGPARAM("!")); std::vector getSymbols(const rtl::OUString& source) { std::vector symbols; SbiScanner scanner(source); while(scanner.NextSym()) { Symbol symbol; symbol.line = scanner.GetLine(); symbol.col1 = scanner.GetCol1(); symbol.col2 = scanner.GetCol2(); symbol.text = scanner.GetSym(); symbol.number = scanner.GetDbl(); symbol.type = scanner.GetType(); symbols.push_back(symbol); } return symbols; } void ScannerTest::testBlankLines() { const rtl::OUString source1(RTL_CONSTASCII_USTRINGPARAM("")); const rtl::OUString source2(RTL_CONSTASCII_USTRINGPARAM("\r\n")); const rtl::OUString source3(RTL_CONSTASCII_USTRINGPARAM("\n")); const rtl::OUString source4(RTL_CONSTASCII_USTRINGPARAM("\r")); const rtl::OUString source5(RTL_CONSTASCII_USTRINGPARAM("\r\n\r\n")); const rtl::OUString source6(RTL_CONSTASCII_USTRINGPARAM("\n\r")); const rtl::OUString source7(RTL_CONSTASCII_USTRINGPARAM("\n\r\n")); const rtl::OUString source8(RTL_CONSTASCII_USTRINGPARAM("\r\n\r")); const rtl::OUString source9(RTL_CONSTASCII_USTRINGPARAM(" ")); std::vector symbols; symbols = getSymbols(source1); CPPUNIT_ASSERT(symbols.empty()); symbols = getSymbols(source2); CPPUNIT_ASSERT(symbols.size() == 1); CPPUNIT_ASSERT(symbols[0].text == cr); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); symbols = getSymbols(source3); CPPUNIT_ASSERT(symbols.size() == 1); CPPUNIT_ASSERT(symbols[0].text == cr); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); symbols = getSymbols(source4); CPPUNIT_ASSERT(symbols.size() == 1); CPPUNIT_ASSERT(symbols[0].text == cr); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); symbols = getSymbols(source5); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == cr); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(source6); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == cr); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(source7); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == cr); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(source8); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == cr); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(source9); CPPUNIT_ASSERT(symbols.size() == 1); CPPUNIT_ASSERT(symbols[0].text == cr); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); } void ScannerTest::testOperators() { const rtl::OUString sourceE(RTL_CONSTASCII_USTRINGPARAM("=")); const rtl::OUString sourceLT(RTL_CONSTASCII_USTRINGPARAM("<")); const rtl::OUString sourceGT(RTL_CONSTASCII_USTRINGPARAM(">")); const rtl::OUString sourceLTE(RTL_CONSTASCII_USTRINGPARAM("<=")); const rtl::OUString sourceGTE(RTL_CONSTASCII_USTRINGPARAM(">=")); const rtl::OUString sourceEE(RTL_CONSTASCII_USTRINGPARAM("==")); const rtl::OUString sourceNE(RTL_CONSTASCII_USTRINGPARAM("<>")); const rtl::OUString sourceA(RTL_CONSTASCII_USTRINGPARAM(":=")); std::vector symbols; symbols = getSymbols(sourceE); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == sourceE); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(sourceLT); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == sourceLT); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(sourceGT); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == sourceGT); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(sourceLTE); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == sourceLTE); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(sourceGTE); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == sourceGTE); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(sourceEE); CPPUNIT_ASSERT(symbols.size() == 3); CPPUNIT_ASSERT(symbols[0].text == sourceE); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == sourceE); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[2].text == cr); CPPUNIT_ASSERT(symbols[2].type == SbxVARIANT); symbols = getSymbols(sourceNE); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == sourceNE); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(sourceA); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == sourceA); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); } void ScannerTest::testAlphanum() { const rtl::OUString source1(RTL_CONSTASCII_USTRINGPARAM("asdfghefg")); const rtl::OUString source2(RTL_CONSTASCII_USTRINGPARAM("1asfdasfd")); const rtl::OUString source3(RTL_CONSTASCII_USTRINGPARAM("AdfsaAUdsl10987")); const rtl::OUString source4(RTL_CONSTASCII_USTRINGPARAM("asdfa_mnvcnm")); const rtl::OUString source5(RTL_CONSTASCII_USTRINGPARAM("_asdf1")); const rtl::OUString source6(RTL_CONSTASCII_USTRINGPARAM("_6")); const rtl::OUString source7(RTL_CONSTASCII_USTRINGPARAM("joxclk_")); const rtl::OUString source8(RTL_CONSTASCII_USTRINGPARAM(" asdf ")); const rtl::OUString source9(RTL_CONSTASCII_USTRINGPARAM(" 19395 asdfa ")); const rtl::OUString source10(RTL_CONSTASCII_USTRINGPARAM("\n1\n2\na sdf")); const rtl::OUString source11(RTL_CONSTASCII_USTRINGPARAM("asdf.asdf")); const rtl::OUString source12(RTL_CONSTASCII_USTRINGPARAM("..")); std::vector symbols; symbols = getSymbols(source1); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == source1); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(source2); CPPUNIT_ASSERT(symbols.size() == 3); CPPUNIT_ASSERT(symbols[0].text.isEmpty()); // Can't start symbol with a digit CPPUNIT_ASSERT(symbols[0].number == 1); CPPUNIT_ASSERT(symbols[0].type == SbxINTEGER); CPPUNIT_ASSERT(symbols[1].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("asfdasfd"))); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[2].text == cr); CPPUNIT_ASSERT(symbols[2].type == SbxVARIANT); symbols = getSymbols(source3); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == source3); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(source4); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == source4); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(source5); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == source5); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(source6); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == source6); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(source7); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("joxclk_"))); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(source7 == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("joxclk "))); // Change the trailing '_' to a ' ' CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(source8); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("asdf"))); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(source9); CPPUNIT_ASSERT(symbols.size() == 3); CPPUNIT_ASSERT(symbols[0].text.isEmpty()); CPPUNIT_ASSERT(symbols[0].number = 19395); CPPUNIT_ASSERT(symbols[0].type == SbxINTEGER); CPPUNIT_ASSERT(symbols[1].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("asdfa"))); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[2].text == cr); CPPUNIT_ASSERT(symbols[2].type == SbxVARIANT); symbols = getSymbols(source10); CPPUNIT_ASSERT(symbols.size() == 8); CPPUNIT_ASSERT(symbols[0].text == cr); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text.isEmpty()); CPPUNIT_ASSERT(symbols[1].number == 1); CPPUNIT_ASSERT(symbols[1].type == SbxINTEGER); CPPUNIT_ASSERT(symbols[2].text == cr); CPPUNIT_ASSERT(symbols[2].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[3].text.isEmpty()); CPPUNIT_ASSERT(symbols[3].number == 2); CPPUNIT_ASSERT(symbols[3].type == SbxINTEGER); CPPUNIT_ASSERT(symbols[4].text == cr); CPPUNIT_ASSERT(symbols[4].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[5].text.getLength() == 1); CPPUNIT_ASSERT(symbols[5].text[0] == 'a'); CPPUNIT_ASSERT(symbols[5].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[6].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("sdf"))); CPPUNIT_ASSERT(symbols[6].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[7].text == cr); CPPUNIT_ASSERT(symbols[7].type == SbxVARIANT); symbols = getSymbols(source11); CPPUNIT_ASSERT(symbols.size() == 4); CPPUNIT_ASSERT(symbols[0].text == asdf); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == dot); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[2].text == asdf); CPPUNIT_ASSERT(symbols[2].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[3].text == cr); CPPUNIT_ASSERT(symbols[3].type == SbxVARIANT); symbols = getSymbols(source12); CPPUNIT_ASSERT(symbols.size() == 3); CPPUNIT_ASSERT(symbols[0].text == dot); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == dot); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[2].text == cr); CPPUNIT_ASSERT(symbols[2].type == SbxVARIANT); } void ScannerTest::testComments() { const rtl::OUString source1(RTL_CONSTASCII_USTRINGPARAM("REM asdf")); const rtl::OUString source2(RTL_CONSTASCII_USTRINGPARAM("REMasdf")); const rtl::OUString source3(RTL_CONSTASCII_USTRINGPARAM("'asdf")); const rtl::OUString source4(RTL_CONSTASCII_USTRINGPARAM("asdf _\n'100")); const rtl::OUString source5(RTL_CONSTASCII_USTRINGPARAM("'asdf _\n100")); const rtl::OUString source6(RTL_CONSTASCII_USTRINGPARAM("'asdf _\n'100")); const rtl::OUString source7(RTL_CONSTASCII_USTRINGPARAM("'asdf _\n 1234 _\n asdf'")); std::vector symbols; symbols = getSymbols(source1); CPPUNIT_ASSERT(symbols.size() == 1); CPPUNIT_ASSERT(symbols[0].text == rem); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); symbols = getSymbols(source2); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("REMasdf"))); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(source3); CPPUNIT_ASSERT(symbols.size() == 1); CPPUNIT_ASSERT(symbols[0].text == rem); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); symbols = getSymbols(source4); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == asdf); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == rem); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(source5); CPPUNIT_ASSERT(symbols.size() == 3); CPPUNIT_ASSERT(symbols[0].text == rem); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text.isEmpty()); CPPUNIT_ASSERT(symbols[1].number == 100); CPPUNIT_ASSERT(symbols[1].type == SbxINTEGER); CPPUNIT_ASSERT(symbols[2].text == cr); CPPUNIT_ASSERT(symbols[2].type == SbxVARIANT); symbols = getSymbols(source6); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == rem); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == rem); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(source7); CPPUNIT_ASSERT(symbols.size() == 4); CPPUNIT_ASSERT(symbols[0].text == rem); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text.isEmpty()); CPPUNIT_ASSERT(symbols[1].number == 1234); CPPUNIT_ASSERT(symbols[1].type == SbxINTEGER); CPPUNIT_ASSERT(symbols[2].text == asdf); CPPUNIT_ASSERT(symbols[2].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[3].text == rem); CPPUNIT_ASSERT(symbols[3].type == SbxVARIANT); } void ScannerTest::testGoto() { const rtl::OUString source1(RTL_CONSTASCII_USTRINGPARAM("goto")); const rtl::OUString source2(RTL_CONSTASCII_USTRINGPARAM("go to")); const rtl::OUString source3(RTL_CONSTASCII_USTRINGPARAM("go\nto")); std::vector symbols; symbols = getSymbols(source1); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == goto_); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); symbols = getSymbols(source2); CPPUNIT_ASSERT(symbols.size() == 3); CPPUNIT_ASSERT(symbols[0].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("go"))); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("to"))); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[2].text == cr); CPPUNIT_ASSERT(symbols[2].type == SbxVARIANT); symbols = getSymbols(source3); CPPUNIT_ASSERT(symbols.size() == 4); CPPUNIT_ASSERT(symbols[0].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("go"))); CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[1].text == cr); CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[2].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("to"))); CPPUNIT_ASSERT(symbols[2].type == SbxVARIANT); CPPUNIT_ASSERT(symbols[3].text == cr); CPPUNIT_ASSERT(symbols[3].type == SbxVARIANT); } void ScannerTest::testExclamation() { const rtl::OUString source1(RTL_CONSTASCII_USTRINGPARAM("asdf!asdf")); const rtl::OUString source2(RTL_CONSTASCII_USTRINGPARAM("!1234")); const rtl::OUString source3(RTL_CONSTASCII_USTRINGPARAM("!_3")); const rtl::OUString source4(RTL_CONSTASCII_USTRINGPARAM("!$")); const rtl::OUString source5(RTL_CONSTASCII_USTRINGPARAM("!%")); const rtl::OUString source6(RTL_CONSTASCII_USTRINGPARAM("!\n")); std::vector symbols; symbols = getSymbols(source1); CPPUNIT_ASSERT(symbols.size() == 4); CPPUNIT_ASSERT(symbols[0].text == asdf); CPPUNIT_ASSERT(symbols[1].text == excl); CPPUNIT_ASSERT(symbols[2].text == asdf); CPPUNIT_ASSERT(symbols[3].text == cr); symbols = getSymbols(source2); CPPUNIT_ASSERT(symbols.size() == 3); CPPUNIT_ASSERT(symbols[0].text == excl); CPPUNIT_ASSERT(symbols[1].text.isEmpty()); CPPUNIT_ASSERT(symbols[1].number == 1234); CPPUNIT_ASSERT(symbols[2].text == cr); symbols = getSymbols(source3); CPPUNIT_ASSERT(symbols.size() == 3); CPPUNIT_ASSERT(symbols[0].text == excl); CPPUNIT_ASSERT(symbols[1].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_3"))); CPPUNIT_ASSERT(symbols[2].text == cr); symbols = getSymbols(source4); CPPUNIT_ASSERT(symbols.size() == 3); CPPUNIT_ASSERT(symbols[0].text == excl); CPPUNIT_ASSERT(symbols[1].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("$"))); CPPUNIT_ASSERT(symbols[2].text == cr); symbols = getSymbols(source5); CPPUNIT_ASSERT(symbols.size() == 3); CPPUNIT_ASSERT(symbols[0].text == excl); CPPUNIT_ASSERT(symbols[1].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%"))); CPPUNIT_ASSERT(symbols[2].text == cr); symbols = getSymbols(source6); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].text == excl); CPPUNIT_ASSERT(symbols[1].text == cr); } void ScannerTest::testNumbers() { const rtl::OUString source1(RTL_CONSTASCII_USTRINGPARAM("12345")); const rtl::OUString source2(RTL_CONSTASCII_USTRINGPARAM("1.2.3")); const rtl::OUString source3(RTL_CONSTASCII_USTRINGPARAM("123.4")); const rtl::OUString source4(RTL_CONSTASCII_USTRINGPARAM("0.5")); const rtl::OUString source5(RTL_CONSTASCII_USTRINGPARAM("5.0")); const rtl::OUString source6(RTL_CONSTASCII_USTRINGPARAM("0.0")); const rtl::OUString source7(RTL_CONSTASCII_USTRINGPARAM("-3")); const rtl::OUString source8(RTL_CONSTASCII_USTRINGPARAM("-0.0")); const rtl::OUString source9(RTL_CONSTASCII_USTRINGPARAM("12dE3")); const rtl::OUString source10(RTL_CONSTASCII_USTRINGPARAM("12e3")); std::vector symbols; symbols = getSymbols(source1); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].number == 12345); CPPUNIT_ASSERT(symbols[1].text == cr); symbols = getSymbols(source2); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].number == 1.23); CPPUNIT_ASSERT(symbols[1].text == cr); symbols = getSymbols(source3); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].number = 123.4); CPPUNIT_ASSERT(symbols[1].text == cr); symbols = getSymbols(source4); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].number == .5); CPPUNIT_ASSERT(symbols[1].text == cr); symbols = getSymbols(source5); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].number == 5); CPPUNIT_ASSERT(symbols[1].text == cr); symbols = getSymbols(source6); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].number == 0); CPPUNIT_ASSERT(symbols[1].text == cr); symbols = getSymbols(source7); CPPUNIT_ASSERT(symbols.size() == 3); CPPUNIT_ASSERT(symbols[0].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-"))); CPPUNIT_ASSERT(symbols[1].number == 3); CPPUNIT_ASSERT(symbols[2].text == cr); symbols = getSymbols(source8); CPPUNIT_ASSERT(symbols.size() == 3); CPPUNIT_ASSERT(symbols[0].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-"))); CPPUNIT_ASSERT(symbols[1].number == 0); CPPUNIT_ASSERT(symbols[2].text == cr); symbols = getSymbols(source9); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].number == 12000); CPPUNIT_ASSERT(symbols[1].text == cr); symbols = getSymbols(source10); CPPUNIT_ASSERT(symbols.size() == 2); CPPUNIT_ASSERT(symbols[0].number == 12000); CPPUNIT_ASSERT(symbols[1].text == cr); } // Put the test suite in the registry CPPUNIT_TEST_SUITE_REGISTRATION(ScannerTest); } // namespace CPPUNIT_PLUGIN_IMPLEMENT();