[Libreoffice-commits] core.git: Branch 'aoo/trunk' - sc/inc sc/prj sc/source sc/test
Damjan Jovanovic
damjan at apache.org
Mon Apr 4 08:08:39 UTC 2016
sc/inc/stringutil.hxx | 3 +
sc/prj/build.lst | 1
sc/source/core/tool/stringutil.cxx | 6 ++-
sc/test/main.cxx | 30 ++++++++++++++++
sc/test/makefile.mk | 68 +++++++++++++++++++++++++++++++++++++
sc/test/stringutiltests.cxx | 40 +++++++++++++++++++++
6 files changed, 145 insertions(+), 3 deletions(-)
New commits:
commit 10458a24f4e6cc311e65fb80ce576fed39937be2
Author: Damjan Jovanovic <damjan at apache.org>
Date: Mon Apr 4 04:11:07 2016 +0000
#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
diff --git a/sc/inc/stringutil.hxx b/sc/inc/stringutil.hxx
index 1b06228..0094055 100644
--- a/sc/inc/stringutil.hxx
+++ b/sc/inc/stringutil.hxx
@@ -25,8 +25,9 @@
#define SC_STRINGUTIL_HXX
#include "rtl/ustring.hxx"
+#include "scdllapi.h"
-class ScStringUtil
+class SC_DLLPUBLIC ScStringUtil
{
public:
/**
diff --git a/sc/prj/build.lst b/sc/prj/build.lst
index e3a62f8..4d898ca 100644
--- a/sc/prj/build.lst
+++ b/sc/prj/build.lst
@@ -48,6 +48,7 @@ sc sc\addin\datefunc nmake - all sc_addfu sc_add sc_sdi sc_inc NULL
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
diff --git a/sc/source/core/tool/stringutil.cxx b/sc/source/core/tool/stringutil.cxx
index 539c34f..50fae6a 100644
--- a/sc/source/core/tool/stringutil.cxx
+++ b/sc/source/core/tool/stringutil.cxx
@@ -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)
diff --git a/sc/test/main.cxx b/sc/test/main.cxx
new file mode 100644
index 0000000..0777abb
--- /dev/null
+++ b/sc/test/main.cxx
@@ -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();
+}
diff --git a/sc/test/makefile.mk b/sc/test/makefile.mk
new file mode 100644
index 0000000..2ba9cbe
--- /dev/null
+++ b/sc/test/makefile.mk
@@ -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
diff --git a/sc/test/stringutiltests.cxx b/sc/test/stringutiltests.cxx
new file mode 100644
index 0000000..4f08c7f2
--- /dev/null
+++ b/sc/test/stringutiltests.cxx
@@ -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));
+}
+
+}
More information about the Libreoffice-commits
mailing list