Author: damjan
Date: Mon Apr 4 04:11:07 2016
New Revision: 1737624
URL: http://svn.apache.org/viewvc?rev=1737624&view=rev
Log:
#i126901# CSV import: values with + or - followed by thousand separator and
3 digits (eg. +,123) are imported as a number
Do not allow numbers parsed from CVS files when "Detect special numbers" is
off, to contain thousand separators before digits, even if after a +/- sign
(eg. -,123 or +,789). Treat these as strings instead.
Also added unit tests for this and exported the ScStringUtil class so it
can be tested.
Patch by: me
Added:
openoffice/trunk/main/sc/test/
openoffice/trunk/main/sc/test/main.cxx
openoffice/trunk/main/sc/test/makefile.mk
openoffice/trunk/main/sc/test/stringutiltests.cxx
Modified:
openoffice/trunk/main/sc/inc/stringutil.hxx
openoffice/trunk/main/sc/prj/build.lst
openoffice/trunk/main/sc/source/core/tool/stringutil.cxx
Modified: openoffice/trunk/main/sc/inc/stringutil.hxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sc/inc/stringutil.hxx?rev=1737624&r1=1737623&r2=1737624&view=diff
==============================================================================
--- openoffice/trunk/main/sc/inc/stringutil.hxx (original)
+++ openoffice/trunk/main/sc/inc/stringutil.hxx Mon Apr 4 04:11:07 2016
@@ -25,8 +25,9 @@
#define SC_STRINGUTIL_HXX
#include "rtl/ustring.hxx"
+#include "scdllapi.h"
-class ScStringUtil
+class SC_DLLPUBLIC ScStringUtil
{
public:
/**
Modified: openoffice/trunk/main/sc/prj/build.lst
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sc/prj/build.lst?rev=1737624&r1=1737623&r2=1737624&view=diff
==============================================================================
--- openoffice/trunk/main/sc/prj/build.lst (original)
+++ openoffice/trunk/main/sc/prj/build.lst Mon Apr 4 04:11:07 2016
@@ -48,6 +48,7 @@ sc sc\addin\datefunc
nmake - all sc_
sc sc\addin\rot13 nmake -
all sc_adrot sc_add sc_sdi sc_inc NULL
sc sc\addin\util nmake -
all sc_adutil sc_addfu sc_adrot sc_sdi sc_inc NULL
sc sc\util nmake -
all sc_util sc_addfu sc_adrot sc_adutil sc_app sc_attr sc_cctrl sc_cosrc
sc_data sc_dbgui sc_dif sc_docsh sc_drfnc sc_excel sc_form sc_html sc_lotus
sc_qpro sc_misc sc_name sc_nvipi sc_opt sc_page sc_rtf sc_scalc sc_style
sc_tool sc_uisrc sc_sidebar sc_undo sc_unobj sc_view sc_xcl97 sc_xml sc_acc
sc_ftools sc_inc sc_vba NULL
+sc sc\test nmake -
all sc_test sc_util NULL
# remarked due to the fact, key press is need in this test.
# sc sc\qa\complex\calcPreview nmake -
all qa_calcpreview NULL
Modified: openoffice/trunk/main/sc/source/core/tool/stringutil.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sc/source/core/tool/stringutil.cxx?rev=1737624&r1=1737623&r2=1737624&view=diff
==============================================================================
--- openoffice/trunk/main/sc/source/core/tool/stringutil.cxx (original)
+++ openoffice/trunk/main/sc/source/core/tool/stringutil.cxx Mon Apr 4
04:11:07 2016
@@ -45,6 +45,7 @@ bool ScStringUtil::parseSimpleNumber(
const sal_Unicode* p = rStr.getStr();
sal_Int32 nPosDSep = -1, nPosGSep = -1;
sal_uInt32 nDigitCount = 0;
+ bool haveSeenDigit = false;
for (sal_Int32 i = 0; i < n; ++i)
{
@@ -57,6 +58,7 @@ bool ScStringUtil::parseSimpleNumber(
{
// this is a digit.
aBuf.append(c);
+ haveSeenDigit = true;
++nDigitCount;
}
else if (c == dsep)
@@ -81,8 +83,8 @@ bool ScStringUtil::parseSimpleNumber(
{
// this is a group (thousand) separator.
- if (i == 0)
- // not allowed as the first character.
+ if (!haveSeenDigit)
+ // not allowed before digits.
return false;
if (nPosDSep >= 0)
Added: openoffice/trunk/main/sc/test/main.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sc/test/main.cxx?rev=1737624&view=auto
==============================================================================
--- openoffice/trunk/main/sc/test/main.cxx (added)
+++ openoffice/trunk/main/sc/test/main.cxx Mon Apr 4 04:11:07 2016
@@ -0,0 +1,30 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+#include "precompiled_sc.hxx"
+
+#include "gtest/gtest.h"
+
+int main(int argc, char **argv)
+{
+ ::testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+}
Added: openoffice/trunk/main/sc/test/makefile.mk
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sc/test/makefile.mk?rev=1737624&view=auto
==============================================================================
--- openoffice/trunk/main/sc/test/makefile.mk (added)
+++ openoffice/trunk/main/sc/test/makefile.mk Mon Apr 4 04:11:07 2016
@@ -0,0 +1,68 @@
+#**************************************************************
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+#**************************************************************
+
+
+
+PRJ=..
+
+PRJNAME=sc
+TARGET=tests
+
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : settings.mk
+
+.IF "$(ENABLE_UNIT_TESTS)" != "YES"
+
+all:
+ @echo "unit tests are disabled. Nothing do do."
+
+.ELSE
+
+
+# --- Common ----------------------------------------------------------
+
+APP1OBJS= \
+ $(SLO)$/main.obj \
+ $(SLO)$/stringutiltests.obj
+
+APP1TARGET= sc_tests
+APP1STDLIBS= \
+ $(ISCLIB) \
+ $(SALLIB) \
+ $(GTESTLIB)
+
+APP1RPATH = NONE
+APP1TEST = enabled
+
+# END ------------------------------------------------------------------
+
+# --- Targets ------------------------------------------------------
+
+.ENDIF # "$(ENABLE_UNIT_TESTS)" != "YES"
+
+.INCLUDE : target.mk
+
+.IF "$(verbose)"!="" || "$(VERBOSE)"!=""
+CDEFS+= -DVERBOSE
+.ENDIF
Added: openoffice/trunk/main/sc/test/stringutiltests.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sc/test/stringutiltests.cxx?rev=1737624&view=auto
==============================================================================
--- openoffice/trunk/main/sc/test/stringutiltests.cxx (added)
+++ openoffice/trunk/main/sc/test/stringutiltests.cxx Mon Apr 4 04:11:07 2016
@@ -0,0 +1,40 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
+#include "precompiled_sc.hxx"
+
+#include "gtest/gtest.h"
+
+#include "stringutil.hxx"
+
+
+namespace
+{
+
+TEST(StringUtilsTest, TestSignThenThousandSeparator)
+{
+ ScStringUtil stringUtil;
+ double doubleValue;
+
EXPECT_FALSE(stringUtil.parseSimpleNumber(::rtl::OUString::createFromAscii("+,123"),
sal_Unicode('.'), sal_Unicode(','), doubleValue));
+
EXPECT_FALSE(stringUtil.parseSimpleNumber(::rtl::OUString::createFromAscii("-,123"),
sal_Unicode('.'), sal_Unicode(','), doubleValue));
+}
+
+}