From d4c620ba7e9abccd8a82e2c64bd0d8cdf9538380 Mon Sep 17 00:00:00 2001 From: Shubham Goyal <22shubh22@gmail.com> Date: Tue, 12 Mar 2019 15:32:33 +0530 Subject: tdf#124011 Add __ne__ method to UNO types Change-Id: I1dcb41b404d69e7437a2cc6f22d3391bb91f3acc Reviewed-on: https://gerrit.libreoffice.org/69216 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt --- pyuno/PythonTest_pyuno_pytests_testcollections.mk | 1 + pyuno/qa/pytests/testcollections_misc2.py | 72 +++++++++++++++++++++++ pyuno/source/module/pyuno_except.cxx | 3 + pyuno/source/module/uno.py | 11 ++++ 4 files changed, 87 insertions(+) create mode 100644 pyuno/qa/pytests/testcollections_misc2.py (limited to 'pyuno') diff --git a/pyuno/PythonTest_pyuno_pytests_testcollections.mk b/pyuno/PythonTest_pyuno_pytests_testcollections.mk index ba8fe2e8cb7f..abd26699c298 100644 --- a/pyuno/PythonTest_pyuno_pytests_testcollections.mk +++ b/pyuno/PythonTest_pyuno_pytests_testcollections.mk @@ -21,6 +21,7 @@ $(eval $(call gb_PythonTest_add_modules,pyuno_pytests_testcollections,$(SRCDIR)/ testcollections_XCellRange \ testcollections_mixednameindex \ testcollections_misc \ + testcollections_misc2 \ )) # vim: set noet sw=4 ts=4: diff --git a/pyuno/qa/pytests/testcollections_misc2.py b/pyuno/qa/pytests/testcollections_misc2.py new file mode 100644 index 000000000000..8566d2838e81 --- /dev/null +++ b/pyuno/qa/pytests/testcollections_misc2.py @@ -0,0 +1,72 @@ + +# execute run procedure as Python macro for testing + +import uno +import sys +import unittest + +from com.sun.star.awt.FontSlant import ITALIC +from com.sun.star.awt.FontSlant import NONE +from com.sun.star.uno.TypeClass import STRING +from com.sun.star.uno.TypeClass import LONG +from com.sun.star.awt import Point + +class Test124953(unittest.TestCase): + + def test_Enum(self): + italic = uno.Enum("com.sun.star.awt.FontSlant", "ITALIC") + none_ = uno.Enum("com.sun.star.awt.FontSlant", "NONE") + self.assertEqual(ITALIC, ITALIC) + self.assertEqual(ITALIC, italic) + self.assertFalse((ITALIC != italic)) + self.assertNotEqual(ITALIC, NONE) + self.assertEqual(NONE, none_) + + def test_Type(self): + + STRING_TYPE = uno.getTypeByName("string") + LONG_TYPE = uno.getTypeByName("long") + string_type = uno.Type("string", STRING) + long_type = uno.Type("long", LONG) + self.assertEqual(STRING_TYPE, STRING_TYPE) + self.assertEqual(STRING_TYPE, string_type) + self.assertFalse((STRING_TYPE != string_type)) + self.assertNotEqual(STRING_TYPE, LONG) + self.assertEqual(LONG_TYPE, long_type) + + def test_Char(self): + if sys.version_info[0] == 3: + char_a = uno.Char("a") + char_a2 = uno.Char("a") + char_b = uno.Char("b") + else: + char_a = uno.Char(u"a") + char_a2 = uno.Char(u"a") + char_b = uno.Char(u"b") + self.assertEqual(char_a, char_a) + self.assertEqual(char_a, char_a2) + self.assertFalse((char_a != char_a2)) + self.assertNotEqual(char_a, char_b) + + def test_ByteSequence(self): + if sys.version_info[0] == 3: + b1 = uno.ByteSequence(bytes("abcdefg", encoding="utf8")) + b2 = uno.ByteSequence(bytes("abcdefg", encoding="utf8")) + b3 = uno.ByteSequence(bytes("1234567", encoding="utf8")) + else: + b1 = uno.ByteSequence("abcdefg") + b2 = uno.ByteSequence("abcdefg") + b3 = uno.ByteSequence("1234567") + self.assertEqual(b1, b1) + self.assertEqual(b1, b2) + self.assertFalse(b1 != b2) + self.assertNotEqual(b1, b3) + + def test_Struct(self): + point1 = Point(100, 200) + point2 = Point(100, 200) + point3 = Point(0, 10) + self.assertEqual(point1, point1) + self.assertEqual(point1, point2) + self.assertFalse((point1 != point2)) + self.assertNotEqual(point1, point3) diff --git a/pyuno/source/module/pyuno_except.cxx b/pyuno/source/module/pyuno_except.cxx index 0d627dd2566e..ebe00ac6811b 100644 --- a/pyuno/source/module/pyuno_except.cxx +++ b/pyuno/source/module/pyuno_except.cxx @@ -162,6 +162,7 @@ static PyRef createClass( const OUString & name, const Runtime &runtime ) PyRef getter = getObjectFromUnoModule( runtime,"_uno_struct__getattr__" ); PyRef repr = getObjectFromUnoModule( runtime,"_uno_struct__repr__" ); PyRef eq = getObjectFromUnoModule( runtime,"_uno_struct__eq__" ); + PyRef ne = getObjectFromUnoModule( runtime,"_uno_struct__ne__" ); PyObject_SetAttrString( ret.get(), "__pyunostruct__", @@ -181,6 +182,8 @@ static PyRef createClass( const OUString & name, const Runtime &runtime ) ret.get(), "__str__", repr.get() ); PyObject_SetAttrString( ret.get(), "__eq__", eq.get() ); + PyObject_SetAttrString( + ret.get(), "__ne__", ne.get() ); } return ret; } diff --git a/pyuno/source/module/uno.py b/pyuno/source/module/uno.py index bccf22d0f8ac..6d671e620f21 100644 --- a/pyuno/source/module/uno.py +++ b/pyuno/source/module/uno.py @@ -170,6 +170,9 @@ class Enum: return (self.typeName == that.typeName) and (self.value == that.value) + def __ne__(self,other): + return not self.__eq__(other) + class Type: """Represents a UNO type. @@ -194,6 +197,9 @@ class Type: return self.typeClass == that.typeClass and self.typeName == that.typeName + def __ne__(self,other): + return not self.__eq__(other) + def __hash__(self): return self.typeName.__hash__() @@ -259,6 +265,9 @@ class Char: return False + def __ne__(self,other): + return not self.__eq__(other) + class ByteSequence: """Represents a UNO ByteSequence value. @@ -527,6 +536,8 @@ def _uno_struct__str__(self): return str(self.__dict__["value"]) +def _uno_struct__ne__(self, other): + return not self.__eq__(other) def _uno_struct__eq__(self, that): """Compares two UNO structs. -- cgit