diff options
Diffstat (limited to 'pyuno/qa/pytests/testcollections_XNameAccess.py')
-rw-r--r-- | pyuno/qa/pytests/testcollections_XNameAccess.py | 203 |
1 files changed, 203 insertions, 0 deletions
diff --git a/pyuno/qa/pytests/testcollections_XNameAccess.py b/pyuno/qa/pytests/testcollections_XNameAccess.py new file mode 100644 index 000000000..498e17e28 --- /dev/null +++ b/pyuno/qa/pytests/testcollections_XNameAccess.py @@ -0,0 +1,203 @@ +#!/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 + + +# Tests behaviour of objects implementing XNameAccess using the new-style +# collection accessors +# The objects chosen have no special meaning, they just happen to implement the +# tested interfaces + +class TestXNameAccess(CollectionsTestBase): + + # Tests syntax: + # num = len(obj) # Number of keys + # For: + # 2 elements + def test_XNameAccess_Len(self): + # Given + drw = self.createBlankDrawing() + + # When + length = len(drw.Links) + + # Then + self.assertEqual(2, length) + + drw.close(True) + + # Tests syntax: + # val = obj[key] # Access by key + # For: + # 1/2 elements + def test_XNameAccess_ReadKey(self): + # Given + drw = self.createBlankDrawing() + drw.DrawPages[0].Name = 'foo' + + # When + link = drw.Links['foo'] + + # Then + self.assertEqual('foo', link.getName()) + + drw.close(True) + + # Tests syntax: + # val = obj[key] # Access by key + # For: + # Missing key + def test_XNameAccess_ReadKey_Missing(self): + # Given + drw = self.createBlankDrawing() + + # When / Then + with self.assertRaises(KeyError): + link = drw.Links['foo'] + + drw.close(True) + + # Tests syntax: + # val = obj[key] # Access by key + # For: + # Invalid key type (None) + def test_XNameAccess_ReadKey_Invalid_None(self): + # Given + drw = self.createBlankDrawing() + + # When / Then + with self.assertRaises(TypeError): + link = drw.Links[None] + + drw.close(True) + + # Tests syntax: + # val = obj[key] # Access by key + # For: + # Invalid key type (float) + def test_XNameAccess_ReadKey_Invalid_Float(self): + # Given + drw = self.createBlankDrawing() + + # When / Then + with self.assertRaises(TypeError): + link = drw.Links[12.34] + + drw.close(True) + + # Tests syntax: + # val = obj[key] # Access by key + # For: + # Invalid key type (tuple) + def test_XNameAccess_ReadKey_Invalid_Tuple(self): + # Given + drw = self.createBlankDrawing() + + # When / Then + with self.assertRaises(TypeError): + link = drw.Links[(1, 2)] + + drw.close(True) + + # Tests syntax: + # val = obj[key] # Access by key + # For: + # Invalid key type (list) + def test_XNameAccess_ReadKey_Invalid_List(self): + # Given + drw = self.createBlankDrawing() + + # When / Then + with self.assertRaises(TypeError): + link = drw.Links[[1, 2]] + + drw.close(True) + + # Tests syntax: + # val = obj[key] # Access by key + # For: + # Invalid key type (dict) + def test_XNameAccess_ReadKey_Invalid_Dict(self): + # Given + drw = self.createBlankDrawing() + + # When / Then + with self.assertRaises(TypeError): + link = drw.Links[{'a': 'b'}] + + drw.close(True) + + # Tests syntax: + # if key in obj: ... # Test key presence + # For: + # 1/2 elements + def test_XNameAccess_In(self): + # Given + drw = self.createBlankDrawing() + drw.DrawPages[0].Name = 'foo' + + # When + present = 'foo' in drw.Links + + # Then + self.assertTrue(present) + + drw.close(True) + + # Tests syntax: + # for key in obj: ... # Implicit iterator (keys) + # For: + # 2 elements + def test_XNameAccess_ForIn(self): + # Given + drw = self.createBlankDrawing() + i = 0 + for name in drw.Links.getElementNames(): + drw.Links.getByName(name).Name = 'foo' + str(i) + i += 1 + + # When + read_links = [] + for link in drw.Links: + read_links.append(link) + + # Then + self.assertEqual(['foo0', 'foo1'], read_links) + + drw.close(True) + + # Tests syntax: + # itr = iter(obj) # Named iterator (keys) + # For: + # 2 elements + def test_XNameAccess_Iter(self): + # Given + drw = self.createBlankDrawing() + + # When + itr = iter(drw.Links) + + # Then + self.assertIsNotNone(next(itr)) + self.assertIsNotNone(next(itr)) + with self.assertRaises(StopIteration): + next(itr) + + drw.close(True) + + +if __name__ == '__main__': + unittest.main() + +# vim:set shiftwidth=4 softtabstop=4 expandtab: |