[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - 2 commits - sc/qa vcl/opengl
Caolán McNamara
caolanm at redhat.com
Tue Dec 2 14:58:00 PST 2014
sc/qa/unit/ucalc.hxx | 2
sc/qa/unit/ucalc_sort.cxx | 215 +++++++++++++++++++++++++++++++++++++++++++++
vcl/opengl/x11/gdiimpl.cxx | 10 +-
3 files changed, 222 insertions(+), 5 deletions(-)
New commits:
commit 4483fb28546f81b205159d9a8e4f5d41d3c90ac5
Author: Caolán McNamara <caolanm at redhat.com>
Date: Mon Nov 24 20:47:05 2014 +0000
WaE: might be used unintialized
Change-Id: I036a5a1c8c8cca09bb6bddef2e0c8f172fe22e77
(cherry picked from commit 48138a1d60fafa0bf3412aa6b518a9c0a4f6d492)
diff --git a/vcl/opengl/x11/gdiimpl.cxx b/vcl/opengl/x11/gdiimpl.cxx
index 4442bbd..e5070d7 100644
--- a/vcl/opengl/x11/gdiimpl.cxx
+++ b/vcl/opengl/x11/gdiimpl.cxx
@@ -129,9 +129,6 @@ bool X11OpenGLSalGraphicsImpl::RenderPixmapToScreen( X11Pixmap* pPixmap, X11Pixm
None
};
Display* pDisplay = mrParent.GetXDisplay();
- GLXFBConfig pFbConfig;
- GLXPixmap pGlxPixmap;
- GLXPixmap pGlxMask;
bool bInverted;
SAL_INFO( "vcl.opengl", "RenderPixmapToScreen (" << nX << " " << nY << ")" );
@@ -144,10 +141,13 @@ bool X11OpenGLSalGraphicsImpl::RenderPixmapToScreen( X11Pixmap* pPixmap, X11Pixm
//glClear( GL_COLOR_BUFFER_BIT );
XSync( pDisplay, 0 );
- pFbConfig = OpenGLHelper::GetPixmapFBConfig( pDisplay, bInverted );
- pGlxPixmap = glXCreatePixmap( pDisplay, pFbConfig, pPixmap->GetPixmap(), aAttribs);
+ GLXFBConfig pFbConfig = OpenGLHelper::GetPixmapFBConfig( pDisplay, bInverted );
+ GLXPixmap pGlxPixmap = glXCreatePixmap( pDisplay, pFbConfig, pPixmap->GetPixmap(), aAttribs);
+ GLXPixmap pGlxMask;
if( pMask != NULL )
pGlxMask = glXCreatePixmap( pDisplay, pFbConfig, pMask->GetPixmap(), aAttribs);
+ else
+ pGlxMask = 0;
XSync( pDisplay, 0 );
if( !pGlxPixmap )
commit 60fe8a4cd6c0697fbc1c9b8988a8340c1f29a174
Author: Eike Rathke <erack at redhat.com>
Date: Tue Dec 2 19:50:11 2014 +0100
unit test for sort with broadcasters, fdo#86762
Change-Id: Id1040f95a94d1637cafd06cbe0072b5a5a5cb8e0
(cherry picked from commit bbfa317b9cfdbb0c44140e3414d4c2dfba9bcef4)
diff --git a/sc/qa/unit/ucalc.hxx b/sc/qa/unit/ucalc.hxx
index 21568ed..62d0b74 100644
--- a/sc/qa/unit/ucalc.hxx
+++ b/sc/qa/unit/ucalc.hxx
@@ -391,6 +391,7 @@ public:
void testSortRefUpdate4_Impl();
void testSortRefUpdate5();
void testSortRefUpdate6();
+ void testSortBroadcaster();
void testSortOutOfPlaceResult();
void testSortPartialFormulaGroup();
@@ -588,6 +589,7 @@ public:
CPPUNIT_TEST(testSortRefUpdate4);
CPPUNIT_TEST(testSortRefUpdate5);
CPPUNIT_TEST(testSortRefUpdate6);
+ CPPUNIT_TEST(testSortBroadcaster);
CPPUNIT_TEST(testSortOutOfPlaceResult);
CPPUNIT_TEST(testSortPartialFormulaGroup);
CPPUNIT_TEST(testShiftCells);
diff --git a/sc/qa/unit/ucalc_sort.cxx b/sc/qa/unit/ucalc_sort.cxx
index fa33810..37c7da8 100644
--- a/sc/qa/unit/ucalc_sort.cxx
+++ b/sc/qa/unit/ucalc_sort.cxx
@@ -1480,6 +1480,221 @@ void Test::testSortRefUpdate6()
m_pDoc->DeleteTab(0);
}
+// fdo#86762 check that broadcasters are sorted correctly and empty cell is
+// broadcasted.
+void Test::testSortBroadcaster()
+{
+ SortRefNoUpdateSetter aUpdateSet;
+
+ sc::AutoCalcSwitch aACSwitch(*m_pDoc, true); // turn auto calc on.
+ m_pDoc->InsertTab(0, "Sort");
+
+ {
+ const char* aData[][7] = {
+ { "1", 0, 0, "=B1", "=$B$1", "=SUM(A1:B1)", "=SUM($A$1:$B$1)" },
+ { "2", "8", 0, "=B2", "=$B$2", "=SUM(A2:B2)", "=SUM($A$2:$B$2)" },
+ };
+
+ ScAddress aPos(0,0,0);
+ ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+ CPPUNIT_ASSERT(aDataRange.aStart == aPos);
+
+ {
+ // Expected output table content. 0 = empty cell
+ const char* aOutputCheck[][7] = {
+ { "1", 0, 0, "0", "0", "1", "1" },
+ { "2", "8", 0, "8", "8", "10", "10" },
+ };
+
+ bool bSuccess = checkOutput<7>(m_pDoc, aDataRange, aOutputCheck, "Initial value");
+ CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
+ }
+
+ // Sort A1:B2.
+ m_pDoc->SetAnonymousDBData(
+ 0, new ScDBData(STR_DB_LOCAL_NONAME, 0, 0, 0, 1, 1));
+
+ ScDBDocFunc aFunc(getDocShell());
+
+ // Sort A1:B2 by column A descending.
+ ScSortParam aSortData;
+ aSortData.nCol1 = 0;
+ aSortData.nCol2 = 1;
+ aSortData.nRow1 = 0;
+ aSortData.nRow2 = 1;
+ aSortData.bHasHeader = false;
+ aSortData.bByRow = true;
+ aSortData.maKeyState[0].bDoSort = true;
+ aSortData.maKeyState[0].nField = 0;
+ aSortData.maKeyState[0].bAscending = false;
+ bool bSorted = aFunc.Sort(0, aSortData, true, true, true);
+ CPPUNIT_ASSERT(bSorted);
+
+ {
+ // Expected output table content. 0 = empty cell
+ const char* aOutputCheck[][7] = {
+ { "2", "8", 0, "8", "8", "10", "10" },
+ { "1", 0, 0, "0", "0", "1", "1" },
+ };
+
+ bool bSuccess = checkOutput<7>(m_pDoc, aDataRange, aOutputCheck, "Sorted without reference update");
+ CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
+ }
+
+ // Make sure that the formulas in D1:G2 are not adjusted.
+ if (!checkFormula(*m_pDoc, ScAddress(3,0,0), "B1"))
+ CPPUNIT_FAIL("Wrong formula!");
+ if (!checkFormula(*m_pDoc, ScAddress(3,1,0), "B2"))
+ CPPUNIT_FAIL("Wrong formula!");
+ if (!checkFormula(*m_pDoc, ScAddress(4,0,0), "$B$1"))
+ CPPUNIT_FAIL("Wrong formula!");
+ if (!checkFormula(*m_pDoc, ScAddress(4,1,0), "$B$2"))
+ CPPUNIT_FAIL("Wrong formula!");
+ if (!checkFormula(*m_pDoc, ScAddress(5,0,0), "SUM(A1:B1)"))
+ CPPUNIT_FAIL("Wrong formula!");
+ if (!checkFormula(*m_pDoc, ScAddress(5,1,0), "SUM(A2:B2)"))
+ CPPUNIT_FAIL("Wrong formula!");
+ if (!checkFormula(*m_pDoc, ScAddress(6,0,0), "SUM($A$1:$B$1)"))
+ CPPUNIT_FAIL("Wrong formula!");
+ if (!checkFormula(*m_pDoc, ScAddress(6,1,0), "SUM($A$2:$B$2)"))
+ CPPUNIT_FAIL("Wrong formula!");
+
+ // Enter new value and check that it is broadcasted. First in empty cell.
+ m_pDoc->SetString(1,1,0, "16");
+ double nVal = m_pDoc->GetValue(3,1,0);
+ ASSERT_DOUBLES_EQUAL( 16.0, nVal);
+ nVal = m_pDoc->GetValue(4,1,0);
+ ASSERT_DOUBLES_EQUAL( 16.0, nVal);
+ nVal = m_pDoc->GetValue(5,1,0);
+ ASSERT_DOUBLES_EQUAL( 17.0, nVal);
+ nVal = m_pDoc->GetValue(6,1,0);
+ ASSERT_DOUBLES_EQUAL( 17.0, nVal);
+
+ // Enter new value and check that it is broadcasted. Now overwriting data.
+ m_pDoc->SetString(1,0,0, "32");
+ nVal = m_pDoc->GetValue(3,0,0);
+ ASSERT_DOUBLES_EQUAL( 32.0, nVal);
+ nVal = m_pDoc->GetValue(4,0,0);
+ ASSERT_DOUBLES_EQUAL( 32.0, nVal);
+ nVal = m_pDoc->GetValue(5,0,0);
+ ASSERT_DOUBLES_EQUAL( 34.0, nVal);
+ nVal = m_pDoc->GetValue(6,0,0);
+ ASSERT_DOUBLES_EQUAL( 34.0, nVal);
+ }
+
+ // The same for sort by column. Start data at A5.
+
+ {
+ const char* aData[][2] = {
+ { "1", "2" },
+ { 0, "8" },
+ { 0, 0 },
+ { "=A6", "=B6" },
+ { "=$A$6", "=$B$6" },
+ { "=SUM(A5:A6)", "=SUM(B5:B6)" },
+ { "=SUM($A$5:$A$6)", "=SUM($B$5:$B$6)" },
+ };
+
+ ScAddress aPos(0,4,0);
+ ScRange aDataRange = insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData));
+ CPPUNIT_ASSERT(aDataRange.aStart == aPos);
+
+ {
+ // Expected output table content. 0 = empty cell
+ const char* aOutputCheck[][2] = {
+ { "1", "2" },
+ { 0, "8" },
+ { 0, 0 },
+ { "0", "8" },
+ { "0", "8" },
+ { "1", "10" },
+ { "1", "10" },
+ };
+
+ bool bSuccess = checkOutput<2>(m_pDoc, aDataRange, aOutputCheck, "Initial value");
+ CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
+ }
+
+ // Sort A5:B6.
+ m_pDoc->SetAnonymousDBData(
+ 0, new ScDBData(STR_DB_LOCAL_NONAME, 0, 0, 4, 1, 5));
+
+ ScDBDocFunc aFunc(getDocShell());
+
+ // Sort A5:B6 by row 5 descending.
+ ScSortParam aSortData;
+ aSortData.nCol1 = 0;
+ aSortData.nCol2 = 1;
+ aSortData.nRow1 = 4;
+ aSortData.nRow2 = 5;
+ aSortData.bHasHeader = false;
+ aSortData.bByRow = false;
+ aSortData.maKeyState[0].bDoSort = true;
+ aSortData.maKeyState[0].nField = 0;
+ aSortData.maKeyState[0].bAscending = false;
+ bool bSorted = aFunc.Sort(0, aSortData, true, true, true);
+ CPPUNIT_ASSERT(bSorted);
+
+ {
+ // Expected output table content. 0 = empty cell
+ const char* aOutputCheck[][2] = {
+ { "2", "1" },
+ { "8", 0 },
+ { 0, 0 },
+ { "8", "0" },
+ { "8", "0" },
+ { "10", "1" },
+ { "10", "1" },
+ };
+
+ bool bSuccess = checkOutput<2>(m_pDoc, aDataRange, aOutputCheck, "Sorted without reference update");
+ CPPUNIT_ASSERT_MESSAGE("Table output check failed", bSuccess);
+ }
+
+ // Make sure that the formulas in A8:B11 are not adjusted.
+ if (!checkFormula(*m_pDoc, ScAddress(0,7,0), "A6"))
+ CPPUNIT_FAIL("Wrong formula!");
+ if (!checkFormula(*m_pDoc, ScAddress(1,7,0), "B6"))
+ CPPUNIT_FAIL("Wrong formula!");
+ if (!checkFormula(*m_pDoc, ScAddress(0,8,0), "$A$6"))
+ CPPUNIT_FAIL("Wrong formula!");
+ if (!checkFormula(*m_pDoc, ScAddress(1,8,0), "$B$6"))
+ CPPUNIT_FAIL("Wrong formula!");
+ if (!checkFormula(*m_pDoc, ScAddress(0,9,0), "SUM(A5:A6)"))
+ CPPUNIT_FAIL("Wrong formula!");
+ if (!checkFormula(*m_pDoc, ScAddress(1,9,0), "SUM(B5:B6)"))
+ CPPUNIT_FAIL("Wrong formula!");
+ if (!checkFormula(*m_pDoc, ScAddress(0,10,0), "SUM($A$5:$A$6)"))
+ CPPUNIT_FAIL("Wrong formula!");
+ if (!checkFormula(*m_pDoc, ScAddress(1,10,0), "SUM($B$5:$B$6)"))
+ CPPUNIT_FAIL("Wrong formula!");
+
+ // Enter new value and check that it is broadcasted. First in empty cell.
+ m_pDoc->SetString(1,5,0, "16");
+ double nVal = m_pDoc->GetValue(1,7,0);
+ ASSERT_DOUBLES_EQUAL(nVal, 16.0);
+ nVal = m_pDoc->GetValue(1,8,0);
+ ASSERT_DOUBLES_EQUAL(nVal, 16.0);
+ nVal = m_pDoc->GetValue(1,9,0);
+ ASSERT_DOUBLES_EQUAL(nVal, 17.0);
+ nVal = m_pDoc->GetValue(1,10,0);
+ ASSERT_DOUBLES_EQUAL(nVal, 17.0);
+
+ // Enter new value and check that it is broadcasted. Now overwriting data.
+ m_pDoc->SetString(0,5,0, "32");
+ nVal = m_pDoc->GetValue(0,7,0);
+ ASSERT_DOUBLES_EQUAL(nVal, 32.0);
+ nVal = m_pDoc->GetValue(0,8,0);
+ ASSERT_DOUBLES_EQUAL(nVal, 32.0);
+ nVal = m_pDoc->GetValue(0,9,0);
+ ASSERT_DOUBLES_EQUAL(nVal, 34.0);
+ nVal = m_pDoc->GetValue(0,10,0);
+ ASSERT_DOUBLES_EQUAL(nVal, 34.0);
+ }
+
+ m_pDoc->DeleteTab(0);
+}
+
void Test::testSortOutOfPlaceResult()
{
m_pDoc->InsertTab(0, "Sort");
More information about the Libreoffice-commits
mailing list