diff options
Diffstat (limited to 'pyuno/qa/pytests/testcollections_XNameContainer.py')
-rw-r--r-- | pyuno/qa/pytests/testcollections_XNameContainer.py | 132 |
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: |