[Libreoffice-commits] core.git: sw/qa
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Mon Nov 12 06:00:36 UTC 2018
sw/qa/python/check_table.py | 123 ++++++++++++++++++++++++++------------------
1 file changed, 75 insertions(+), 48 deletions(-)
New commits:
commit f3b743a453002c78eacd0482c26017b75964c989
Author: Hamish McIntyre-Bhatty <hamishmb at live.co.uk>
AuthorDate: Wed Oct 10 16:19:40 2018 +0100
Commit: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
CommitDate: Mon Nov 12 07:00:14 2018 +0100
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 at cib.de>
diff --git a/sw/qa/python/check_table.py b/sw/qa/python/check_table.py
index 8fd888f187bd..9cb3b829d4d3 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 BorderLine
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 @@ class CheckTable(unittest.TestCase):
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 @@ class CheckTable(unittest.TestCase):
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 @@ class CheckTable(unittest.TestCase):
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 @@ class CheckTable(unittest.TestCase):
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 @@ class CheckTable(unittest.TestCase):
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 @@ class CheckTable(unittest.TestCase):
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 @@ class CheckTable(unittest.TestCase):
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 @@ class CheckTable(unittest.TestCase):
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 @@ class CheckTable(unittest.TestCase):
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 @@ class CheckTable(unittest.TestCase):
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 @@ class CheckTable(unittest.TestCase):
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 @@ class CheckTable(unittest.TestCase):
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 @@ class CheckTable(unittest.TestCase):
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 @@ class CheckTable(unittest.TestCase):
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 @@ class CheckTable(unittest.TestCase):
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 @@ class CheckTable(unittest.TestCase):
"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)
More information about the Libreoffice-commits
mailing list