tdf#97361 Make check_table.py more pythonic

Improve readability by inserting a little whitespace,
and obeying PEP 8 (python style guide) more closely.
Also remove an unused import and a few unused
local variables.

Change-Id: I07de686ec9b04e293bc4e0a092e5ad957cffbbba
Reviewed-on: https://gerrit.libreoffice.org/61624
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
diff --git a/sw/qa/python/check_table.py b/sw/qa/python/check_table.py
index 8fd888f..9cb3b82 100644
--- a/sw/qa/python/check_table.py
+++ b/sw/qa/python/check_table.py
@@ -7,8 +7,10 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#

import math
import unittest

from org.libreoffice.unotest import UnoInProcess
from com.sun.star.beans import PropertyValue
from com.sun.star.uno import RuntimeException
@@ -16,23 +18,18 @@
from com.sun.star.table import BorderLine2
from com.sun.star.table.BorderLineStyle import (DOUBLE, SOLID, EMBOSSED,
                                                THICKTHIN_LARGEGAP, DASHED, DOTTED)
from com.sun.star.util import XNumberFormats
from com.sun.star.lang import Locale


class CheckTable(unittest.TestCase):

    def _fill_table(self, xTable):

        for x in range(3):
            for y in range(3):
                xTable[y,x].String = 'Cell %d %d' % (x, y)
                xTable[y, x].String = 'Cell %d %d' % (x, y)

    def _check_table(self, xTable):

        for x in range(3):
            for y in range(3):
                self.assertEqual('Cell %d %d' % (x, y), xTable[y,x].String)
                self.assertEqual('Cell %d %d' % (x, y), xTable[y, x].String)

    @classmethod
    def setUpClass(cls):
@@ -92,12 +89,13 @@

        self.__test_borderDistance(border)

    # set border
        border.TopLine = BorderLine(0,      11, 19, 19)
        border.BottomLine = BorderLine(0xFF,   00, 11, 00)
        # set border
        border.TopLine = BorderLine(0, 11, 19, 19)
        border.BottomLine = BorderLine(0xFF, 00, 11, 00)
        border.HorizontalLine = BorderLine(0xFF00, 00, 90, 00)
        xTable.setPropertyValue("TableBorder", border)
    # read set border

        # read set border
        border = xTable.getPropertyValue("TableBorder")

        self.assertTrue(border.IsTopLineValid)
@@ -127,6 +125,7 @@
        self.__test_borderDistance(border)

        border2 = xTable.getPropertyValue("TableBorder2")

        self.assertTrue(border2.IsTopLineValid)
        self.assertEqual(11, border2.TopLine.InnerLineWidth)
        self.assertEqual(19, border2.TopLine.OuterLineWidth)
@@ -158,13 +157,15 @@
        self.__test_borderAssertsWithLineStyle(border2.VerticalLine, border2.IsVerticalLineValid)

        self.__test_borderDistance(border2)
    # set border2

        # set border2
        border2.RightLine = BorderLine2(0, 0, 0, 0, THICKTHIN_LARGEGAP, 120)
        border2.LeftLine = BorderLine2(0, 0, 0, 0, EMBOSSED, 90)
        border2.VerticalLine = BorderLine2(0xFF, 0, 90, 0, DOTTED, 0)
        border2.HorizontalLine = BorderLine2(0xFF00, 0, 0, 0, DASHED, 11)
        xTable.setPropertyValue("TableBorder2", border2)
    # read set border2

        # read set border2
        border2 = xTable.getPropertyValue("TableBorder2")

        self.assertTrue(border2.IsTopLineValid)
@@ -217,29 +218,30 @@

        self.__test_borderDistance(border2)

    # close document
        # close document
        xDoc.dispose()

    def test_fdo58242(self):
        xDoc = CheckTable._uno.openEmptyWriterDoc()
    # insert table
        # insert table
        xTable = xDoc.createInstance("com.sun.star.text.TextTable")
        xTable.initialize(3, 3)
        xText = xDoc.getText()
        xCursor = xText.createTextCursor()
        xText.insertTextContent(xCursor, xTable, False)
    # get anchor
        # get anchor
        xAnchor = xTable.getAnchor()

    # check all properties on the anchor - shouldn't crash despite
    # pointing to a non-SwTextNode
        # check all properties on the anchor - shouldn't crash despite
        # pointing to a non-SwTextNode
        xPropsInfo = xAnchor.getPropertySetInfo()
        for i in xPropsInfo.getProperties():
            try:
                xAnchor.getPropertyValue(i.Name)
            except RuntimeException:
                pass
    # close document

        # close document
        xDoc.dispose()

    def test_descriptions(self):
@@ -255,9 +257,11 @@
        self.assertEqual("foo", xTable.TableName)
        xTable.TableTemplateName = "bar"
        self.assertEqual("bar", xTable.TableTemplateName)

        # fill table
        self._fill_table(xTable)
        self._check_table(xTable)

        # check without labels first
        xTable.ChartColumnAsLabel = False
        xTable.ChartRowAsLabel = False
@@ -266,6 +270,7 @@
        self.RowDescriptions = ('foo', 'bar', 'baz')  # no labels, thus noop
        self.ColumnDescriptions = ('foo', 'bar', 'baz')  # no labels, thus noop
        self._check_table(xTable)

        # now check with labels
        xTable.ChartColumnAsLabel = True
        xTable.ChartRowAsLabel = True
@@ -275,33 +280,41 @@
        self.assertEqual(2, len(xTable.ColumnDescriptions))
        self.assertEqual('Cell 1 0', xTable.ColumnDescriptions[0])
        self.assertEqual('Cell 2 0', xTable.ColumnDescriptions[1])

        with self.assertRaises(Exception):
            xTable.RowDescriptions = ('foo',)  # too short

        with self.assertRaises(Exception):
            xTable.ColumnDescriptions = ('foo',)  # too short

        self._check_table(xTable)
        xTable.RowDescriptions = ('fooRow', 'bazRow')
        xTable.ColumnDescriptions = ('fooColumn', 'bazColumn')
        self.assertEqual('fooRow', xTable[1,0].String)
        self.assertEqual('bazRow', xTable[2,0].String)
        self.assertEqual('fooColumn', xTable[0,1].String)
        self.assertEqual('bazColumn', xTable[0,2].String)
        xTable[1,0].String = 'Cell 0 1'  # reset changes values ...
        xTable[2,0].String = 'Cell 0 2'
        xTable[0,1].String = 'Cell 1 0'
        xTable[0,2].String = 'Cell 2 0'
        self.assertEqual('fooRow', xTable[1, 0].String)
        self.assertEqual('bazRow', xTable[2, 0].String)
        self.assertEqual('fooColumn', xTable[0, 1].String)
        self.assertEqual('bazColumn', xTable[0, 2].String)
        xTable[1, 0].String = 'Cell 0 1'  # reset changes values ...
        xTable[2, 0].String = 'Cell 0 2'
        xTable[0, 1].String = 'Cell 1 0'
        xTable[0, 2].String = 'Cell 2 0'
        self._check_table(xTable)  # ... to ensure the rest was untouched

        # check disconnected table excepts, but doesn't crash
        xTable2 = xDoc.createInstance("com.sun.star.text.TextTable")
        xTable2.initialize(3, 3)

        with self.assertRaises(Exception):
            foo = xTable2.RowDescriptions
            xTable2.RowDescriptions

        with self.assertRaises(Exception):
            foo = xTable2.ColumnDescriptions
            xTable2.ColumnDescriptions

        xDoc.dispose()

    def test_getset_data(self):
        xDoc = CheckTable._uno.openEmptyWriterDoc()

        # insert table
        xTable = xDoc.createInstance("com.sun.star.text.TextTable")
        xTable.initialize(4, 3)
@@ -309,15 +322,19 @@
        xDoc.Text.insertTextContent(xCursor, xTable, False)
        xTable.ChartColumnAsLabel = False
        xTable.ChartRowAsLabel = False

        # roundtrip
        xTable.Data = ((1, 2, 3), (4, 5, 6), (7, 8, 9), (10, 11, 12))
        self.assertEqual(xTable.Data, ((1, 2, 3), (4, 5, 6), (7, 8, 9), (10, 11, 12)))

        # missing row
        with self.assertRaises(Exception):
            xTable.Data = ((1, 2, 3), (4, 5, 6), (7, 8, 9))

        # missing column
        with self.assertRaises(Exception):
            xTable.Data = ((1, 2), (4, 5), (7, 8), (10, 11))

        # with labels
        xTable.ChartColumnAsLabel = True
        xTable.ChartRowAsLabel = True
@@ -372,14 +389,15 @@
        xTable.Data = ((1, 2, 3), (4, 5, 6), (7, 8, 9), (10, 11, 12))
        xRows = xTable.Rows
        xRows.insertByIndex(1, 2)
        nan = float('nan')
        self.assertEqual(xTable.Data[0], (1, 2, 3))
        self.assertEqual(xTable.Data[3], (4, 5, 6))
        self.assertEqual(xTable.Data[4], (7, 8, 9))
        self.assertEqual(xTable.Data[5], (10, 11, 12))

        for x in range(3):
            self.assertTrue(math.isnan(xTable.Data[1][x]))
            self.assertTrue(math.isnan(xTable.Data[2][x]))

        xCols = xTable.Columns
        xCols.insertByIndex(1, 1)
        self.assertEqual(xTable.Data[0][0], 1)
@@ -398,6 +416,7 @@
        self.assertTrue(math.isnan(xTable.Data[5][1]))
        self.assertEqual(xTable.Data[5][2], 11)
        self.assertEqual(xTable.Data[5][3], 12)

        for x in range(4):
            self.assertTrue(math.isnan(xTable.Data[1][x]))
            self.assertTrue(math.isnan(xTable.Data[2][x]))
@@ -436,9 +455,8 @@
            self.assertEqual(xSeq.SourceRangeRepresentation, 'Table1.%s' % expected_cellrange[col])
            self.assertEqual(xSeq.Data, expected_values[col])
            self.assertEqual(xSeq.NumericalData, expected_values[col])
            self.assertEqual(
                    [int(txtval) for txtval in xSeq.TextualData],
                    [val for val in expected_values[col]])
            self.assertEqual([int(txtval) for txtval in xSeq.TextualData],
                             [val for val in expected_values[col]])

            xSeq.Role = "One xSeq to rule them all"
            self.assertEqual("One xSeq to rule them all", xSeq.Role)
@@ -453,36 +471,42 @@
        xDocFrame = xDoc.CurrentController.Frame
        xContext = CheckTable._uno.getContext()
        xServiceManager = xContext.ServiceManager
        xDispatcher = xServiceManager.createInstanceWithContext(
            'com.sun.star.frame.DispatchHelper', xContext)
        xDispatcher = xServiceManager.createInstanceWithContext('com.sun.star.frame.DispatchHelper',
                                                                xContext)

        xTable = xDoc.createInstance("com.sun.star.text.TextTable")
        xTable.initialize(1, 1)
        xCursor = xDoc.Text.createTextCursor()
        xDoc.Text.insertTextContent(xCursor, xTable, False)

        # Setup numberformat for the cell
        xNumberFormats = xDoc.NumberFormats
        xLocale = Locale('en', 'US', '')
        format_string = '#,##0.00 [$€-407];[RED]-#,##0.00 [$€-407]'
        key = xNumberFormats.queryKey(format_string, xLocale, True)

        if key == -1:
            key = xNumberFormats.addNew(format_string, xLocale)

        # Apply the format on the first cell
        xTable[0,0].NumberFormat = key
        xTable[0, 0].NumberFormat = key
        xDispatcher.executeDispatch(xDocFrame, '.uno:GoToStartOfDoc', '', 0, ())
        xDispatcher.executeDispatch(xDocFrame, '.uno:InsertText', '', 0,
                                    (PropertyValue('Text', 0, '3', 0),))
        xDispatcher.executeDispatch(xDocFrame, '.uno:JumpToNextCell', '', 0, ())

        # Check that the formatting we set up is not destroyed
        self.assertEqual(xTable[0,0].getString(), '3.00 €')
        self.assertEqual(xTable[0,0].getValue(), 3)
        self.assertEqual(xTable[0, 0].getString(), '3.00 €')
        self.assertEqual(xTable[0, 0].getValue(), 3)

        # Verify that it works with number recognition turned on as well
        xDispatcher.executeDispatch(xDocFrame, '.uno:TableNumberRecognition', '', 0,
                                    (PropertyValue('TableNumberRecognition', 0, True, 0),))
        xDispatcher.executeDispatch(xDocFrame, '.uno:InsertText', '', 0,
                                    (PropertyValue('Text', 0, '4', 0),))
        xDispatcher.executeDispatch(xDocFrame, '.uno:JumpToNextCell', '', 0, ())
        self.assertEqual(xTable[1,0].getString(), '4.00 €')
        self.assertEqual(xTable[1,0].getValue(), 4)
        self.assertEqual(xTable[1, 0].getString(), '4.00 €')
        self.assertEqual(xTable[1, 0].getValue(), 4)
        xDoc.dispose()

    def test_numberRecognition(self):
@@ -490,8 +514,9 @@
        xDocFrame = xDoc.CurrentController.Frame
        xContext = CheckTable._uno.getContext()
        xServiceManager = xContext.ServiceManager
        xDispatcher = xServiceManager.createInstanceWithContext(
            'com.sun.star.frame.DispatchHelper', xContext)
        xDispatcher = xServiceManager.createInstanceWithContext('com.sun.star.frame.DispatchHelper',
                                                                xContext)

        xTable = xDoc.createInstance('com.sun.star.text.TextTable')
        xTable.initialize(2, 1)
        xCursor = xDoc.Text.createTextCursor()
@@ -500,19 +525,22 @@
        xDispatcher.executeDispatch(xDocFrame, '.uno:InsertText', '', 0,
                                    (PropertyValue('Text', 0, '2015-10-30', 0),))
        xDispatcher.executeDispatch(xDocFrame, '.uno:JumpToNextCell', '', 0, ())

        # Without number recognition 2015-10-30 should not be interpreted as a date
        self.assertEqual(xTable[0,0].getString(), '2015-10-30')
        self.assertEqual(xTable[0,0].getValue(), 0)
        self.assertEqual(xTable[0, 0].getString(), '2015-10-30')
        self.assertEqual(xTable[0, 0].getValue(), 0)

        # Activate number recognition
        xDispatcher.executeDispatch(xDocFrame, '.uno:TableNumberRecognition', '', 0,
                                    (PropertyValue('TableNumberRecognition', 0, True, 0),))
        xDispatcher.executeDispatch(xDocFrame, '.uno:InsertText', '', 0,
                                    (PropertyValue('Text', 0, '2015-10-30', 0),))
        xDispatcher.executeDispatch(xDocFrame, '.uno:JumpToNextCell', '', 0, ())

        # With number recognition it should now be a date, confirm by checking
        # the string and value of the cell.
        self.assertEqual(xTable[1,0].getString(), '2015-10-30')
        self.assertEqual(xTable[1,0].getValue(), 42307.0)
        self.assertEqual(xTable[1, 0].getString(), '2015-10-30')
        self.assertEqual(xTable[1, 0].getValue(), 42307.0)
        xDoc.dispose()

    def test_tableTemplate(self):
@@ -527,7 +555,6 @@
        self.assertEqual(xTable.getPropertyValue("TableTemplateName"), "")
        xDoc.dispose()


    def test_unoNames(self):
        xDoc = CheckTable._uno.openEmptyWriterDoc()
        xTable = xDoc.createInstance("com.sun.star.text.TextTable")
@@ -543,7 +570,7 @@
                          "com.sun.star.text.TextSortable"), xTable.SupportedServiceNames)
        self.assertEqual(b'', xTable.ImplementationId.value)

        xCell = xTable[1,1]
        xCell = xTable[1, 1]
        self.assertEqual("SwXCell", xCell.ImplementationName)
        self.assertEqual(("com.sun.star.text.CellProperties",), xCell.SupportedServiceNames)
        self.assertEqual(b'', xCell.ImplementationId.value)