LCOV - code coverage report
Current view: top level - basic/qa/cppunit - test_scanner.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 663 663 100.0 %
Date: 2012-08-25 Functions: 24 25 96.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 3739 7480 50.0 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*
       3                 :            :  * This file is part of the LibreOffice project.
       4                 :            :  *
       5                 :            :  * This Source Code Form is subject to the terms of the Mozilla Public
       6                 :            :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7                 :            :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8                 :            :  */
       9                 :            : 
      10                 :            : #include <sal/types.h>
      11                 :            : #include "cppunit/TestAssert.h"
      12                 :            : #include "cppunit/TestFixture.h"
      13                 :            : #include "cppunit/extensions/HelperMacros.h"
      14                 :            : #include "cppunit/plugin/TestPlugIn.h"
      15                 :            : 
      16                 :            : #include "osl/file.hxx"
      17                 :            : #include "osl/process.h"
      18                 :            : 
      19                 :            : #include "scanner.hxx"
      20                 :            : 
      21                 :            : namespace
      22                 :            : {
      23                 :       5190 :   struct Symbol
      24                 :            :   {
      25                 :            :     sal_uInt16 line;
      26                 :            :     sal_uInt16 col1;
      27                 :            :     sal_uInt16 col2;
      28                 :            :     rtl::OUString text;
      29                 :            :     double number;
      30                 :            :     SbxDataType type;
      31                 :            :   };
      32                 :            : 
      33                 :            :   /**
      34                 :            :    * Perform tests on Scanner.
      35                 :            :    */
      36         [ -  + ]:        150 :   class ScannerTest : public CppUnit::TestFixture
      37                 :            :   {
      38                 :            :   private:
      39                 :            :     void testBlankLines();
      40                 :            :     void testOperators();
      41                 :            :     void testAlphanum();
      42                 :            :     void testComments();
      43                 :            :     void testGoto();
      44                 :            :     void testGotoCompatible();
      45                 :            :     void testExclamation();
      46                 :            :     void testNumbers();
      47                 :            :     void testDataType();
      48                 :            :     void testHexOctal();
      49                 :            : 
      50                 :            :     // Adds code needed to register the test suite
      51 [ +  - ][ +  - ]:         10 :     CPPUNIT_TEST_SUITE(ScannerTest);
         [ +  - ][ +  - ]
                 [ #  # ]
      52                 :            : 
      53                 :            :     // Declares the method as a test to call
      54 [ +  - ][ +  - ]:          5 :     CPPUNIT_TEST(testBlankLines);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
      55 [ +  - ][ +  - ]:          5 :     CPPUNIT_TEST(testOperators);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
      56 [ +  - ][ +  - ]:          5 :     CPPUNIT_TEST(testAlphanum);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
      57 [ +  - ][ +  - ]:          5 :     CPPUNIT_TEST(testComments);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
      58 [ +  - ][ +  - ]:          5 :     CPPUNIT_TEST(testGoto);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
      59 [ +  - ][ +  - ]:          5 :     CPPUNIT_TEST(testGotoCompatible);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
      60 [ +  - ][ +  - ]:          5 :     CPPUNIT_TEST(testExclamation);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
      61 [ +  - ][ +  - ]:          5 :     CPPUNIT_TEST(testNumbers);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
      62 [ +  - ][ +  - ]:          5 :     CPPUNIT_TEST(testDataType);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
      63 [ +  - ][ +  - ]:          5 :     CPPUNIT_TEST(testHexOctal);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
      64                 :            : 
      65                 :            :     // End of test suite definition
      66 [ +  - ][ +  - ]:         10 :     CPPUNIT_TEST_SUITE_END();
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
      67                 :            :   };
      68                 :            : 
      69                 :          5 :   const static rtl::OUString cr(RTL_CONSTASCII_USTRINGPARAM("\n"));
      70                 :          5 :   const static rtl::OUString rem(RTL_CONSTASCII_USTRINGPARAM("REM"));
      71                 :          5 :   const static rtl::OUString asdf(RTL_CONSTASCII_USTRINGPARAM("asdf"));
      72                 :          5 :   const static rtl::OUString dot(RTL_CONSTASCII_USTRINGPARAM("."));
      73                 :          5 :   const static rtl::OUString goto_(RTL_CONSTASCII_USTRINGPARAM("goto"));
      74                 :          5 :   const static rtl::OUString excl(RTL_CONSTASCII_USTRINGPARAM("!"));
      75                 :            : 
      76                 :        400 :   std::vector<Symbol> getSymbols(const rtl::OUString& source, sal_Int32& errors, bool bCompatible = false)
      77                 :            :   {
      78         [ +  - ]:        400 :     std::vector<Symbol> symbols;
      79         [ +  - ]:        400 :     SbiScanner scanner(source);
      80                 :        400 :     scanner.EnableErrors();
      81                 :        400 :     scanner.SetCompatible(bCompatible);
      82 [ +  - ][ +  + ]:       1365 :     while(scanner.NextSym())
      83                 :            :     {
      84                 :        965 :       Symbol symbol;
      85                 :        965 :       symbol.line = scanner.GetLine();
      86                 :        965 :       symbol.col1 = scanner.GetCol1();
      87                 :        965 :       symbol.col2 = scanner.GetCol2();
      88                 :        965 :       symbol.text = scanner.GetSym();
      89                 :        965 :       symbol.number = scanner.GetDbl();
      90                 :        965 :       symbol.type = scanner.GetType();
      91         [ +  - ]:        965 :       symbols.push_back(symbol);
      92                 :        965 :     }
      93                 :        400 :     errors = scanner.GetErrors();
      94         [ +  - ]:        400 :     return symbols;
      95                 :            :   }
      96                 :            : 
      97                 :        320 :   std::vector<Symbol> getSymbols(const rtl::OUString& source, bool bCompatible = false)
      98                 :            :   {
      99                 :            :     sal_Int32 i;
     100         [ +  - ]:        320 :     return getSymbols(source, i, bCompatible);
     101                 :            :   }
     102                 :            : 
     103                 :          5 :   void ScannerTest::testBlankLines()
     104                 :            :   {
     105         [ +  - ]:          5 :     const rtl::OUString source1(RTL_CONSTASCII_USTRINGPARAM(""));
     106         [ +  - ]:          5 :     const rtl::OUString source2(RTL_CONSTASCII_USTRINGPARAM("\r\n"));
     107         [ +  - ]:          5 :     const rtl::OUString source3(RTL_CONSTASCII_USTRINGPARAM("\n"));
     108         [ +  - ]:          5 :     const rtl::OUString source4(RTL_CONSTASCII_USTRINGPARAM("\r"));
     109         [ +  - ]:          5 :     const rtl::OUString source5(RTL_CONSTASCII_USTRINGPARAM("\r\n\r\n"));
     110         [ +  - ]:          5 :     const rtl::OUString source6(RTL_CONSTASCII_USTRINGPARAM("\n\r"));
     111         [ +  - ]:          5 :     const rtl::OUString source7(RTL_CONSTASCII_USTRINGPARAM("\n\r\n"));
     112         [ +  - ]:          5 :     const rtl::OUString source8(RTL_CONSTASCII_USTRINGPARAM("\r\n\r"));
     113         [ +  - ]:          5 :     const rtl::OUString source9(RTL_CONSTASCII_USTRINGPARAM("      "));
     114                 :            : 
     115         [ +  - ]:          5 :     std::vector<Symbol> symbols;
     116         [ +  - ]:          5 :     symbols = getSymbols(source1);
     117 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.empty());
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     118                 :            : 
     119         [ +  - ]:          5 :     symbols = getSymbols(source2);
     120 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 1);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     121 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     122 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     123                 :            : 
     124         [ +  - ]:          5 :     symbols = getSymbols(source3);
     125 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 1);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     126 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     127 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     128                 :            : 
     129         [ +  - ]:          5 :     symbols = getSymbols(source4);
     130 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 1);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     131 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     132 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     133                 :            : 
     134         [ +  - ]:          5 :     symbols = getSymbols(source5);
     135 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     136 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     137 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     138 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     139 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     140                 :            : 
     141         [ +  - ]:          5 :     symbols = getSymbols(source6);
     142 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     143 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     144 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     145 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     146 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     147                 :            : 
     148         [ +  - ]:          5 :     symbols = getSymbols(source7);
     149 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     150 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     151 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     152 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     153 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     154                 :            : 
     155         [ +  - ]:          5 :     symbols = getSymbols(source8);
     156 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     157 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     158 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     159 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     160 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     161                 :            : 
     162         [ +  - ]:          5 :     symbols = getSymbols(source9);
     163 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 1);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     164 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     165 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     166                 :          5 :   }
     167                 :            : 
     168                 :          5 :   void ScannerTest::testOperators()
     169                 :            :   {
     170         [ +  - ]:          5 :     const rtl::OUString sourceE(RTL_CONSTASCII_USTRINGPARAM("="));
     171         [ +  - ]:          5 :     const rtl::OUString sourceLT(RTL_CONSTASCII_USTRINGPARAM("<"));
     172         [ +  - ]:          5 :     const rtl::OUString sourceGT(RTL_CONSTASCII_USTRINGPARAM(">"));
     173         [ +  - ]:          5 :     const rtl::OUString sourceLTE(RTL_CONSTASCII_USTRINGPARAM("<="));
     174         [ +  - ]:          5 :     const rtl::OUString sourceGTE(RTL_CONSTASCII_USTRINGPARAM(">="));
     175         [ +  - ]:          5 :     const rtl::OUString sourceEE(RTL_CONSTASCII_USTRINGPARAM("=="));
     176         [ +  - ]:          5 :     const rtl::OUString sourceNE(RTL_CONSTASCII_USTRINGPARAM("<>"));
     177         [ +  - ]:          5 :     const rtl::OUString sourceA(RTL_CONSTASCII_USTRINGPARAM(":="));
     178                 :            : 
     179         [ +  - ]:          5 :     std::vector<Symbol> symbols;
     180                 :            : 
     181         [ +  - ]:          5 :     symbols = getSymbols(sourceE);
     182 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     183 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == sourceE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     184 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     185 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     186 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     187                 :            : 
     188         [ +  - ]:          5 :     symbols = getSymbols(sourceLT);
     189 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     190 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == sourceLT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     191 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     192 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     193 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     194                 :            : 
     195         [ +  - ]:          5 :     symbols = getSymbols(sourceGT);
     196 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     197 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == sourceGT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     198 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     199 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     200 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     201                 :            : 
     202         [ +  - ]:          5 :     symbols = getSymbols(sourceLTE);
     203 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     204 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == sourceLTE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     205 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     206 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     207 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     208                 :            : 
     209         [ +  - ]:          5 :     symbols = getSymbols(sourceGTE);
     210 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     211 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == sourceGTE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     212 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     213 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     214 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     215                 :            : 
     216         [ +  - ]:          5 :     symbols = getSymbols(sourceEE);
     217 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 3);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     218 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == sourceE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     219 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     220 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == sourceE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     221 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     222 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     223 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     224                 :            : 
     225         [ +  - ]:          5 :     symbols = getSymbols(sourceNE);
     226 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     227 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == sourceNE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     228 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     229 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     230 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     231                 :            : 
     232         [ +  - ]:          5 :     symbols = getSymbols(sourceA);
     233 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     234 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == sourceA);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     235 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     236 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     237 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     238                 :          5 :   }
     239                 :            : 
     240                 :          5 :   void ScannerTest::testAlphanum()
     241                 :            :   {
     242         [ +  - ]:          5 :     const rtl::OUString source1(RTL_CONSTASCII_USTRINGPARAM("asdfghefg"));
     243         [ +  - ]:          5 :     const rtl::OUString source2(RTL_CONSTASCII_USTRINGPARAM("1asfdasfd"));
     244         [ +  - ]:          5 :     const rtl::OUString source3(RTL_CONSTASCII_USTRINGPARAM("AdfsaAUdsl10987"));
     245         [ +  - ]:          5 :     const rtl::OUString source4(RTL_CONSTASCII_USTRINGPARAM("asdfa_mnvcnm"));
     246         [ +  - ]:          5 :     const rtl::OUString source5(RTL_CONSTASCII_USTRINGPARAM("_asdf1"));
     247         [ +  - ]:          5 :     const rtl::OUString source6(RTL_CONSTASCII_USTRINGPARAM("_6"));
     248         [ +  - ]:          5 :     const rtl::OUString source7(RTL_CONSTASCII_USTRINGPARAM("joxclk_"));
     249         [ +  - ]:          5 :     const rtl::OUString source8(RTL_CONSTASCII_USTRINGPARAM("   asdf    "));
     250         [ +  - ]:          5 :     const rtl::OUString source9(RTL_CONSTASCII_USTRINGPARAM(" 19395  asdfa "));
     251         [ +  - ]:          5 :     const rtl::OUString source10(RTL_CONSTASCII_USTRINGPARAM("\n1\n2\na sdf"));
     252         [ +  - ]:          5 :     const rtl::OUString source11(RTL_CONSTASCII_USTRINGPARAM("asdf.asdf"));
     253         [ +  - ]:          5 :     const rtl::OUString source12(RTL_CONSTASCII_USTRINGPARAM(".."));
     254                 :            : 
     255         [ +  - ]:          5 :     std::vector<Symbol> symbols;
     256                 :            : 
     257         [ +  - ]:          5 :     symbols = getSymbols(source1);
     258 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     259 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == source1);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     260 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     261 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     262 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     263                 :            : 
     264         [ +  - ]:          5 :     symbols = getSymbols(source2);
     265 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 3);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     266 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text.isEmpty()); // Can't start symbol with a digit
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     267 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == 1);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     268 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     269 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("asfdasfd")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     270 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     271 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     272 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     273                 :            : 
     274         [ +  - ]:          5 :     symbols = getSymbols(source3);
     275 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     276 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == source3);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     277 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     278 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     279 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     280                 :            : 
     281         [ +  - ]:          5 :     symbols = getSymbols(source4);
     282 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     283 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == source4);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     284 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     285 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     286 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     287                 :            : 
     288         [ +  - ]:          5 :     symbols = getSymbols(source5);
     289 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     290 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == source5);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     291 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     292 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     293 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     294                 :            : 
     295         [ +  - ]:          5 :     symbols = getSymbols(source6);
     296 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     297 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == source6);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     298 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     299 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     300 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     301                 :            : 
     302         [ +  - ]:          5 :     symbols = getSymbols(source7);
     303 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     304 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("joxclk_")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     305 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     306 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(source7 == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("joxclk "))); // Change the trailing '_' to a ' '
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     307 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     308 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     309                 :            : 
     310         [ +  - ]:          5 :     symbols = getSymbols(source8);
     311 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     312 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("asdf")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     313 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     314 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     315 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     316                 :            : 
     317         [ +  - ]:          5 :     symbols = getSymbols(source9);
     318 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 3);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     319 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text.isEmpty());
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     320 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number = 19395);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     321 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     322 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("asdfa")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     323 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     324 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     325 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     326                 :            : 
     327         [ +  - ]:          5 :     symbols = getSymbols(source10);
     328 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 8);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     329 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     330 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     331 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text.isEmpty());
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     332 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].number == 1);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     333 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     334 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     335 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     336 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[3].text.isEmpty());
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     337 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[3].number == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     338 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[3].type == SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     339 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[4].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     340 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[4].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     341 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[5].text.getLength() == 1);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     342 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[5].text[0] == 'a');
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     343 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[5].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     344 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[6].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("sdf")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     345 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[6].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     346 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[7].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     347 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[7].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     348                 :            : 
     349         [ +  - ]:          5 :     symbols = getSymbols(source11);
     350 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 4);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     351 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == asdf);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     352 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     353 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == dot);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     354 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     355 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == asdf);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     356 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     357 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[3].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     358 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[3].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     359                 :            : 
     360         [ +  - ]:          5 :     symbols = getSymbols(source12);
     361 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 3);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     362 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == dot);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     363 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     364 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == dot);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     365 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     366 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     367 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     368                 :          5 :   }
     369                 :            : 
     370                 :          5 :   void ScannerTest::testComments()
     371                 :            :   {
     372         [ +  - ]:          5 :     const rtl::OUString source1(RTL_CONSTASCII_USTRINGPARAM("REM asdf"));
     373         [ +  - ]:          5 :     const rtl::OUString source2(RTL_CONSTASCII_USTRINGPARAM("REMasdf"));
     374         [ +  - ]:          5 :     const rtl::OUString source3(RTL_CONSTASCII_USTRINGPARAM("'asdf"));
     375         [ +  - ]:          5 :     const rtl::OUString source4(RTL_CONSTASCII_USTRINGPARAM("asdf _\n'100"));
     376         [ +  - ]:          5 :     const rtl::OUString source5(RTL_CONSTASCII_USTRINGPARAM("'asdf _\n100"));
     377         [ +  - ]:          5 :     const rtl::OUString source6(RTL_CONSTASCII_USTRINGPARAM("'asdf _\n'100"));
     378         [ +  - ]:          5 :     const rtl::OUString source7(RTL_CONSTASCII_USTRINGPARAM("'asdf _\n 1234 _\n asdf'"));
     379                 :            : 
     380         [ +  - ]:          5 :     std::vector<Symbol> symbols;
     381                 :            : 
     382         [ +  - ]:          5 :     symbols = getSymbols(source1);
     383 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 1);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     384 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rem);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     385 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     386                 :            : 
     387         [ +  - ]:          5 :     symbols = getSymbols(source2);
     388 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     389 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("REMasdf")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     390 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     391 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     392 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     393                 :            : 
     394         [ +  - ]:          5 :     symbols = getSymbols(source3);
     395 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 1);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     396 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rem);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     397 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     398                 :            : 
     399         [ +  - ]:          5 :     symbols = getSymbols(source4);
     400 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     401 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == asdf);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     402 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     403 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == rem);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     404 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     405                 :            : 
     406         [ +  - ]:          5 :     symbols = getSymbols(source5);
     407 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 3);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     408 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rem);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     409 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     410 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text.isEmpty());
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     411 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].number == 100);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     412 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     413 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     414 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     415                 :            : 
     416         [ +  - ]:          5 :     symbols = getSymbols(source6);
     417 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     418 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rem);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     419 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     420 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == rem);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     421 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     422                 :            : 
     423         [ +  - ]:          5 :     symbols = getSymbols(source7);
     424 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 4);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     425 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rem);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     426 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     427 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text.isEmpty());
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     428 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].number == 1234);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     429 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     430 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == asdf);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     431 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     432 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[3].text == rem);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     433 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[3].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     434                 :          5 :   }
     435                 :            : 
     436                 :          5 :   void ScannerTest::testGoto()
     437                 :            :   {
     438         [ +  - ]:          5 :     const rtl::OUString source1(RTL_CONSTASCII_USTRINGPARAM("goto"));
     439         [ +  - ]:          5 :     const rtl::OUString source2(RTL_CONSTASCII_USTRINGPARAM("go  to"));
     440         [ +  - ]:          5 :     const rtl::OUString source3(RTL_CONSTASCII_USTRINGPARAM("go\nto"));
     441                 :            : 
     442         [ +  - ]:          5 :     std::vector<Symbol> symbols;
     443                 :            : 
     444         [ +  - ]:          5 :     symbols = getSymbols(source1);
     445 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     446 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == goto_);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     447 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     448 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     449 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     450                 :            : 
     451         [ +  - ]:          5 :     symbols = getSymbols(source2);
     452 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 3);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     453 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("go")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     454 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     455 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("to")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     456 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     457 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     458 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     459                 :            : 
     460         [ +  - ]:          5 :     symbols = getSymbols(source3);
     461 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 4);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     462 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("go")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     463 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     464 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     465 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     466 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("to")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     467 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     468 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[3].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     469 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[3].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     470                 :          5 :   }
     471                 :            : 
     472                 :          5 :   void ScannerTest::testGotoCompatible()
     473                 :            :   {
     474         [ +  - ]:          5 :     const rtl::OUString source1(RTL_CONSTASCII_USTRINGPARAM("goto"));
     475         [ +  - ]:          5 :     const rtl::OUString source2(RTL_CONSTASCII_USTRINGPARAM("go  to"));
     476         [ +  - ]:          5 :     const rtl::OUString source3(RTL_CONSTASCII_USTRINGPARAM("go\nto"));
     477                 :            : 
     478         [ +  - ]:          5 :     std::vector<Symbol> symbols;
     479                 :            : 
     480         [ +  - ]:          5 :     symbols = getSymbols(source1, true);
     481 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     482 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == goto_);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     483 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     484                 :            : 
     485         [ +  - ]:          5 :     symbols = getSymbols(source2, true);
     486 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     487 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rtl::OUString(goto_));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     488 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     489                 :            : 
     490         [ +  - ]:          5 :     symbols = getSymbols(source3, true);
     491 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 4);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     492 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("go")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     493 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     494 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("to")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     495 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[3].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     496                 :          5 :   }
     497                 :            : 
     498                 :          5 :   void ScannerTest::testExclamation()
     499                 :            :   {
     500         [ +  - ]:          5 :     const rtl::OUString source1(RTL_CONSTASCII_USTRINGPARAM("asdf!asdf"));
     501         [ +  - ]:          5 :     const rtl::OUString source2(RTL_CONSTASCII_USTRINGPARAM("!1234"));
     502         [ +  - ]:          5 :     const rtl::OUString source3(RTL_CONSTASCII_USTRINGPARAM("!_3"));
     503         [ +  - ]:          5 :     const rtl::OUString source4(RTL_CONSTASCII_USTRINGPARAM("!$"));
     504         [ +  - ]:          5 :     const rtl::OUString source5(RTL_CONSTASCII_USTRINGPARAM("!%"));
     505         [ +  - ]:          5 :     const rtl::OUString source6(RTL_CONSTASCII_USTRINGPARAM("!\n"));
     506                 :            : 
     507         [ +  - ]:          5 :     std::vector<Symbol> symbols;
     508                 :            : 
     509         [ +  - ]:          5 :     symbols = getSymbols(source1);
     510 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 4);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     511 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == asdf);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     512 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == excl);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     513 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == asdf);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     514 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[3].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     515                 :            : 
     516         [ +  - ]:          5 :     symbols = getSymbols(source2);
     517 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 3);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     518 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == excl);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     519 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text.isEmpty());
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     520 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].number == 1234);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     521 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     522                 :            : 
     523         [ +  - ]:          5 :     symbols = getSymbols(source3);
     524 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 3);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     525 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == excl);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     526 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_3")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     527 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     528                 :            : 
     529         [ +  - ]:          5 :     symbols = getSymbols(source4);
     530 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 3);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     531 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == excl);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     532 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("$")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     533 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     534                 :            : 
     535         [ +  - ]:          5 :     symbols = getSymbols(source5);
     536 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 3);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     537 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == excl);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     538 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     539 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     540                 :            : 
     541         [ +  - ]:          5 :     symbols = getSymbols(source6);
     542 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     543 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == excl);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     544 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     545                 :          5 :   }
     546                 :            : 
     547                 :          5 :   void ScannerTest::testNumbers()
     548                 :            :   {
     549         [ +  - ]:          5 :     const rtl::OUString source1(RTL_CONSTASCII_USTRINGPARAM("12345"));
     550         [ +  - ]:          5 :     const rtl::OUString source2(RTL_CONSTASCII_USTRINGPARAM("1.2.3"));
     551         [ +  - ]:          5 :     const rtl::OUString source3(RTL_CONSTASCII_USTRINGPARAM("123.4"));
     552         [ +  - ]:          5 :     const rtl::OUString source4(RTL_CONSTASCII_USTRINGPARAM("0.5"));
     553         [ +  - ]:          5 :     const rtl::OUString source5(RTL_CONSTASCII_USTRINGPARAM("5.0"));
     554         [ +  - ]:          5 :     const rtl::OUString source6(RTL_CONSTASCII_USTRINGPARAM("0.0"));
     555         [ +  - ]:          5 :     const rtl::OUString source7(RTL_CONSTASCII_USTRINGPARAM("-3"));
     556         [ +  - ]:          5 :     const rtl::OUString source8(RTL_CONSTASCII_USTRINGPARAM("-0.0"));
     557         [ +  - ]:          5 :     const rtl::OUString source9(RTL_CONSTASCII_USTRINGPARAM("12dE3"));
     558         [ +  - ]:          5 :     const rtl::OUString source10(RTL_CONSTASCII_USTRINGPARAM("12e3"));
     559         [ +  - ]:          5 :     const rtl::OUString source11(RTL_CONSTASCII_USTRINGPARAM("12D+3"));
     560         [ +  - ]:          5 :     const rtl::OUString source12(RTL_CONSTASCII_USTRINGPARAM("12e++3"));
     561         [ +  - ]:          5 :     const rtl::OUString source13(RTL_CONSTASCII_USTRINGPARAM("12e-3"));
     562         [ +  - ]:          5 :     const rtl::OUString source14(RTL_CONSTASCII_USTRINGPARAM("12e-3+"));
     563         [ +  - ]:          5 :     const rtl::OUString source15(RTL_CONSTASCII_USTRINGPARAM("1,2,3"));
     564         [ +  - ]:          5 :     const rtl::OUString source16(RTL_CONSTASCII_USTRINGPARAM("1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"));
     565                 :            : 
     566         [ +  - ]:          5 :     std::vector<Symbol> symbols;
     567                 :            :     sal_Int32 errors;
     568                 :            : 
     569         [ +  - ]:          5 :     symbols = getSymbols(source1, errors);
     570 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     571 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == 12345);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     572 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     573 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     574 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(errors == 0);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     575                 :            : 
     576         [ +  - ]:          5 :     symbols = getSymbols(source2, errors);
     577 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     578 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == 1.23);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     579 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxDOUBLE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     580 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     581 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(errors == 1);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     582                 :            : 
     583         [ +  - ]:          5 :     symbols = getSymbols(source3, errors);
     584 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     585 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == 123.4);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     586 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxDOUBLE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     587 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     588 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(errors == 0);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     589                 :            : 
     590         [ +  - ]:          5 :     symbols = getSymbols(source4, errors);
     591 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     592 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == .5);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     593 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxDOUBLE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     594 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     595 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(errors == 0);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     596                 :            : 
     597         [ +  - ]:          5 :     symbols = getSymbols(source5, errors);
     598 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     599 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == 5);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     600 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxDOUBLE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     601 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     602 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(errors == 0);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     603                 :            : 
     604         [ +  - ]:          5 :     symbols = getSymbols(source6, errors);
     605 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     606 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == 0);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     607 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxDOUBLE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     608 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     609 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(errors == 0);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     610                 :            : 
     611         [ +  - ]:          5 :     symbols = getSymbols(source7, errors);
     612 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 3);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     613 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     614 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].number == 3);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     615 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     616 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     617 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(errors == 0);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     618                 :            : 
     619         [ +  - ]:          5 :     symbols = getSymbols(source8, errors);
     620 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 3);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     621 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("-")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     622 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].number == 0);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     623 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxDOUBLE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     624 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     625 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(errors == 0);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     626                 :            : 
     627         [ +  - ]:          5 :     symbols = getSymbols(source9, errors);
     628 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     629 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == 12000);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     630 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxDOUBLE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     631 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     632 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(errors == 1);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     633                 :            : 
     634         [ +  - ]:          5 :     symbols = getSymbols(source10, errors);
     635 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     636 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == 12000);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     637 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxDOUBLE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     638 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     639 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(errors == 0);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     640                 :            : 
     641         [ +  - ]:          5 :     symbols = getSymbols(source11, errors);
     642 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     643 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == 12000);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     644 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxDOUBLE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     645 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     646 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(errors == 0);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     647                 :            : 
     648         [ +  - ]:          5 :     symbols = getSymbols(source12, errors);
     649 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 4);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     650 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == 12);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     651 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxDOUBLE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     652 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("+")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     653 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].number == 3);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     654 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].type == SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     655 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[3].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     656 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(errors == 0);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     657                 :            : 
     658         [ +  - ]:          5 :     symbols = getSymbols(source13, errors);
     659 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     660 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == .012);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     661 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxDOUBLE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     662 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     663 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(errors == 0);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     664                 :            : 
     665         [ +  - ]:          5 :     symbols = getSymbols(source14, errors);
     666 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 3);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     667 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == .012);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     668 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxDOUBLE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     669 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("+")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     670 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     671 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(errors == 0);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     672                 :            : 
     673         [ +  - ]:          5 :     symbols = getSymbols(source15, errors);
     674 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 6);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     675 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == 1);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     676 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     677 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(",")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     678 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].number == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     679 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].type == SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     680 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[3].text == ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(",")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     681 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[4].number == 3);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     682 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[4].type == SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     683 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[5].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     684 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(errors == 0);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     685                 :            : 
     686         [ +  - ]:          5 :     symbols = getSymbols(source16, errors);
     687 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     688 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == 1);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     689 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxDOUBLE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     690 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     691                 :            :     // This error is from a "buffer overflow" which is stupid because
     692                 :            :     // the buffer is artificially constrained by the scanner.
     693 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(errors == 1); // HACK
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     694                 :          5 :   }
     695                 :            : 
     696                 :          5 :   void ScannerTest::testDataType()
     697                 :            :   {
     698         [ +  - ]:          5 :     const rtl::OUString source1(RTL_CONSTASCII_USTRINGPARAM("asdf%"));
     699         [ +  - ]:          5 :     const rtl::OUString source2(RTL_CONSTASCII_USTRINGPARAM("asdf&"));
     700         [ +  - ]:          5 :     const rtl::OUString source3(RTL_CONSTASCII_USTRINGPARAM("asdf!"));
     701         [ +  - ]:          5 :     const rtl::OUString source4(RTL_CONSTASCII_USTRINGPARAM("asdf#"));
     702         [ +  - ]:          5 :     const rtl::OUString source5(RTL_CONSTASCII_USTRINGPARAM("asdf@"));
     703         [ +  - ]:          5 :     const rtl::OUString source6(RTL_CONSTASCII_USTRINGPARAM("asdf$"));
     704         [ +  - ]:          5 :     const rtl::OUString source7(RTL_CONSTASCII_USTRINGPARAM("asdf "));
     705                 :            : 
     706         [ +  - ]:          5 :     std::vector<Symbol> symbols;
     707                 :            : 
     708         [ +  - ]:          5 :     symbols = getSymbols(source1);
     709 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     710 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     711 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     712                 :            : 
     713         [ +  - ]:          5 :     symbols = getSymbols(source2);
     714 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     715 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxLONG);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     716 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     717                 :            : 
     718         [ +  - ]:          5 :     symbols = getSymbols(source3);
     719 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     720 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxSINGLE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     721 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     722                 :            : 
     723         [ +  - ]:          5 :     symbols = getSymbols(source4);
     724 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     725 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxDOUBLE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     726 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     727                 :            : 
     728         [ +  - ]:          5 :     symbols = getSymbols(source5);
     729 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     730 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxCURRENCY);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     731 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     732                 :            : 
     733         [ +  - ]:          5 :     symbols = getSymbols(source6);
     734 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     735 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxSTRING);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     736 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     737                 :            : 
     738         [ +  - ]:          5 :     symbols = getSymbols(source7);
     739 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     740 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     741 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     742                 :          5 :   }
     743                 :            : 
     744                 :          5 :   void ScannerTest::testHexOctal()
     745                 :            :   {
     746         [ +  - ]:          5 :     const rtl::OUString source1(RTL_CONSTASCII_USTRINGPARAM("&HA"));
     747         [ +  - ]:          5 :     const rtl::OUString source2(RTL_CONSTASCII_USTRINGPARAM("&HASDF"));
     748         [ +  - ]:          5 :     const rtl::OUString source3(RTL_CONSTASCII_USTRINGPARAM("&H10"));
     749         [ +  - ]:          5 :     const rtl::OUString source4(RTL_CONSTASCII_USTRINGPARAM("&&H&1H1&H1"));
     750         [ +  - ]:          5 :     const rtl::OUString source5(RTL_CONSTASCII_USTRINGPARAM("&O&O12"));
     751         [ +  - ]:          5 :     const rtl::OUString source6(RTL_CONSTASCII_USTRINGPARAM("&O10"));
     752         [ +  - ]:          5 :     const rtl::OUString source7(RTL_CONSTASCII_USTRINGPARAM("&HO"));
     753         [ +  - ]:          5 :     const rtl::OUString source8(RTL_CONSTASCII_USTRINGPARAM("&O123000000000000000000000"));
     754         [ +  - ]:          5 :     const rtl::OUString source9(RTL_CONSTASCII_USTRINGPARAM("&H1.23"));
     755                 :            : 
     756         [ +  - ]:          5 :     std::vector<Symbol> symbols;
     757                 :            : 
     758         [ +  - ]:          5 :     symbols = getSymbols(source1);
     759 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     760 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == 10);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     761 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rtl::OUString());
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     762 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     763 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     764                 :            : 
     765         [ +  - ]:          5 :     symbols = getSymbols(source2);
     766 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     767 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == 2783);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     768 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rtl::OUString());
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     769 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type = SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     770 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     771                 :            : 
     772         [ +  - ]:          5 :     symbols = getSymbols(source3);
     773 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     774 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == 16);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     775 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rtl::OUString());
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     776 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type = SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     777 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     778                 :            : 
     779         [ +  - ]:          5 :     symbols = getSymbols(source4);
     780 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 6);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     781 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == 0);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     782 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("&")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     783 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     784 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].number == 0);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     785 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == rtl::OUString());
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     786 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     787 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].number == 1);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     788 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == rtl::OUString());
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     789 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].type == SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     790 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[3].number == 1);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     791 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[3].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("H1")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     792 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[3].type == SbxLONG);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     793 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[4].number == 1);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     794 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[4].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("H1")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     795 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[4].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     796 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[5].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     797                 :            : 
     798         [ +  - ]:          5 :     symbols = getSymbols(source5);
     799 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 3);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     800 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == 0);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     801 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rtl::OUString());
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     802 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     803 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].number == 0);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     804 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("O12")));
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
                 [ +  - ]
     805 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxVARIANT);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     806 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     807                 :            : 
     808         [ +  - ]:          5 :     symbols = getSymbols(source6);
     809 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     810 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == 8);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     811 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rtl::OUString());
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     812 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     813 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     814                 :            : 
     815         [ +  - ]:          5 :     symbols = getSymbols(source7);
     816 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     817 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == 0);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     818 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rtl::OUString());
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     819 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     820                 :            : 
     821         [ +  - ]:          5 :     symbols = getSymbols(source8);
     822 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 2);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     823                 :            :     // TODO: this line fails on 64 bit systems!!!
     824                 :            :     //    CPPUNIT_ASSERT(symbols[0].number == -1744830464);
     825 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rtl::OUString());
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     826 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     827                 :            : 
     828         [ +  - ]:          5 :     symbols = getSymbols(source9);
     829 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols.size() == 3);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     830 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].text == rtl::OUString());
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     831 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].number == 1);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     832 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[0].type == SbxINTEGER);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     833 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].number == .23);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     834 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].text == rtl::OUString());
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     835 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[1].type == SbxDOUBLE);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     836 [ +  - ][ +  - ]:          5 :     CPPUNIT_ASSERT(symbols[2].text == cr);
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
     837                 :          5 :   }
     838                 :            : 
     839                 :            :   // Put the test suite in the registry
     840                 :          5 :   CPPUNIT_TEST_SUITE_REGISTRATION(ScannerTest);
     841                 :            : } // namespace
     842 [ +  - ][ +  - ]:         20 : CPPUNIT_PLUGIN_IMPLEMENT();
         [ +  - ][ +  - ]
         [ +  - ][ #  # ]
     843                 :            : 
     844                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10