summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2011-10-20 20:05:33 +0200
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2011-10-20 21:26:15 +0200
commitcda653d7d9038fdcab72cfcae37d3d20463693d5 (patch)
tree5ab4af20eb6306a059ff9db71ee3f2cc29e385e4 /sc
parentd72701bba66817fbd0ddcb8dea969aea49f8426a (diff)
extract helper methods for debuging calc tests
Diffstat (limited to 'sc')
-rw-r--r--sc/qa/unit/helper/debughelper.hxx170
-rw-r--r--sc/qa/unit/ucalc.cxx124
2 files changed, 172 insertions, 122 deletions
diff --git a/sc/qa/unit/helper/debughelper.hxx b/sc/qa/unit/helper/debughelper.hxx
new file mode 100644
index 000000000000..ac3e31a6acf5
--- /dev/null
+++ b/sc/qa/unit/helper/debughelper.hxx
@@ -0,0 +1,170 @@
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * [ Copyright (C) 2011 Markus Mohrhard <markus.mohrhard@googlemail.com> (initial developer) ]
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+/**
+ * Print nicely formatted sheet content to stdout. Indispensable when
+ * debugging the unit test code involving testing of sheet contents.
+ */
+
+#include <rtl/strbuf.hxx>
+#include <rtl/ustring.hxx>
+#include "document.hxx"
+
+#ifdef WNT
+#define NOMINMAX
+#include <prewin.h>
+#include <postwin.h>
+#undef NOMINMAX
+#endif
+
+#define MDDS_HASH_CONTAINER_BOOST 1
+#include <mdds/mixed_type_matrix.hpp>
+
+#include <iostream>
+
+using namespace ::com::sun::star;
+using ::rtl::OUString;
+using ::rtl::OUStringBuffer;
+using ::std::cout;
+using ::std::cerr;
+using ::std::endl;
+using ::std::vector;
+
+
+
+namespace {
+
+::std::ostream& operator<< (::std::ostream& os, const rtl::OUString& str)
+{
+ return os << ::rtl::OUStringToOString(str, RTL_TEXTENCODING_UTF8).getStr();
+}
+
+}
+
+class SheetPrinter
+{
+ typedef ::mdds::mixed_type_matrix<OUString, bool> MatrixType;
+public:
+ SheetPrinter(size_t rows, size_t cols) :
+ maMatrix(rows, cols, ::mdds::matrix_density_sparse_empty) {}
+
+ void set(size_t row, size_t col, const OUString& aStr)
+ {
+ maMatrix.set_string(row, col, new OUString(aStr));
+ }
+
+#if UCALC_DEBUG_OUTPUT
+ void print(const char* header) const
+ {
+ if (header)
+ cout << header << endl;
+
+ MatrixType::size_pair_type ns = maMatrix.size();
+ vector<sal_Int32> aColWidths(ns.second, 0);
+
+ // Calculate column widths first.
+ for (size_t row = 0; row < ns.first; ++row)
+ {
+ for (size_t col = 0; col < ns.second; ++col)
+ {
+ const OUString* p = maMatrix.get_string(row, col);
+ if (aColWidths[col] < p->getLength())
+ aColWidths[col] = p->getLength();
+ }
+ }
+
+ // Make the row separator string.
+ OUStringBuffer aBuf;
+ aBuf.appendAscii("+");
+ for (size_t col = 0; col < ns.second; ++col)
+ {
+ aBuf.appendAscii("-");
+ for (sal_Int32 i = 0; i < aColWidths[col]; ++i)
+ aBuf.append(sal_Unicode('-'));
+ aBuf.appendAscii("-+");
+ }
+
+ OUString aSep = aBuf.makeStringAndClear();
+
+ // Now print to stdout.
+ cout << aSep << endl;
+ for (size_t row = 0; row < ns.first; ++row)
+ {
+ cout << "| ";
+ for (size_t col = 0; col < ns.second; ++col)
+ {
+ const OUString* p = maMatrix.get_string(row, col);
+ size_t nPadding = aColWidths[col] - p->getLength();
+ aBuf.append(*p);
+ for (size_t i = 0; i < nPadding; ++i)
+ aBuf.append(sal_Unicode(' '));
+ cout << aBuf.makeStringAndClear() << " | ";
+ }
+ cout << endl;
+ cout << aSep << endl;
+ }
+ }
+#else
+ void print(const char*) const {}
+#endif
+
+ /**
+ * Print nested string array which can be copy-n-pasted into the test code
+ * for content verification.
+ */
+ void printArray() const
+ {
+#if UCALC_DEBUG_OUTPUT
+ MatrixType::size_pair_type ns = maMatrix.size();
+ for (size_t row = 0; row < ns.first; ++row)
+ {
+ cout << " { ";
+ for (size_t col = 0; col < ns.second; ++col)
+ {
+ const OUString* p = maMatrix.get_string(row, col);
+ if (p->getLength())
+ cout << "\"" << *p << "\"";
+ else
+ cout << "0";
+ if (col < ns.second - 1)
+ cout << ", ";
+ }
+ cout << " }";
+ if (row < ns.first - 1)
+ cout << ",";
+ cout << endl;
+ }
+#endif
+ }
+
+ void clear() { maMatrix.clear(); }
+ void resize(size_t rows, size_t cols) { maMatrix.resize(rows, cols); }
+
+private:
+ MatrixType maMatrix;
+};
+
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 232a62e3a104..9abe9f7ae48c 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -71,18 +71,10 @@
#include <iostream>
#include <vector>
-#ifdef WNT
-#define NOMINMAX
-#include <prewin.h>
-#include <postwin.h>
-#undef NOMINMAX
-#endif
-
-#define MDDS_HASH_CONTAINER_BOOST 1
-#include <mdds/mixed_type_matrix.hpp>
-
#define UCALC_DEBUG_OUTPUT 0
+#include "helper/debughelper.hxx"
+
const int indeterminate = 2;
using namespace ::com::sun::star;
@@ -95,118 +87,6 @@ using ::std::vector;
namespace {
-::std::ostream& operator<< (::std::ostream& os, const OUString& str)
-{
- return os << ::rtl::OUStringToOString(str, RTL_TEXTENCODING_UTF8).getStr();
-}
-
-/**
- * Print nicely formatted sheet content to stdout. Indispensable when
- * debugging the unit test code involving testing of sheet contents.
- */
-class SheetPrinter
-{
- typedef ::mdds::mixed_type_matrix<OUString, bool> MatrixType;
-public:
- SheetPrinter(size_t rows, size_t cols) :
- maMatrix(rows, cols, ::mdds::matrix_density_sparse_empty) {}
-
- void set(size_t row, size_t col, const OUString& aStr)
- {
- maMatrix.set_string(row, col, new OUString(aStr));
- }
-
-#if UCALC_DEBUG_OUTPUT
- void print(const char* header) const
- {
- if (header)
- cout << header << endl;
-
- MatrixType::size_pair_type ns = maMatrix.size();
- vector<sal_Int32> aColWidths(ns.second, 0);
-
- // Calculate column widths first.
- for (size_t row = 0; row < ns.first; ++row)
- {
- for (size_t col = 0; col < ns.second; ++col)
- {
- const OUString* p = maMatrix.get_string(row, col);
- if (aColWidths[col] < p->getLength())
- aColWidths[col] = p->getLength();
- }
- }
-
- // Make the row separator string.
- OUStringBuffer aBuf;
- aBuf.appendAscii("+");
- for (size_t col = 0; col < ns.second; ++col)
- {
- aBuf.appendAscii("-");
- for (sal_Int32 i = 0; i < aColWidths[col]; ++i)
- aBuf.append(sal_Unicode('-'));
- aBuf.appendAscii("-+");
- }
-
- OUString aSep = aBuf.makeStringAndClear();
-
- // Now print to stdout.
- cout << aSep << endl;
- for (size_t row = 0; row < ns.first; ++row)
- {
- cout << "| ";
- for (size_t col = 0; col < ns.second; ++col)
- {
- const OUString* p = maMatrix.get_string(row, col);
- size_t nPadding = aColWidths[col] - p->getLength();
- aBuf.append(*p);
- for (size_t i = 0; i < nPadding; ++i)
- aBuf.append(sal_Unicode(' '));
- cout << aBuf.makeStringAndClear() << " | ";
- }
- cout << endl;
- cout << aSep << endl;
- }
- }
-#else
- void print(const char*) const {}
-#endif
-
- /**
- * Print nested string array which can be copy-n-pasted into the test code
- * for content verification.
- */
- void printArray() const
- {
-#if UCALC_DEBUG_OUTPUT
- MatrixType::size_pair_type ns = maMatrix.size();
- for (size_t row = 0; row < ns.first; ++row)
- {
- cout << " { ";
- for (size_t col = 0; col < ns.second; ++col)
- {
- const OUString* p = maMatrix.get_string(row, col);
- if (p->getLength())
- cout << "\"" << *p << "\"";
- else
- cout << "0";
- if (col < ns.second - 1)
- cout << ", ";
- }
- cout << " }";
- if (row < ns.first - 1)
- cout << ",";
- cout << endl;
- }
-#endif
- }
-
- void clear() { maMatrix.clear(); }
- void resize(size_t rows, size_t cols) { maMatrix.resize(rows, cols); }
-
-private:
- MatrixType maMatrix;
-};
-
class Test : public test::BootstrapFixture {
public:
Test();