diff options
Diffstat (limited to 'sw/qa/python/check_indexed_property_values.py')
-rw-r--r-- | sw/qa/python/check_indexed_property_values.py | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/sw/qa/python/check_indexed_property_values.py b/sw/qa/python/check_indexed_property_values.py new file mode 100644 index 000000000..ceaf82a6c --- /dev/null +++ b/sw/qa/python/check_indexed_property_values.py @@ -0,0 +1,88 @@ +''' + 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/. + + This file incorporates work covered by the following license notice: + + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed + with this work for additional information regarding copyright + ownership. The ASF licenses this file to you under the Apache + License, Version 2.0 (the "License"); you may not use this file + except in compliance with the License. You may obtain a copy of + the License at http://www.apache.org/licenses/LICENSE-2.0 . +''' + +import unittest +import unohelper +import uno +from org.libreoffice.unotest import UnoInProcess +from com.sun.star.beans import PropertyValue +from com.sun.star.container import XIndexContainer +from org.libreoffice.unotest import OfficeConnection +from com.sun.star.lang import IllegalArgumentException +from com.sun.star.lang import IndexOutOfBoundsException + + +class CheckIndexedPropertyValues(unittest.TestCase): + + @classmethod + def setUpClass(cls): + cls._uno = UnoInProcess() + cls._uno.setUp() + cls.xContext = cls._uno.getContext() + + @classmethod + def tearDownClass(cls): + cls._uno.tearDown() + + def test_checkIndexedPropertyValues(self): + xServiceManager = self.xContext.ServiceManager + xCont = xServiceManager.createInstanceWithContext('com.sun.star.document.IndexedPropertyValues', + self.xContext) + + p1 = PropertyValue(Name="Jupp", Value="GoodGuy") + prop1 = uno.Any("[]com.sun.star.beans.PropertyValue", (p1,)) + + p2 = PropertyValue(Name="Horst", Value="BadGuy") + prop2 = uno.Any("[]com.sun.star.beans.PropertyValue", (p2,)) + + p3 = PropertyValue(Name="Peter", Value="FamilyGuy") + prop3 = uno.Any("[]com.sun.star.beans.PropertyValue", (p3,)) + + t = xCont.getElementType() + self.assertEqual(0, len(xCont), "Initial container is not empty") + uno.invoke(xCont, "insertByIndex", (0, prop1)) + + ret = xCont[0] + self.assertEqual(p1.Name, ret[0].Name) + self.assertEqual(p1.Value, ret[0].Value) + + uno.invoke(xCont, "replaceByIndex", (0, prop2)) + ret = xCont[0] + self.assertEqual(p2.Name, ret[0].Name) + self.assertEqual(p2.Value, ret[0].Value) + + xCont.removeByIndex(0) + self.assertTrue(not(xCont.hasElements()) and len(xCont) == 0, "Could not remove PropertyValue") + uno.invoke(xCont, "insertByIndex", (0, prop1)) + uno.invoke(xCont, "insertByIndex", (1, prop2)) + self.assertTrue(xCont.hasElements() and len(xCont) == 2, "Did not insert PropertyValue") + + uno.invoke(xCont, "insertByIndex", (1, prop2)) + uno.invoke(xCont, "insertByIndex", (1, prop3)) + ret = xCont[1] + self.assertEqual(p3.Name, ret[0].Name) + self.assertEqual(p3.Value, ret[0].Value) + + with self.assertRaises(IndexOutOfBoundsException): + uno.invoke(xCont, "insertByIndex", (25, prop2)) + + with self.assertRaises(IndexOutOfBoundsException): + xCont.removeByIndex(25) + + with self.assertRaises(IllegalArgumentException): + uno.invoke(xCont, "insertByIndex", (3, "Example String")) |