From cafa2b948bd78905b5890f917403e6fabff3b6dd Mon Sep 17 00:00:00 2001 From: Eike Rathke Date: Thu, 21 Mar 2013 19:43:53 +0100 Subject: added unit test for 10e308 math overflow Change-Id: I492d991545239539d21fb59de3eccdd1ab56a9af --- basic/qa/cppunit/test_scanner.cxx | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'basic') diff --git a/basic/qa/cppunit/test_scanner.cxx b/basic/qa/cppunit/test_scanner.cxx index 3396d0fa2a1d..9c8d38842916 100644 --- a/basic/qa/cppunit/test_scanner.cxx +++ b/basic/qa/cppunit/test_scanner.cxx @@ -15,6 +15,7 @@ #include "osl/file.hxx" #include "osl/process.h" +#include #include "scanner.hxx" @@ -562,6 +563,7 @@ namespace const OUString source14("12e-3+"); const OUString source15("1,2,3"); const OUString source16("1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"); + const OUString source17("10e308"); std::vector symbols; sal_Int32 errors; @@ -691,6 +693,15 @@ namespace // This error is from a "buffer overflow" which is stupid because // the buffer is artificially constrained by the scanner. CPPUNIT_ASSERT(errors == 1); // HACK + + double fInf = 0.0; + rtl::math::setInf( &fInf, false); + symbols = getSymbols(source17, errors); + CPPUNIT_ASSERT(symbols.size() == 2); + CPPUNIT_ASSERT(symbols[0].number == fInf); + CPPUNIT_ASSERT(symbols[0].type == SbxDOUBLE); + CPPUNIT_ASSERT(symbols[1].text == cr); + CPPUNIT_ASSERT(errors == 1); // math error, overflow } void ScannerTest::testDataType() -- cgit