summaryrefslogtreecommitdiffstats
path: root/pyuno/qa/pytests/testcollections_XNameContainer.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyuno/qa/pytests/testcollections_XNameContainer.py')
-rw-r--r--pyuno/qa/pytests/testcollections_XNameContainer.py132
1 files changed, 132 insertions, 0 deletions
diff --git a/pyuno/qa/pytests/testcollections_XNameContainer.py b/pyuno/qa/pytests/testcollections_XNameContainer.py
new file mode 100644
index 000000000..c544ca9dd
--- /dev/null
+++ b/pyuno/qa/pytests/testcollections_XNameContainer.py
@@ -0,0 +1,132 @@
+#!/usr/bin/env python
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# 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 unittest
+import uno
+
+from testcollections_base import CollectionsTestBase
+from com.sun.star.beans import PropertyValue
+
+# SheetCellRanges instance factory
+def getSheetCellRangesInstance(spr):
+ return spr.createInstance("com.sun.star.sheet.SheetCellRanges")
+
+
+# Tests behaviour of objects implementing XNameContainer using the new-style
+# collection accessors
+# The objects chosen have no special meaning, they just happen to implement the
+# tested interfaces
+
+class TestXNameContainer(CollectionsTestBase):
+
+ # Tests syntax:
+ # obj[key] = val # Insert by key
+ # For:
+ # 0->1 element
+ def test_XNameContainer_InsertName(self):
+ # Given
+ spr = self.createBlankSpreadsheet()
+ ranges = getSheetCellRangesInstance(spr)
+ new_range = spr.Sheets[0].getCellRangeByPosition(1, 2, 1, 2)
+
+ # When
+ ranges['foo'] = new_range
+
+ # Then
+ self.assertEqual(1, len(ranges.ElementNames))
+
+ spr.close(True)
+
+ # Tests syntax:
+ # obj[key] = val # Insert by key
+ # For:
+ # Invalid key
+ def test_XNameContainer_InsertName_Invalid(self):
+ # Given
+ spr = self.createBlankSpreadsheet()
+ ranges = getSheetCellRangesInstance(spr)
+ new_range = spr.Sheets[0].getCellRangeByPosition(1, 2, 1, 2)
+
+ # When / Then
+ with self.assertRaises(TypeError):
+ ranges[12.34] = new_range
+
+ spr.close(True)
+
+ # Tests syntax:
+ # obj[key] = val # Replace by key
+ def test_XNameContainer_ReplaceName(self):
+ # Given
+ spr = self.createBlankSpreadsheet()
+ ranges = getSheetCellRangesInstance(spr)
+ new_range1 = spr.Sheets[0].getCellRangeByPosition(1, 2, 1, 2)
+ new_range2 = spr.Sheets[0].getCellRangeByPosition(6, 6, 6, 6)
+
+ # When
+ ranges['foo'] = new_range1
+ ranges['foo'] = new_range2
+
+ # Then
+ self.assertEqual(1, len(ranges.ElementNames))
+ read_range = ranges['foo']
+ self.assertEqual(6, read_range.CellAddress.Column)
+
+ spr.close(True)
+
+ # Tests syntax:
+ # del obj[key] # Delete by key
+ # For:
+ # 1/2 elements
+ def test_XNameContainer_DelKey(self):
+ # Given
+ spr = self.createBlankSpreadsheet()
+ spr.Sheets.insertNewByName('foo', 1)
+
+ # When
+ del spr.Sheets['foo']
+
+ # Then
+ self.assertEqual(1, len(spr.Sheets))
+ self.assertFalse('foo' in spr.Sheets)
+
+ spr.close(True)
+
+ # Tests syntax:
+ # del obj[key] # Delete by key
+ # For:
+ # Missing key
+ def test_XNameContainer_DelKey_Missing(self):
+ # Given
+ spr = self.createBlankSpreadsheet()
+
+ # When / Then
+ with self.assertRaises(KeyError):
+ del spr.Sheets['foo']
+
+ spr.close(True)
+
+ # Tests syntax:
+ # del obj[key] # Delete by key
+ # For:
+ # Invalid key (float)
+ def test_XNameContainer_DelKey_Invalid(self):
+ # Given
+ spr = self.createBlankSpreadsheet()
+
+ # When / Then
+ with self.assertRaises(TypeError):
+ del spr.Sheets[12.34]
+
+ spr.close(True)
+
+
+if __name__ == '__main__':
+ unittest.main()
+
+# vim:set shiftwidth=4 softtabstop=4 expandtab: